視頻監(jiān)控管理平臺軟件開發(fā)的幾點啟示(上)
在開發(fā)和設(shè)計安防監(jiān)控平臺的早期,就要選擇和確定平臺的一些基礎(chǔ)架構(gòu)。是一個集中式的系統(tǒng)?還是分布式系統(tǒng)?是只在Windows上開發(fā)?還是要支持Linux?本文不討論集中式系統(tǒng)和分布式系統(tǒng)、Windows和Linux熟優(yōu)熟劣。但在長期的實踐中,可以認(rèn)識到,基于Linux服務(wù)器的分布式系統(tǒng)是一個能滿足安防越來越大的聯(lián)網(wǎng)規(guī)模、越來越多的異質(zhì)設(shè)備接入等復(fù)雜需求的系統(tǒng)。最終根據(jù)用戶需求,將系統(tǒng)架構(gòu)確定為可以支持不同操作系統(tǒng)和硬件的分布式局部自治系統(tǒng)。
具備局部自治功能的分布式系統(tǒng)中,每個局部都是一個獨立的子系統(tǒng),其使用和穩(wěn)定性不受其它子系統(tǒng)的約束和影響,同時這個子系統(tǒng)又能以合適的組網(wǎng)方式聯(lián)結(jié)到上級系統(tǒng),這樣就形成了一個更大規(guī)模的系統(tǒng)。其實,這里面的原理跟互聯(lián)網(wǎng)是類似的,因此就提出了“構(gòu)筑視頻互聯(lián)網(wǎng)” 的觀點。
互聯(lián)網(wǎng)的一個重要基礎(chǔ)是TCP/IP協(xié)議簇,類似的,在構(gòu)筑視頻互聯(lián)網(wǎng)時,也是需要聯(lián)網(wǎng)協(xié)議的。在平臺軟件的聯(lián)網(wǎng)協(xié)議中,一個基本的概念是干線,干線和干線管理是平臺軟件重要的內(nèi)容之一,也是平臺軟件區(qū)別于其它的視頻監(jiān)控平臺的特色內(nèi)容之一。
干線有模擬干線和數(shù)字干線之分,模擬干線是節(jié)點與節(jié)點之間的視頻連接線,數(shù)字干線是視頻服務(wù)器之間建立聯(lián)系的數(shù)字通道。通過干線,若干臺PVG可以建立各種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),為多級數(shù)字聯(lián)網(wǎng)、網(wǎng)安全和網(wǎng)絡(luò)帶寬管理提供了有力的保障。
干線管理的內(nèi)容有:干線路由選擇、復(fù)用、搶占及搶占后處理和預(yù)留。干線路由選擇是指在一個節(jié)點上調(diào)用其它節(jié)點的某路圖像的時候,系統(tǒng)將采用什么樣的算法來選擇最應(yīng)該經(jīng)過哪些節(jié)點以及哪些干線。干線的復(fù)用是指在多個用戶在調(diào)用同一個攝像機時,后面的用戶應(yīng)該復(fù)用已經(jīng)使用過的干線,而不應(yīng)該另外再使用一條新的干線。干線的搶占是指當(dāng)所有的干線都有用戶在使用時,系統(tǒng)將采用什么樣的算法來搶占新的干線,搶占后處理是指搶占后要友好地通知以前占用該干線的所有用戶。干線的預(yù)留是指某些干線在配置的時候就專門預(yù)留給某些節(jié)點,只有這些節(jié)點上的用戶才能使用預(yù)留的干線。預(yù)留干線一般應(yīng)用在特定的場合。
分層軟件設(shè)計技術(shù):從組件到服務(wù)
在一套大型軟件的生命過程中,必然會有新需求不斷地涌現(xiàn)。有的需求會對原系統(tǒng)的沖擊非常大,甚至導(dǎo)致系統(tǒng)的一些關(guān)鍵代碼重新開發(fā)。如何面對這些大型軟件設(shè)計和開發(fā)過程的通用難題,始終是系統(tǒng)設(shè)計的重點和難點。
為了解決這些問題,在系統(tǒng)的設(shè)計中,采用了軟件分層設(shè)計策略,并且逐步從組件化過渡到服務(wù)化。
主要的軟件層有:
· 基礎(chǔ)庫層:解決跨平臺及一些基本的與具體應(yīng)用無關(guān)的軟件問題;
· 網(wǎng)絡(luò)通信層:解決異質(zhì)網(wǎng)絡(luò)、異質(zhì)協(xié)議聯(lián)網(wǎng)問題;
· 數(shù)據(jù)層:解決軟件配置,持久化問題;
· 業(yè)務(wù)組件層:與業(yè)務(wù)和具體接入設(shè)備相關(guān)的功能組件,組件數(shù)量越來越多;
· SDK層:提供服務(wù)和接口給應(yīng)用程序、做二次開發(fā);
· 綜合應(yīng)用層:綜合應(yīng)用和功能界面。
POSA(Pluggable Objects and Services Architecture)正是基于這樣的理念設(shè)計的一套軟件架構(gòu)。在POSA架構(gòu)的世界里,一切易變的、需要進(jìn)化的軟件主要是組件。新需求、新設(shè)備的接入都體現(xiàn)為實現(xiàn)一個或一組新的組件,使用POSA組件技術(shù),PVG做到了新需求的加入對開發(fā)人員僅僅是相加的關(guān)系。
由于組件和它們上下軟件層之間的二進(jìn)制耦合太緊密,一個組件的崩潰會引發(fā)整個系統(tǒng)的崩潰,導(dǎo)致整個系統(tǒng)的穩(wěn)定性下降。解決這個問題有兩個辦法,一是手動地把不穩(wěn)定的組件隔離出來,專門為這類組件另外開一個進(jìn)程,另外一個辦法是自動隔離每一個組件,一切以服務(wù)為中心,用服務(wù)代替組件,這也是軟件界流行的SOA的理念。在POSA架構(gòu)下,開發(fā)軟件變得更簡單,各個服務(wù)之間使用標(biāo)準(zhǔn)的松耦合通信協(xié)議進(jìn)行通信,徹底解決了二進(jìn)制耦合問題,全系統(tǒng)穩(wěn)定性也不會隨著業(yè)務(wù)的增加變成乘法關(guān)系,由于相同服務(wù)可用分布式多重部署,全系統(tǒng)可用性完全不會隨著系統(tǒng)的復(fù)雜性而有所下降。在POSA里,提供了一種標(biāo)準(zhǔn)的描述服務(wù)間通信契約的方式,統(tǒng)一按照此契約編寫通信程序。同時,為了提高開發(fā)效率,POSA提供了一些自動工具來搭建服務(wù)程序的框架代碼。
POSA的組件服務(wù)化技術(shù),為未來搭建云存儲、云計算平臺提供了堅實的基礎(chǔ)。使用POSA,“視頻互聯(lián)網(wǎng)”、“連接城市中一切可管理的對象”等設(shè)想變得清晰起來,不少廠家把這些理想變?yōu)楝F(xiàn)實。
完善的開發(fā)管理流程
好的結(jié)果跟好的過程是分不開的,要開發(fā)出好的平臺軟件產(chǎn)品,需要有完善的開發(fā)管理流程。筆者總結(jié)了以下幾要點:
· 引入適合每個小組的敏捷軟件開發(fā)流程;
· 處方式應(yīng)用文檔化的流程;
· 主管負(fù)責(zé)的參與民主制;
· 合理的信息系統(tǒng)支撐。
為了滿足用戶需求,適應(yīng)針對市場的快速反應(yīng),我們開發(fā)團(tuán)隊中的各個小組基本都采用了迭代式的敏捷軟件開發(fā)方法。
處方式應(yīng)用文檔化的流程是指針對于不同的開發(fā)小組、不同的項目、不同的階段,需要使用不同的文檔化的流程,就像醫(yī)生開處方,需要因人而異、因時而異。
主管負(fù)責(zé)的參與民主制是指在開發(fā)過程中,小組主管需要在跟開發(fā)人員溝通的過程中,要善于且敢于做出相應(yīng)的決定,需要做決定的時候不要拖延和推遲。
所有這些基于流程的開發(fā)工作,都需要合理的信息系統(tǒng)來支撐。
評論