視頻管理軟件技術(shù)分析報(bào)告(四)--基于SOA的VMS軟件架構(gòu)設(shè)計(jì)

1. 設(shè)計(jì)原則

??VMS系統(tǒng)的開放性和擴(kuò)展性特性非常適合使用SOA(面向服務(wù)的架構(gòu))方法來(lái)進(jìn)行設(shè)計(jì)地技。
??服務(wù)作為物理上獨(dú)立無(wú)關(guān)的軟件程序而存在绸狐,每個(gè)服務(wù)被賦予其自身獨(dú)特的功能上下文環(huán)境,并由一系列與該環(huán)境相關(guān)的能力所組成止潮。服務(wù)提供的能力通過(guò)服務(wù)接口(服務(wù)合約)來(lái)表達(dá)。
??根據(jù)服務(wù)的可復(fù)用性,可編排性激捏,可自治,可組合性等特點(diǎn)凄吏,在設(shè)計(jì)服務(wù)時(shí)宜使用自頂向下的設(shè)計(jì)思路远舅,在設(shè)計(jì)模型時(shí)可先設(shè)計(jì)頂層的服務(wù),確定頂層的服務(wù)邊界后痕钢,再逐層設(shè)計(jì)下層的子服務(wù)图柏。
??在服務(wù)類型上,宜將服務(wù)分為實(shí)體服務(wù)任连,任務(wù)服務(wù)蚤吹,工具服務(wù)三種類型 。
??VMS中涉及到媒體随抠、元數(shù)據(jù)裁着、系統(tǒng)管理數(shù)據(jù)(用戶,權(quán)限)等實(shí)體的服務(wù)可歸類為實(shí)體服務(wù)拱她;媒體會(huì)話二驰,任務(wù)調(diào)度之類與控制器相關(guān)的服務(wù)可歸類于任務(wù)服務(wù);網(wǎng)絡(luò)傳輸秉沼,安全加密桶雀,日志等基礎(chǔ)服務(wù)可歸類于工具服務(wù)。
??使用實(shí)體服務(wù)氧猬,任務(wù)服務(wù)背犯,工具服務(wù)三種服務(wù)模型可構(gòu)建邏輯服務(wù)抽象層,如圖 1所示盅抚。


圖1

2. VMS的服務(wù)設(shè)計(jì)

??使用SOA進(jìn)行VMS的設(shè)計(jì)應(yīng)首先聚焦于視頻監(jiān)控系統(tǒng)的業(yè)務(wù)漠魏。以視頻數(shù)據(jù)為核心,一個(gè)視頻監(jiān)控系統(tǒng)的基礎(chǔ)結(jié)構(gòu)如圖 2所示:


圖2

??ONVIF作為基于Web service技術(shù)標(biāo)準(zhǔn)制定的安防設(shè)備開放操作接口妄均,囊括了圖 2中包含的所有功能柱锹。其服務(wù)設(shè)計(jì)思想可作為VMS設(shè)計(jì)時(shí)的參考哪自。
??分析一下ONVIF定義的服務(wù),可歸為如下幾類:

  • 設(shè)備管理服務(wù)(包含設(shè)備IO服務(wù)):是ONVIF中定義的核心服務(wù)禁熏,對(duì)設(shè)備進(jìn)行設(shè)備參數(shù)壤巷,設(shè)備狀態(tài)等信息的管理和配置。通過(guò)設(shè)備管理服務(wù)能夠獲取其它服務(wù)的地址瞧毙。
  • 媒體服務(wù):提供對(duì)媒體設(shè)備相關(guān)元數(shù)據(jù)(視頻源胧华、視頻參數(shù)等)的配置查詢功能。使用媒體服務(wù)能夠獲取視頻流的相關(guān)參數(shù)宙彪。
  • 設(shè)備操控服務(wù):ONVIF中主要提供了PTZ服務(wù)矩动,用于完成對(duì)采集攝像設(shè)備的操控。
  • 錄像服務(wù):主要包括錄像控制和錄像查詢服務(wù)释漆。
  • 錄像回放服務(wù):主要定義了錄像回放的相關(guān)參數(shù)的查詢與配置悲没。
  • 門禁服務(wù):定義了門禁控制的相關(guān)操作。
  • 視頻分析服務(wù):定義了視頻分析的基礎(chǔ)模型與相關(guān)服務(wù)接口男图。
  • 流服務(wù):定義視音頻媒體示姿、元數(shù)據(jù)流的控制協(xié)議,傳輸協(xié)議和交換方式逊笆。
    ??參考圖 2與ONVIF的服務(wù)模型栈戳,遵循第1節(jié)介紹的設(shè)計(jì)原則和思路,以視頻流的流動(dòng)路徑為方向览露,相關(guān)的服務(wù)邊界與互操作關(guān)系可如圖 3所示荧琼。


    圖3

    ??圖 3中,任務(wù)服務(wù)層與實(shí)體服務(wù)層定義的主要服務(wù)描述如下:

  • 設(shè)備接入(發(fā)現(xiàn)與注冊(cè)):實(shí)現(xiàn)物理設(shè)備的發(fā)現(xiàn)與注冊(cè)差牛,使用與物理設(shè)備兼容的協(xié)議(方式)實(shí)現(xiàn)與物理設(shè)備的直接互聯(lián),是物理設(shè)備的實(shí)際操作者堰乔。
  • 設(shè)備管理:實(shí)現(xiàn)設(shè)備參數(shù)及其它系統(tǒng)數(shù)據(jù)的配置和查詢偏化,與設(shè)備接入服務(wù)是雙向互操作的關(guān)系。
  • 媒體配置:用于實(shí)現(xiàn)對(duì)于媒體設(shè)備(如攝像機(jī)與DVR)的媒體相關(guān)參數(shù)的配置與查詢镐侯,與設(shè)備管理服務(wù)是雙向互操作關(guān)系侦讨。
  • 實(shí)時(shí)媒體流會(huì)話控制:實(shí)現(xiàn)與媒體設(shè)備的媒體會(huì)話控制,獲取媒體設(shè)備的實(shí)時(shí)媒體流數(shù)據(jù)并實(shí)現(xiàn)分發(fā)苟翻。媒體流會(huì)話控制服務(wù)在使用時(shí)會(huì)調(diào)用媒體配置和設(shè)備管理服務(wù)以獲取相關(guān)參數(shù)韵卤。
  • 錄像:實(shí)現(xiàn)根據(jù)媒體流進(jìn)行錄像的功能。錄像服務(wù)可根據(jù)錄像計(jì)劃進(jìn)行錄像崇猫,也可根據(jù)用戶操作進(jìn)行隨機(jī)錄像沈条,同時(shí)錄像服務(wù)也提供錄像查詢功能。錄像服務(wù)需要調(diào)用媒體配置和設(shè)備管理服務(wù)獲取相關(guān)參數(shù)诅炉,調(diào)用媒體流會(huì)話控制服務(wù)獲取媒體流蜡歹。
  • 實(shí)時(shí)流瀏覽:提供實(shí)時(shí)監(jiān)控功能屋厘,需要調(diào)用媒體流會(huì)話控制服務(wù)獲取實(shí)時(shí)媒體流。
  • 錄像回放:錄像回放服務(wù)可調(diào)用錄像服務(wù)查詢錄像信息月而,并直接訪問(wèn)錄像存儲(chǔ)介質(zhì)獲取待回放的錄像數(shù)據(jù)汗洒。
  • PTZ控制:PTZ控制服務(wù)調(diào)用設(shè)備管理服務(wù)(通過(guò)設(shè)備接入服務(wù))向監(jiān)控設(shè)備發(fā)送PTZ指令實(shí)現(xiàn)用戶的PTZ控制。
  • 門禁控制:門禁控制調(diào)用設(shè)備管理服務(wù)(通過(guò)設(shè)備接入服務(wù))向門徑設(shè)備發(fā)送門禁控制指令實(shí)現(xiàn)用戶對(duì)門禁的控制父款。
  • 視頻分析:視頻分析服務(wù)實(shí)現(xiàn)對(duì)實(shí)時(shí)媒體流會(huì)話控制服務(wù)和錄像服務(wù)的調(diào)用溢谤,采集實(shí)時(shí)流或錄像數(shù)據(jù)進(jìn)行視頻分析。
    ??圖 4顯示了服務(wù)架構(gòu)中視頻流的流向以及服務(wù)與物理設(shè)備的關(guān)聯(lián)關(guān)系憨攒,其中帶紅色箭頭的粗線表示視頻流溯香,藍(lán)色虛線表示與物理設(shè)備的關(guān)聯(lián)關(guān)系。


    圖4

    ??圖 4中浓恶,設(shè)備接入服務(wù)與接入的物理設(shè)備直接打交道玫坛,使用物理設(shè)備所提供的傳輸交換協(xié)議。鑒于物理設(shè)備接入?yún)f(xié)議的多樣化(如SNMP包晰,SIP,SOAP等)湿镀,建議對(duì)于不同的接入?yún)f(xié)議定義不同的子接入服務(wù),設(shè)備接入服務(wù)可根據(jù)設(shè)備可接入的類型確定所調(diào)用的子接入服務(wù)實(shí)例伐憾。
    ??同設(shè)備接入服務(wù)一樣勉痴,實(shí)時(shí)媒體流會(huì)話控制服務(wù)與請(qǐng)求媒體流的物理設(shè)備通過(guò)物理設(shè)備支持的媒體會(huì)話協(xié)議進(jìn)行交互。不同的設(shè)備支持的媒體會(huì)話協(xié)議可能不同(如SIP,RTSP等)树肃,建議對(duì)于不同的媒體會(huì)話協(xié)議定義不同的子會(huì)話控制服務(wù)蒸矛, 實(shí)時(shí)媒體流會(huì)話控制服務(wù)根據(jù)請(qǐng)求設(shè)備支持的媒體會(huì)話協(xié)議選擇該調(diào)用的子會(huì)話控制服務(wù)。
    ??VMS服務(wù)架構(gòu)中服務(wù)之間的互操作可使用服務(wù)操作原語(yǔ)來(lái)定義胸嘴,如第3節(jié)所描述雏掠。

