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