1. 程式人生 > >直播技術:從效能引數到業務大資料,淺談直播CDN服務監控

直播技術:從效能引數到業務大資料,淺談直播CDN服務監控

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

推薦閱讀

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

作為分散式叢集,物理層上的最小單位自然是機器。對於一臺機器而言,常規效能指標自然就是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、音視訊通話、直播、點播、互動白板、簡訊等功能。