网易青果后端系统设计窥探(二)
本文作者:網易杭州研究院 · 裴斐
編者按:原文標題為《當軟件搭訕硬件——青果后端系統設計》,創作于2015年,文章分為(一)、(二)兩篇,此為(二)。
云錄像機制
除了視頻直播外,云錄像也是目前智能攝像頭產品的亮點功能。前面章節(青果后端系統設計(一))在講到視頻直播時已經提到,云錄像與直播對設備而言都是相同方式的推流,由后端視頻轉碼服務(NTS)拉取視頻流并合成MP4文件。
青果攝像頭云錄像設計如下圖:
目前青果產品的錄像由攝像頭移動偵測觸發。移動偵測觸發后,攝像頭通知服務器有錄像事件,服務器創建NTS錄像任務,并分別告知攝像頭和NTS視頻流的推、拉流地址,NTS作為一個‘客戶端’拉取視頻流做MP4合成工作,生成的文件存儲NOS并將文件信息回調輕應用服務器,服務器負責記錄錄像數據,在APP獲取錄像信息時提供有效數據。目前服務器提供了時間軸與文件列表兩套錄像接口,供不同場景錄像展現使用。
整個云錄像過程相對清晰,但實現起來問題卻不少。問題根源恰恰在于錄像不在本地而在“云端”。云端錄像在方便用戶操作的同時,由于用戶家庭網絡的不穩定性,在網絡環境不好的情況下,很容易導致設備推送的視頻流數據缺失。這種情況下如果是用戶觀看直播的場景,表現可能就是視頻卡頓,APP可以根據網絡情況反饋用戶相應的提示,但對于后端錄像轉碼服務而言,殘缺的視頻數據很可能造成合成的錄像不準確,其中還要涉及異常文件的甄別、重復錄像的去重等難于解決的問題,最終體現到用戶的錄像也存在殘缺的可能。這個問題可以算是云端錄像的弊端,技術層面目前只能通過異常視頻流處理調優來逐步優化解決。
安全概述
系統介紹到這里,一定有人會問,你們的系統安全么?別人能看到個人私有的攝像頭、圖片、錄像么?后臺人員是不是可以把所有攝像頭看個遍(這點不解釋,說好的有態度有節操!不會看也不能看)。下面對青果服務安全設計做一下概述。
APP安全。APP安全是指只有合法易信用戶才有拉取應用數據和進行具體操作的權限。每次進入輕應用時由APP攜帶加密的易信用戶參數獲取userKey,輕應用服務器調用易信認證任務校驗易信用戶是否合法,如果是合法用戶,則生成具有時效性的userKey返回輕應用。之后輕應用對服務器接口的每次調用都要攜帶userKey供服務器校驗身份。與此同時,每次業務操作接口調用的用戶id也必須與userKey匹配,保證當前易信用戶有權限操作該用戶相關的攝像頭。示意圖如下:
設備安全。設備安全是指攝像頭到服務器接口的調用必須是合法的。輕應用添加攝像頭時,生成隨機串作為密鑰分別下發給服務器和攝像頭,攝像頭連接網絡后的每次服務器調用,必須用約定的算法計算包含防篡改特性的簽名作為訪問憑證,服務端對開放給設備的所有接口調用校驗訪問憑證。只有校驗通過的設備才有權限訪問相應接口。示意圖如下:
其他安全。除了以上說明的APP安全、設備安全外,視頻播放安全、錄像以及圖片文件也涉及用戶隱私,對整個產品十分重要。視頻播放的鏈接采用防盜鏈機制,鏈接本身攜帶防盜參數與時間戳參數,過期或錯誤的參數構成的鏈接對視頻流的拉取會被CDN服務器禁止。錄像、圖片文件存儲在網易云的私有桶,同樣具有防盜以及過期訪問權限限制,確保數據安全。
命令壩設計
這里說的“命令壩”,實際上就是當APP對設備發起頻繁操作時,由服務器攔截一些無謂的重復操作,并將關鍵命令放行。設備畢竟是小設備,試想如果上萬人同時對公共攝像頭進行播放操作,設備一定難于承受。青果攝像頭目前主要有兩種主要場景需要壩來攔截命令。
攝像頭屬性查詢,設置壩:
?
直播、錄像壩:
后面的話
目前整個產品已經走到了公測的狀態。后端系統在保證穩定性的同時,還是有一些問題需要不斷改進,比如殘缺錄像,比如設備異常離線,比如服務器升級退避,比如系統數據運維等。路漫漫其修遠兮,隨著產品用戶量的逐步增大,整個系統一定還有很多需要不斷改進的地方,需要吾輩持續努力。
【上期回顧】
點擊閱讀
青果后端系統設計窺探(含直播方案踩坑往事)
【推薦閱讀】
網易視頻云關鍵技術
視頻云直播:場景、技術及優化
Po校園接入云信,多機位“有毒”直播燃爆LIVE
云信為你的互聯網應用快速接入直播功能
點擊底部閱讀原文,可下載云信直播DEMO
網易云信∣為應用快速接入直播功能
ID:neteaseim ?長按識別,關注精彩
總結
以上是生活随笔為你收集整理的网易青果后端系统设计窥探(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有糖接入云信,实现完整的虚拟社区搭建和运
- 下一篇: 破冰接入云信,打造陌生人游戏社交APP