直播技術:從性能參數到業務大數據,淺談直播CDN服務監控


線上服務的有效監控和數據收集,一直是后端服務離不開的話題。直播作為一種經典的分布式系統,監控以及數據收集更是必不可少的工作。如何對海量的服務集群有效的監控和保活,又如何抓取集群中的碎片數據中來優化服務?網易雲信音視頻研發工程師將和大家共同探討。

 

推薦閱讀

視頻私有雲實戰:基於Docker構建點播私有雲平台

高清音質背后:網易雲信音樂教學方案技術解密

 

機器站在巨人的肩膀上用着輪子

作為分布式集群,物理層上的最小單位自然是機器。對於一台機器而言,常規性能指標自然就是CPU、內存、網卡的使用情況。這些性能有很多方式去獲取,而視頻雲采用的是網易的哨兵系統。哨兵系統是網易的監控系統,提供了非常詳細和即時的性能指標。

借由哨兵這個強大的輪子,我們能非常方便的在機器級別上,做出有效的監控。例如當網卡流量或者cpu異常的時候,可以快速的報警采取處理。當然,不光光可以監控機器是否能正常運行,也可以監控是否被惡意攻擊,這個暫且不談。

 

性能指標與業務融合

當然,只有機器級的數據,是遠遠不夠的。俗話說,不與業務貼合的數據,不是好數據。作為直播CDN服務,最常規的參數,自然是音視頻碼率和延遲。

細心的看官們可能發現了幾個比較特殊的統計。

為什么統計了總碼率也統計了音視頻單獨的碼率?

這是因為在真實的場景中,總碼率並不一定能還原出我們需要的場景,有很多情況會需要單獨的分析音視頻碼率,例如用戶主動關閉了視頻輸出或者機器采樣性能不足導致的視頻卡頓,這個時候只需要配合幀率的統計,就可以快速還原場景。當然,視頻碼率本身也不是一個固定的數值。視頻雲也針對弱網提供QoS(即可變碼率)的功能。

推送延遲push_delay是什么?

推送延遲,是一個衡量C/S之間網絡情況的參數。當這個參數發生波動的時候,則說明C端的包到達S的時間比預計要長。能夠反映出網絡的抖動情況。如果計算這個數值呢?簡單來說,是使用了RTMP包頭部的時間戳。如果非要用一個公式解釋一下,我覺得應該是:

Delay=abs( (當前RTMP包的到達時間-上個RTMP包的到達時間) – (當前RTMP包的時間戳–上個RTMP包的時間戳) )

計算每個包到達服務器所消耗時間的差異值,用於代表網絡的抖動。當然,還需要做其他很多事情,例如加權和jitter算法來減少誤差和避免。

為什么還有send_kbps?

其實這也挺好理解,因為CDN本身是分布式系統,在節點和節點間需要做路徑選擇,然后從節點到節點傳輸,從而實現加速。Send_kbps其實就是前一個節點向后一個節點的發送碼率。那么這就涉及到了一個問題,如果去trace某一條流的數據呢?對於每一條流,我們會給予一個唯一的標記,在節點間傳遞的時候,我們會給流添加一個自增的標記Hops。

通過這個標記,可以精准的找到這條流在節點件的走向,從而把各個節點的數據聚合在一起

其他,我們還會抓取一些類似源IP,用戶設備等客戶端的信息。這些信息能幫忙我們走進大數據時代。

 

整體數據服務的架構

分布式系統中,每一個節點都會產生大量的統計和性能數據。所以在視頻雲,有一個完整的統計架構來作出支持。從最前端的數據采集、傳輸,到匯總,然后到計算集群,最后輸出。每一個服務都各司其職。讓我們來看看整體架構。

對於每一個區域,會有一個數據匯聚的服務器,負責從流媒體服務器收集數據。最初的元數據,經過數據匯聚服務器匯總、過濾和壓縮以后。統一上報到中心集群中的統計服務器。統計服務器會將所有的統計數據,逐一落庫,儲存在數據倉庫中。其余的數據計算集群,會從數據倉庫中定時進行讀取計算。具體的計算間隔,會根據業務類型不同而不同。例如運維平台會主要讀取一些機器級別的數據,進行分析和報警。大數據計算集群則會對數據進行計算,得出優化方向,此處我們稍后再聊。業務數據展示平台則是會實時的輸出數據(例如碼率和延遲),用於提供給用戶和技術支持查詢。當然,還有其他各種各樣的數據處理服務,這里就不再一一介紹。

 

數據能做的一些事情

最后,我們聊一聊數據。在這個大數據時代,有了數據卻不做事情,等同於浪費。那么,有了這些數據以后,我們做了什么事情呢?當然,最顯而易見的,就是調整調度策略,增設布點。例如,上圖的大數據的運算結果,南京電信的網絡權重比較差,這就說明南京電信地區需要進行排查。而南京移動的用戶量較大,也說明南京地區應該增設服務點。

此外,數據和性能指標的上報,也會被用於均衡負載調度。例如某一個節點壓力較大的時候,或者性能不穩定的時候,這個節點的調度優先級就會被降低(即不太會被優先分配給用戶)。

以上就是我對於直播CDN服務監控的一些看法,但是直播CDN服務監控和數據收集是一個值得無止境討論和優化的事情,歡迎大家留言與我探討。

想要獲取更多產品干貨、技術干貨,歡迎關注網易雲信博客

 

 

網易雲信(NeteaseYunXin)是集網易18年IM以及音視頻技術打造的PaaS服務產品,來自網易核心技術架構的通信與視頻雲服務,穩定易用且功能全面,致力於提供全球領先的技術能力和場景化解決方案。開發者通過集成客戶端SDK和雲端OPEN API,即可快速實現包含IM、音視頻通話、直播、點播、互動白板、短信等功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM