溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

視頻管理軟件技術分析報告(四)--基于SOA的VMS軟件架構設計

發(fā)布時間:2020-07-11 01:54:28 來源:網(wǎng)絡 閱讀:565 作者:簡單是美美 欄目:軟件技術

1. 設計原則

??VMS系統(tǒng)的開放性和擴展性特性非常適合使用SOA(面向服務的架構)方法來進行設計。
??服務作為物理上獨立無關的軟件程序而存在,每個服務被賦予其自身獨特的功能上下文環(huán)境,并由一系列與該環(huán)境相關的能力所組成。服務提供的能力通過服務接口(服務合約)來表達。
??根據(jù)服務的可復用性,可編排性,可自治,可組合性等特點,在設計服務時宜使用自頂向下的設計思路,在設計模型時可先設計頂層的服務,確定頂層的服務邊界后,再逐層設計下層的子服務。
??在服務類型上,宜將服務分為實體服務,任務服務,工具服務三種類型 。
??VMS中涉及到媒體、元數(shù)據(jù)、系統(tǒng)管理數(shù)據(jù)(用戶,權限)等實體的服務可歸類為實體服務;媒體會話,任務調度之類與控制器相關的服務可歸類于任務服務;網(wǎng)絡傳輸,安全加密,日志等基礎服務可歸類于工具服務。
??使用實體服務,任務服務,工具服務三種服務模型可構建邏輯服務抽象層,如圖 1所示。
視頻管理軟件技術分析報告(四)--基于SOA的VMS軟件架構設計

2. VMS的服務設計

