程宏剛 娜 仁
1.2.內(nèi)蒙古廣播電視網(wǎng)絡(luò)集團(tuán)有限公司 內(nèi)蒙古 呼和浩特市 010010
內(nèi)蒙古廣電網(wǎng)絡(luò)在傳播主流輿論和發(fā)展先進(jìn)文化、維護(hù)意識形態(tài)安全和網(wǎng)絡(luò)安全方面承擔(dān)著重要職責(zé),發(fā)揮著重要作用,是黨和政府聲音傳入千家萬戶的主渠道,是滿足人民美好生活需要的主陣地,是黨和政府與人民群眾密切聯(lián)系的重要紐帶。肩負(fù)著社會公益職能,公信力強、覆蓋面廣、用戶群體大。隨著內(nèi)蒙古廣電網(wǎng)絡(luò)用戶數(shù)量不斷上漲,增值性業(yè)務(wù)不斷接入,悅·互動平臺SP、CP 專區(qū)應(yīng)用急劇增多,因此,SP、CP 專區(qū)節(jié)目內(nèi)容安全管控尤為重要。內(nèi)蒙古廣電網(wǎng)絡(luò)集團(tuán)消息安全管控系統(tǒng)具備節(jié)目審核、上下線、緊急關(guān)停的秒級防護(hù)手段,當(dāng)發(fā)生內(nèi)容播出安全事故時,可以第一時間采用最有效的方式解決出現(xiàn)的播出問題。
圖1 悅·互動點播平臺
目前,悅·互動點播平臺共有37個業(yè)務(wù)專區(qū),其中公共文化服務(wù)專區(qū)8 個、自建專區(qū)3 個、合作專區(qū)26個。悅·互動點播平臺正在被打造成為一個集4K 板塊、影視板塊、教育板塊、少兒板塊、老年版塊、娛樂版塊等于一體的多元化、時尚化、智能化、便捷化的互動點播平臺。
悅·互動點播平臺目前采取科學(xué)的安全管控機制和先進(jìn)的技術(shù)管理手段,將合作運營商的節(jié)目內(nèi)容注入到內(nèi)蒙古廣電網(wǎng)絡(luò)媒資庫中,對節(jié)目內(nèi)容進(jìn)行嚴(yán)格審核,審核無問題后上線,對版權(quán)即將到期的節(jié)目或違反播出政策的節(jié)目及時下線。做到可管可控,保障播出安全。
該系統(tǒng)主要由實時消息服務(wù)系統(tǒng)進(jìn)行控制,運維人員發(fā)現(xiàn)故障后,可采用web 后臺管理系統(tǒng),一鍵緊急關(guān)停等:
實現(xiàn)點播內(nèi)容類的一鍵下架,如用戶正在播放該影片,則將直接退出播放器;實現(xiàn)SP APK的一鍵關(guān)停/退出;實現(xiàn)用戶終端分組管控,可依照不同條件進(jìn)行終端分組,同時根據(jù)不同終端分組實現(xiàn)以上功能;提供web后臺管理界面,方便運維人員的操作與管理。
1.2.1 高并發(fā)原則
系統(tǒng)采用服務(wù)無狀態(tài)設(shè)計,有狀態(tài)配置可通過配置中心實現(xiàn)無狀態(tài),以便于后期水平擴展;采用拆分設(shè)計,可依據(jù)系統(tǒng)維度、功能維度、數(shù)據(jù)讀寫維度等進(jìn)行拆分,以提高系統(tǒng)性能和可靠性;采用服務(wù)化架構(gòu),如可為不同的業(yè)務(wù)方提供服務(wù)分組、隔離、限流、黑名單、超時時間、重試機制、服務(wù)路由、故障補償?shù)?,以提高系統(tǒng)服務(wù)的質(zhì)量;系統(tǒng)采用消息隊列實現(xiàn)服務(wù)解耦、異步處理、流量削峰或緩沖等;采用數(shù)據(jù)異構(gòu)或數(shù)據(jù)閉環(huán)的方式,實現(xiàn)數(shù)據(jù)的自我控制,當(dāng)某個模塊出問題時不影響其它模塊。
系統(tǒng)支持多級緩存,如接入層緩存、邏輯層緩存、應(yīng)用層緩存、數(shù)據(jù)分布式緩存等;支持并發(fā)化設(shè)計,如數(shù)據(jù)的并發(fā)獲取等。
1.2.2 高可用原則
系統(tǒng)支持降級,高并發(fā)情況下可保證核心功能穩(wěn)定運行,次要功能可由同步改為異步策略或屏蔽功能;支持限流,可防止惡意請求攻擊或超出系統(tǒng)峰值;支持流量切換,可自動屏蔽故障機器;支持回滾,當(dāng)前發(fā)布版本失敗時,可隨時快速回退到上一個穩(wěn)定版本。
1.2.3 安全可靠性
具備完整的操作權(quán)限管理功能和完善的系統(tǒng)安全機制,能夠?qū)γ總€操作員的每次操作有詳細(xì)的記錄。確保消息發(fā)布的安全與完整性,在系統(tǒng)出現(xiàn)問題時,必須保證系統(tǒng)數(shù)據(jù)的完整、可恢復(fù)以及消息發(fā)布的完整性。
確保系統(tǒng)在運營過程中管理的各種資料的信息安全、系統(tǒng)與其它相關(guān)系統(tǒng)信息交換過程的安全等。
系統(tǒng)必須滿足運營級的可靠性指標(biāo),保證系統(tǒng)7×24 小時的不間斷服務(wù);系統(tǒng)具備平滑升級的能力,在升級過程中,必須保證業(yè)務(wù)不間斷。在升級出錯時,系統(tǒng)可回退處理;具備數(shù)據(jù)監(jiān)控管理機制,可查看并記錄每個消息數(shù)據(jù)的相關(guān)信息。
1.2.4 接口標(biāo)準(zhǔn)性
系統(tǒng)必須提供與第三方系統(tǒng)對接的統(tǒng)一、穩(wěn)定接口,實現(xiàn)統(tǒng)一接口協(xié)議的處理,帶寬等資源占用小。
接口要求具備與各種消息系統(tǒng)的對接能力,能夠適應(yīng)不同消息業(yè)務(wù)的特性和功能,能夠采用統(tǒng)一的模型完成對多類消息業(yè)務(wù)的融合處理,能夠支持多級分區(qū)域管理需求。
接口交互功能與核心業(yè)務(wù)功能分離,實現(xiàn)單獨的接口組件,保證核心業(yè)務(wù)代碼不與接口直接相關(guān)。
如圖2 所示,整個方案主要包括內(nèi)容應(yīng)用、消息管理、消息系統(tǒng)和終端這四大部分組成。其中消息系統(tǒng)為整個系統(tǒng)核心,所有內(nèi)容應(yīng)用指令都通過它進(jìn)行服務(wù)。
圖2
消息管理:消息的生產(chǎn)平臺,可接受第三方平臺(如:BOSS) 和平臺其他業(yè)務(wù)系統(tǒng)(如:AAA 模塊、媒資模塊)的消息同步,負(fù)責(zé)消息用戶組、消息內(nèi)容、消息投遞規(guī)則、消息行為動作等數(shù)據(jù)的生產(chǎn)維護(hù)。
消息投遞平臺:根據(jù)消息投遞規(guī)則,將消息管理平臺生產(chǎn)的消息投遞到消息系統(tǒng)。
消息系統(tǒng):接收消息投遞平臺投遞的消息,提供消息服務(wù)給終端,進(jìn)行應(yīng)用的實現(xiàn)。
終端消息中間件:獲取消息系統(tǒng)推送的消息并做最終的終端呈現(xiàn)。
圖3
2.2.1 建立消息通道
當(dāng)調(diào)用連接過后,會通過網(wǎng)絡(luò)狀態(tài)監(jiān)聽,確認(rèn)有網(wǎng)絡(luò)接入,并且連接成功。連接成功過后,加入可重入的機制,在發(fā)送或者消息時能夠讓系統(tǒng)同時處理,提高處理數(shù)據(jù)的效率。
開放統(tǒng)一接口給外部使用,讓整個收/發(fā)消息都通過可重入隊列執(zhí)行,保證處理消息在子線程,回掉到外部時在主線程。
2.2.2 心跳監(jiān)測
當(dāng)連接創(chuàng)建成功后,將開啟一個輪詢線程,每隔一段時間發(fā)送心跳消息給服務(wù)器端,用以維持長連接。
TCP 協(xié)議為了節(jié)約網(wǎng)絡(luò)流量,在一定時間內(nèi)如果沒有與服務(wù)器通信,會斷開連接。
2.2.3 消息通道重連
當(dāng)消息通道出現(xiàn)與終端或服務(wù)終端的情況時,消息系統(tǒng)會再次發(fā)送重連消息到對應(yīng)系統(tǒng)。
例如終端系統(tǒng),收到重連消息后,則與服務(wù)端再次建立長連接,避免因網(wǎng)絡(luò)等問題出現(xiàn)終端后,無法進(jìn)行控制。
圖4
2.2.4 消息發(fā)送
由消息管理系統(tǒng)首先控制發(fā)布終端、實時/定時、指令類型等;通過消息發(fā)布系統(tǒng),完成待發(fā)送消息的封裝;根據(jù)配置策略,完成消息發(fā)送。
圖5
消息SDK主要負(fù)責(zé)接收及分發(fā)消息,內(nèi)部實現(xiàn)了初始化、建立連接、保持心跳、收發(fā)消息、解密消息等功能。第三方APK直接集成消息SDK,無需關(guān)注消息系統(tǒng)內(nèi)部業(yè)務(wù),即可輕松實現(xiàn)消息的收發(fā),及相關(guān)業(yè)務(wù)。
將消息SDK 通過jar/aar 的方式引入到代碼中。
在應(yīng)用啟動后,對SDK進(jìn)行初始化操作,傳入必要參數(shù),設(shè)置相關(guān)監(jiān)聽函數(shù)。
在相關(guān)監(jiān)聽函數(shù)中,接收消息。
根據(jù)接收到的消息類型,實現(xiàn)對應(yīng)的業(yè)務(wù)邏輯,消息的類型,主要包括普通消息和命令消息。
普通消息,可用于實現(xiàn)活動通知、公告等業(yè)務(wù),用于彈窗展示或用于消息列表展示。
命令消息,可用于實現(xiàn)發(fā)送關(guān)閉APP、媒資下線通知、抓取日志、清理緩存等業(yè)務(wù)。
現(xiàn)需終端程序與消息服務(wù)中間件建立起連接,為了實現(xiàn)客戶端消息的正確接收,客戶端在建立起消息服務(wù)中間件的連接之后,終端信息進(jìn)行上報。具體的交互流程如下:
序號類別備注功能模塊1 2 3 4 5 6 7 8 9 10定義內(nèi)容下架內(nèi)容的搜索異常內(nèi)容緊急下架異常內(nèi)容快速搜索用戶終端異常內(nèi)容播放關(guān)停內(nèi)容關(guān)停異常內(nèi)容關(guān)停后,終端將提示節(jié)目暫時不可用。1. 平臺下架異常內(nèi)容2. 發(fā)送通知3. 終端若正在播放該異常內(nèi)容,收到通知后退出播放并提示節(jié)目不可用。SP 牌照方異常內(nèi)容APK 關(guān)停退出信息提示APK關(guān)停平臺1. 平臺通知APK退出2. 平臺禁用SP 3. 終端SP 認(rèn)證不通過,無法進(jìn)入APK。4. 平臺啟用SP,終端認(rèn)證通過,正常展示。關(guān)停備查對關(guān)停相關(guān)信息的記錄,和對關(guān)停記錄的查詢。系統(tǒng)支持按地區(qū)、IP號段進(jìn)行分組控制。終端分組管理消息發(fā)送管理支持多維度的發(fā)送模式:發(fā)送時間、發(fā)送范圍、消息級別。支持媒資一鍵關(guān)停提醒、普通消息推送等。消息分類管理終端集成消息SDK集成支持launcher對接、SP對接。11平臺對接SP內(nèi)容平臺給對應(yīng)SP發(fā)送內(nèi)容下線指令終端開發(fā)APK,APK 內(nèi)部集成消息SDK,并提供兩個接口:1. 給SP(APK)發(fā)廣播,傳遞消息內(nèi)容。2. 給SP(WEB)提供輪詢接口,SP主動輪詢消息。SP 終端通過平臺同步的下線狀態(tài)更新終端界面,不再展示下線內(nèi)容。
在平臺運營過程中,有時會出現(xiàn)媒資視頻播放卡頓、內(nèi)容非法等情況,需要立即下線媒資節(jié)目,并讓正在播放異常媒資視頻的終端立即停止播放。此時可通過消息引擎為所有終端用戶推送一鍵關(guān)停消息,將需要立即停止播放的媒資視頻的信息推送給終端,終端收到消息后,如若發(fā)現(xiàn)當(dāng)前正在播放異常媒資視頻,則立即強制停止播放。以此實現(xiàn)平臺對終端播放內(nèi)容的實時管控。
APK 關(guān)停功能,由管理平臺設(shè)置消息指令策略,由消息服務(wù)器封裝指令信息發(fā)送至終端,終端系統(tǒng)采用結(jié)束當(dāng)前APK進(jìn)程方式,進(jìn)行關(guān)閉,成功關(guān)閉后,后臺管理系統(tǒng)會同步該APK 的狀態(tài)。
圖6
3.4.1 網(wǎng)絡(luò)安全
網(wǎng)絡(luò)上將從物理上將各個網(wǎng)段進(jìn)行隔離,相互之間不可進(jìn)行訪問,服務(wù)器的管理網(wǎng)絡(luò)、信令交互、與單位內(nèi)部交互、與CP/SP業(yè)務(wù)交互、用戶業(yè)務(wù)交互、用戶視頻流交互都進(jìn)行獨立,且默認(rèn)不開相互訪問;在與用戶業(yè)務(wù)交互、與CP/SP 業(yè)務(wù)交互的網(wǎng)絡(luò)處增設(shè)防火墻,防火墻只開放特定業(yè)務(wù)端口的訪問。
對公網(wǎng)用戶提供服務(wù)的服務(wù)器進(jìn)行單獨部署,從物理網(wǎng)上與內(nèi)網(wǎng)業(yè)務(wù)網(wǎng)段進(jìn)行隔離,后端數(shù)據(jù)庫服務(wù)器、緩存服務(wù)器與內(nèi)網(wǎng)業(yè)務(wù)服務(wù)器共用。
物理布線及服務(wù)器上架過程中將相同業(yè)務(wù)服務(wù)器上架到不同機柜中,從物理上保障及時服務(wù)器A/B 兩路供電都斷掉的情況下仍然有一半服務(wù)器可以正常提供服務(wù)。
3.4.2 系統(tǒng)安全
圖7
系統(tǒng)安全可以從業(yè)務(wù)服務(wù)監(jiān)聽地址、端口、操作系統(tǒng)防火墻、業(yè)務(wù)軟件訪問限制、業(yè)務(wù)管理員密碼多個維度進(jìn)行控制,服務(wù)監(jiān)聽端口只在特定的網(wǎng)絡(luò)上進(jìn)行端口監(jiān)聽,例如數(shù)據(jù)庫服務(wù)、緩存服務(wù)只在服務(wù)器信令交互網(wǎng)絡(luò)上進(jìn)行監(jiān)聽,其他網(wǎng)段將無法探測以及掃描到該服務(wù)端口,只提供本機訪問的服務(wù)只在本機回環(huán)地址上進(jìn)行監(jiān)聽,除本機外的任何主機均無法探測、掃描和訪問該服務(wù),管理用業(yè)務(wù)服務(wù)只在管理網(wǎng)絡(luò)地址上進(jìn)行監(jiān)聽。
系統(tǒng)超級管理員密碼30天定期修改,且由特定人員掌控;普通運維人員使用分配到個人賬號進(jìn)行登錄維護(hù)管理。
業(yè)務(wù)軟件對訪問進(jìn)行限制,例如WEB 服務(wù)將限制部分特定業(yè)務(wù)目錄只允許管理員訪問。
緩存服務(wù)器、數(shù)據(jù)庫服務(wù)器只在服務(wù)器間信令交互網(wǎng)絡(luò)上提供服務(wù)。
中間PHP、HAPROXY 只在本機回環(huán)地址上提供服務(wù)。
系統(tǒng)防火墻只配置特定業(yè)務(wù)端口的開放,數(shù)據(jù)庫服務(wù)器、緩存服務(wù)器將配置只允許業(yè)務(wù)服務(wù)器才可訪問。
3.4.3 防篡改
在現(xiàn)有情況下,對于計算機系統(tǒng)中存儲的數(shù)據(jù),在數(shù)據(jù)被非授權(quán)變更的情況下,不能做到實時的發(fā)現(xiàn)、通知、以及恢復(fù)被變更的數(shù)據(jù)。我集團(tuán)使用了一套安全穩(wěn)定的防篡改監(jiān)控系統(tǒng),在數(shù)據(jù)被非授權(quán)變量的情況下,能實時發(fā)現(xiàn)變更、發(fā)送通知、甚至恢復(fù)被篡改的數(shù)據(jù)。系統(tǒng)分為三個子系統(tǒng):配置中心、監(jiān)聽程序和數(shù)據(jù)源采集。
配置中心用于配置需要監(jiān)控的對象(目錄、文件),對異常變更的恢復(fù)方式,日志上報、報表查看等功能。
監(jiān)聽程序運行在需要監(jiān)控的主機上,每分鐘上報心跳,監(jiān)聽基于系統(tǒng)內(nèi)核inotify 事件、實時發(fā)現(xiàn)被監(jiān)控目標(biāo)的異常更改、執(zhí)行通過配置中心配置對各種監(jiān)控對象的處理方式、如忽略、告警、恢復(fù)等。
數(shù)據(jù)源存儲標(biāo)準(zhǔn)數(shù)據(jù)、用于恢復(fù)被監(jiān)控對象的異常修改。
launcher 應(yīng)用需集成消息SDK。
在CMS 平臺編輯指令消息,編輯接收方(可指定某一用戶或某一設(shè)備進(jìn)行發(fā)送,也可全部發(fā)送),編輯相關(guān)參數(shù)(指定關(guān)閉APP 的包名等),編輯消息發(fā)送時間(可立即發(fā)送、也可定時發(fā)送),編輯完成,發(fā)送消息。
消息SDK接收到消息后,先對消息進(jìn)行解密,將指令消息吐給launcher應(yīng)用。
launcher 應(yīng)用接收消息,對消息進(jìn)行解析,獲取需關(guān)閉APP的包名,關(guān)閉制定包名APP(可發(fā)送廣播由APP 自己關(guān)閉,也可通過包名直接關(guān)閉APP)
圖8
圖9
sp應(yīng)用需集成消息SDK。
在CMS 平臺編輯指令消息,編輯接收方(可指定某一用戶或某一設(shè)備進(jìn)行發(fā)送,也可全部發(fā)送),編輯消息發(fā)送時間(可立即發(fā)送、也可定時發(fā)送),編輯完成,發(fā)送消息。
消息SDK接收到消息后,先對消息進(jìn)行解密,將指令消息吐給launcher應(yīng)用。
sp 應(yīng)用接收消息,對消息進(jìn)行解析,保存數(shù)據(jù),釋放資源,關(guān)閉當(dāng)前應(yīng)用。
目前,內(nèi)蒙古廣電網(wǎng)絡(luò)悅·互動平臺SP、CP 專區(qū)內(nèi)容管控系統(tǒng)正在運行中,隨著數(shù)字技術(shù)的不斷進(jìn)步和內(nèi)容管控要求的不斷嚴(yán)格,內(nèi)容管控系統(tǒng)將繼續(xù)優(yōu)化和完善,做到對節(jié)目內(nèi)容的精準(zhǔn)審核和安全管控,將健康豐富、積極向上、優(yōu)質(zhì)安全的節(jié)目內(nèi)容傳播到千家萬戶,提升全區(qū)用戶的收視品質(zhì)。