3. 服務(wù)操作原語(yǔ)

??VMS中,將視頻流劣像,錄像乡话,設(shè)備參數(shù),設(shè)備等視為不同的邏輯實(shí)體對(duì)象耳奕,系統(tǒng)功能即可視為對(duì)這些實(shí)體對(duì)象的操作绑青。借鑒在電信管理網(wǎng)中使用的CMIP (Common Management Information Protocol,通用管理信息協(xié)議)所支持的CMIS服務(wù)屋群,我們可在VMS中定義六種抽象出來(lái)的服務(wù)操作原語(yǔ):

  • VM-CREATE:創(chuàng)建相關(guān)的邏輯實(shí)體對(duì)象闸婴,如視頻流,媒體配置實(shí)體芍躏,安全邏輯實(shí)體(如keystore)邪乍,網(wǎng)絡(luò)接口,錄像文件等對(duì)象。
  • VM-CREATE:刪除已經(jīng)創(chuàng)建的邏輯實(shí)體對(duì)象溺欧,如視頻流喊熟,媒體配置實(shí)體,安全邏輯實(shí)體(如keystore)等對(duì)象姐刁。
  • VM-GET:獲取邏輯實(shí)體對(duì)象的相關(guān)參數(shù)與屬性芥牌。
  • VM-SET:設(shè)置邏輯實(shí)體對(duì)象的相關(guān)參數(shù)與屬性。
  • VM-ACTION:執(zhí)行邏輯實(shí)體對(duì)象可執(zhí)行的一個(gè)動(dòng)作聂使,如進(jìn)行媒體會(huì)話壁拉,進(jìn)行解碼動(dòng)作等。
  • VM-EVENT-REPORT:服務(wù)實(shí)例在運(yùn)行過(guò)程中發(fā)送被觸發(fā)的事件消息柏靶。

4. 實(shí)施策略

??自martin fowler發(fā)表了那篇著名的微服務(wù)博客文章之后弃理,微服務(wù)架構(gòu)在近幾年間在軟件界著實(shí)火了一把,在國(guó)內(nèi)軟件界似乎出現(xiàn)了一種不談微服務(wù)的軟件架構(gòu)設(shè)計(jì)就不夠高大上的現(xiàn)象屎蜓。其實(shí)仔細(xì)剖析微服務(wù)的模式痘昌,我個(gè)人更認(rèn)為微服務(wù)是SOA在實(shí)現(xiàn)層次的細(xì)化和擴(kuò)充。微服務(wù)在分解服務(wù)為更細(xì)粒度時(shí)炬转,同時(shí)也為分解的服務(wù)間關(guān)系帶來(lái)更多的復(fù)雜性辆苔。因此在使用面向服務(wù)的思路來(lái)實(shí)施VMS時(shí)也要根據(jù)實(shí)際場(chǎng)景和規(guī)模來(lái)選擇合適的方案。

4.1 服務(wù)要多大

??在前面的軟件架構(gòu)中扼劈,設(shè)備接入驻啤,實(shí)時(shí)媒體流會(huì)話控制服務(wù),錄像服務(wù)這三個(gè)系統(tǒng)中的核心服務(wù)在部署上荐吵,每個(gè)服務(wù)建議設(shè)計(jì)為服務(wù)集群(最簡(jiǎn)單的方式是在一堆服務(wù)實(shí)例前加一個(gè)負(fù)載均衡器)骑冗,可根據(jù)項(xiàng)目的實(shí)際規(guī)模進(jìn)行配置伸縮。

4.2 數(shù)據(jù)如何存儲(chǔ)

??VMS中先煎,我將數(shù)據(jù)分為控制面數(shù)據(jù)與媒體數(shù)據(jù)贼涩,視頻流這些媒體數(shù)據(jù)在規(guī)模大時(shí)可考慮選型如HDFS這樣的開源分布式存儲(chǔ)系統(tǒng),在規(guī)模小時(shí)可使用單獨(dú)的磁陣即可榨婆。
??對(duì)于控制面的數(shù)據(jù)磁携,如設(shè)備信息,媒體配置信息等數(shù)據(jù)良风,由于會(huì)被多個(gè)服務(wù)實(shí)例訪問(wèn),可考慮使用ElasticSearch, etcd這樣分布式協(xié)同系統(tǒng)闷供。

4.3 服務(wù)原語(yǔ)的實(shí)現(xiàn)形式

??VMS中烟央,我建議服務(wù)原語(yǔ)以Rest Api的形式定義,這樣在服務(wù)實(shí)例之間基于HTTP的restful接口就可實(shí)現(xiàn)服務(wù)原語(yǔ)在服務(wù)間的互操作(比如使用spring cloud作為服務(wù)實(shí)現(xiàn)框架)歪脏。

4.4 如何選擇消息服務(wù)器

??同樣疑俭,消息服務(wù)器根據(jù)項(xiàng)目的規(guī)模來(lái)確定,在系統(tǒng)規(guī)模較小的場(chǎng)景下婿失,使用輕量級(jí)的消息服務(wù)器(如使用redis就可以)钞艇,系統(tǒng)規(guī)模較大的場(chǎng)景下啄寡,可以考慮kafka這樣的消息集群服務(wù)。

4.5 如何選擇流媒體中間件

??VMS中涉及到RTSP,SDP哩照,SIP挺物,RTP/RTCP等多種流媒體相關(guān)協(xié)議,幸運(yùn)的是飘弧,現(xiàn)在github上各種語(yǔ)言的流媒體中間件都可以找到识藤,如果實(shí)在要我推薦,在我用過(guò)的產(chǎn)品中次伶,我覺(jué)得gstreamer就很好痴昧。

4.6 基于Web的視頻瀏覽

??傳統(tǒng)的VMS中,在瀏覽器中對(duì)視頻進(jìn)行瀏覽需要借助自己編寫的控件冠王,隨著WebRTC技術(shù)的出現(xiàn)赶撰,主流瀏覽器已經(jīng)逐步支持WebRTC的規(guī)范,因而使用WebRTC實(shí)現(xiàn)免插件的視頻瀏覽成為可能柱彻。需要注意豪娜,目前瀏覽器的支持視頻編碼格式有限,在服務(wù)端可能要轉(zhuǎn)碼绒疗,另外也需要構(gòu)建WebRTC的服務(wù)端作為視頻源侵歇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吓蘑,隨后出現(xiàn)的幾起案子惕虑,更是在濱河造成了極大的恐慌,老刑警劉巖磨镶,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溃蔫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡琳猫,警方通過(guò)查閱死者的電腦和手機(jī)伟叛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脐嫂,“玉大人统刮,你說(shuō)我怎么就攤上這事≌饲В” “怎么了侥蒙?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)匀奏。 經(jīng)常有香客問(wèn)我鞭衩,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任论衍,我火速辦了婚禮瑞佩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坯台。我一直安慰自己炬丸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布捂人。 她就那樣靜靜地躺著御雕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪滥搭。 梳的紋絲不亂的頭發(fā)上酸纲,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音瑟匆,去河邊找鬼闽坡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛愁溜,可吹牛的內(nèi)容都是我干的疾嗅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冕象,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼代承!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起渐扮,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤论悴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后墓律,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膀估,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年耻讽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了察纯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡针肥,死狀恐怖饼记,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慰枕,我是刑警寧澤握恳,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站捺僻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜匕坯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一束昵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧葛峻,春花似錦锹雏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至采记,卻和暖如春佣耐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唧龄。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工兼砖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人既棺。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓讽挟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親丸冕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耽梅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容