??使用SOA進行VMS的設計應首先聚焦于視頻監(jiān)控系統(tǒng)的業(yè)務。以視頻數(shù)據(jù)為核心,一個視頻監(jiān)控系統(tǒng)的基礎結構如圖 2所示:
視頻管理軟件技術分析報告(四)--基于SOA的VMS軟件架構設計
??ONVIF作為基于Web service技術標準制定的安防設備開放操作接口,囊括了圖 2中包含的所有功能。其服務設計思想可作為VMS設計時的參考。
??分析一下ONVIF定義的服務,可歸為如下幾類:

  • 設備管理服務(包含設備IO服務):是ONVIF中定義的核心服務,對設備進行設備參數(shù),設備狀態(tài)等信息的管理和配置。通過設備管理服務能夠獲取其它服務的地址。
  • 媒體服務:提供對媒體設備相關元數(shù)據(jù)(視頻源、視頻參數(shù)等)的配置查詢功能。使用媒體服務能夠獲取視頻流的相關參數(shù)。
  • 設備操控服務:ONVIF中主要提供了PTZ服務,用于完成對采集攝像設備的操控。
  • 錄像服務:主要包括錄像控制和錄像查詢服務。
  • 錄像回放服務:主要定義了錄像回放的相關參數(shù)的查詢與配置。
  • 門禁服務:定義了門禁控制的相關操作。
  • 視頻分析服務:定義了視頻分析的基礎模型與相關服務接口。
  • 流服務:定義視音頻媒體、元數(shù)據(jù)流的控制協(xié)議,傳輸協(xié)議和交換方式。
    ??參考圖 2與ONVIF的服務模型,遵循第1節(jié)介紹的設計原則和思路,以視頻流的流動路徑為方向,相關的服務邊界與互操作關系可如圖 3所示。
    視頻管理軟件技術分析報告(四)--基于SOA的VMS軟件架構設計
    ??圖 3中,任務服務層與實體服務層定義的主要服務描述如下:
  • 設備接入(發(fā)現(xiàn)與注冊):實現(xiàn)物理設備的發(fā)現(xiàn)與注冊,使用與物理設備兼容的協(xié)議(方式)實現(xiàn)與物理設備的直接互聯(lián),是物理設備的實際操作者。
  • 設備管理:實現(xiàn)設備參數(shù)及其它系統(tǒng)數(shù)據(jù)的配置和查詢,與設備接入服務是雙向互操作的關系。
  • 媒體配置:用于實現(xiàn)對于媒體設備(如攝像機與DVR)的媒體相關參數(shù)的配置與查詢,與設備管理服務是雙向互操作關系。
  • 實時媒體流會話控制:實現(xiàn)與媒體設備的媒體會話控制,獲取媒體設備的實時媒體流數(shù)據(jù)并實現(xiàn)分發(fā)。媒體流會話控制服務在使用時會調用媒體配置和設備管理服務以獲取相關參數(shù)。
  • 錄像:實現(xiàn)根據(jù)媒體流進行錄像的功能。錄像服務可根據(jù)錄像計劃進行錄像,也可根據(jù)用戶操作進行隨機錄像,同時錄像服務也提供錄像查詢功能。錄像服務需要調用媒體配置和設備管理服務獲取相關參數(shù),調用媒體流會話控制服務獲取媒體流。
  • 實時流瀏覽:提供實時監(jiān)控功能,需要調用媒體流會話控制服務獲取實時媒體流。
  • 錄像回放:錄像回放服務可調用錄像服務查詢錄像信息,并直接訪問錄像存儲介質獲取待回放的錄像數(shù)據(jù)。
  • PTZ控制:PTZ控制服務調用設備管理服務(通過設備接入服務)向監(jiān)控設備發(fā)送PTZ指令實現(xiàn)用戶的PTZ控制。
  • 門禁控制:門禁控制調用設備管理服務(通過設備接入服務)向門徑設備發(fā)送門禁控制指令實現(xiàn)用戶對門禁的控制。
  • 視頻分析:視頻分析服務實現(xiàn)對實時媒體流會話控制服務和錄像服務的調用,采集實時流或錄像數(shù)據(jù)進行視頻分析。
    ??圖 4顯示了服務架構中視頻流的流向以及服務與物理設備的關聯(lián)關系,其中帶紅色箭頭的粗線表示視頻流,藍色虛線表示與物理設備的關聯(lián)關系。
    視頻管理軟件技術分析報告(四)--基于SOA的VMS軟件架構設計
    ??圖 4中,設備接入服務與接入的物理設備直接打交道,使用物理設備所提供的傳輸交換協(xié)議。鑒于物理設備接入?yún)f(xié)議的多樣化(如SNMP,SIP,SOAP等),建議對于不同的接入?yún)f(xié)議定義不同的子接入服務,設備接入服務可根據(jù)設備可接入的類型確定所調用的子接入服務實例。
    ??同設備接入服務一樣,實時媒體流會話控制服務與請求媒體流的物理設備通過物理設備支持的媒體會話協(xié)議進行交互。不同的設備支持的媒體會話協(xié)議可能不同(如SIP,RTSP等),建議對于不同的媒體會話協(xié)議定義不同的子會話控制服務, 實時媒體流會話控制服務根據(jù)請求設備支持的媒體會話協(xié)議選擇該調用的子會話控制服務。
    ??VMS服務架構中服務之間的互操作可使用服務操作原語來定義,如第3節(jié)所描述。

    3. 服務操作原語

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

  • VM-CREATE:創(chuàng)建相關的邏輯實體對象,如視頻流,媒體配置實體,安全邏輯實體(如keystore),網(wǎng)絡接口,錄像文件等對象。
  • VM-CREATE:刪除已經(jīng)創(chuàng)建的邏輯實體對象,如視頻流,媒體配置實體,安全邏輯實體(如keystore)等對象。
  • VM-GET:獲取邏輯實體對象的相關參數(shù)與屬性。
  • VM-SET:設置邏輯實體對象的相關參數(shù)與屬性。
  • VM-ACTION:執(zhí)行邏輯實體對象可執(zhí)行的一個動作,如進行媒體會話,進行解碼動作等。
  • VM-EVENT-REPORT:服務實例在運行過程中發(fā)送被觸發(fā)的事件消息。

    4. 實施策略

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

    4.1 服務要多大

    ??在前面的軟件架構中,設備接入,實時媒體流會話控制服務,錄像服務這三個系統(tǒng)中的核心服務在部署上,每個服務建議設計為服務集群(最簡單的方式是在一堆服務實例前加一個負載均衡器),可根據(jù)項目的實際規(guī)模進行配置伸縮。

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

    ??VMS中,我將數(shù)據(jù)分為控制面數(shù)據(jù)與媒體數(shù)據(jù),視頻流這些媒體數(shù)據(jù)在規(guī)模大時可考慮選型如HDFS這樣的開源分布式存儲系統(tǒng),在規(guī)模小時可使用單獨的磁陣即可。
    ??對于控制面的數(shù)據(jù),如設備信息,媒體配置信息等數(shù)據(jù),由于會被多個服務實例訪問,可考慮使用ElasticSearch, etcd這樣分布式協(xié)同系統(tǒng)。

    4.3 服務原語的實現(xiàn)形式

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

    4.4 如何選擇消息服務器

    ??同樣,消息服務器根據(jù)項目的規(guī)模來確定,在系統(tǒng)規(guī)模較小的場景下,使用輕量級的消息服務器(如使用redis就可以),系統(tǒng)規(guī)模較大的場景下,可以考慮kafka這樣的消息集群服務。

    4.5 如何選擇流媒體中間件

    ??VMS中涉及到RTSP,SDP,SIP,RTP/RTCP等多種流媒體相關協(xié)議,幸運的是,現(xiàn)在github上各種語言的流媒體中間件都可以找到,如果實在要我推薦,在我用過的產(chǎn)品中,我覺得gstreamer就很好。

    4.6 基于Web的視頻瀏覽

      傳統(tǒng)的VMS中,在瀏覽器中對視頻進行瀏覽需要借助自己編寫的控件,隨著WebRTC技術的出現(xiàn),主流瀏覽器已經(jīng)逐步支持WebRTC的規(guī)范,因而使用WebRTC實現(xiàn)免插件的視頻瀏覽成為可能。需要注意,目前瀏覽器的支持視頻編碼格式有限,在服務端可能要轉碼,另外也需要構建WebRTC的服務端作為視頻源。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI