基于大數據平臺-實時質量監(jiān)控平臺的架構設計
6 個月前
本文是聲網首席數據架構師何豐狸相,在ArchSummit全球架構師峰會深圳站模捂,分享的內容《質量實時監(jiān)控:全球音視頻實時傳輸的關鍵幀》丑搔。
在全球實時音視頻傳輸過程中疏遏,為了提供QoE質量保障,需要構建一個穩(wěn)定可靠的實時數據監(jiān)測系統(tǒng)目养,從而能夠監(jiān)測每一次通話俩由。聲網是全球首個使用大數據平臺做監(jiān)控和實時保障的通信技術服務商。聲網的實時數據監(jiān)控系統(tǒng)癌蚁,覆蓋了實時通話的全鏈路幻梯,包括端到端傳輸、用戶體驗監(jiān)控努释,并且每一次通話均可回溯碘梢。因此,在構建實時數據監(jiān)測系統(tǒng)時伐蒂,面臨很多“第一次”煞躬。本文包含從數據架構設計、數據收集、分析恩沛、還原在扰、預警和使用上的很多實踐經驗分享。
1. 影響通話質量的因素
1.1 接入質量
一次通話的傳輸過程复唤,包含很多個環(huán)節(jié)健田,每個環(huán)節(jié)的質量烛卧,會對整個服務的質量佛纫、乃至用戶體驗產生巨大影響。下面從一個印度用戶與中國用戶的通話講起总放。在通話發(fā)起時呈宇,這個印度的用戶首先會接入聲網的SD-RTN實時虛擬通信網,此時局雄,就產生了第一環(huán)節(jié)的質量問題:接入質量甥啄。影響接入質量的因素有:
最近的接入點
弱網絡(2G/3G)
WIFI 信號差
路由器設備問題
企業(yè)路由器限制
DNS劫持
小運營商網絡
跨運營商接入
這些環(huán)節(jié),需要一一針對性的優(yōu)化炬搭。
1.2傳輸質量
接下來是傳輸質量蜈漓。這個印度的用戶,如果從Bangalore(班加羅爾宫盔,印度南部的城市)接入融虽,到北京會有200ms的遲延;但是Bangalore到新加坡只有100ms灼芭,再從新加坡到北京只有60ms有额,這是非常理想的線路。聲網的智能路由會選擇從新加坡“繞道”走彼绷。此時巍佑,這個印度用戶獲得的體驗,就是整體160ms的延遲寄悯,而不是200ms萤衰。
經過接入優(yōu)化、路由傳輸優(yōu)化猜旬,用戶會獲得非常好的端到端質量腻菇,丟包控制在1%,抖動和延遲能夠控制在120ms昔馋。
但是筹吐,即使端到端質量非常好,有的用戶看到的畫面還是模糊的秘遏。這是因為丘薛,影響用戶體驗的除了端到端傳輸,還有其它因素邦危。
1.3 用戶的問題
聲網在印度的終端用戶洋侨,有大量用戶使用下圖這款手機舍扰,官網的售價大概是相當于562元人民幣。
這是非常低端的設備希坚,會出現很多中高端設備沒有的問題边苹。
聲學設計缺陷、制造缺陷裁僧,造成嚴重的回音干擾
機型過熱造成對性能的影響个束,導致畫面卡頓甚至卡屏
硬件編解碼器能力不同,也會對流暢度產生影響
1.4 軟件集成的問題
在軟件集成方面也會有問題聊疲,比如茬底,開發(fā)人員用錯API或者軟件本身存在BUG。
當我們知道有哪些環(huán)節(jié)會影響通話質量获洲,那么質量監(jiān)控系統(tǒng)的功能要求也就呼之欲出了阱表。它要能監(jiān)控到每一次通話的質量。我們能通過這個系統(tǒng)來定位這個問題是一個個例贡珊,還是廣泛存在的最爬, 是在哪個環(huán)節(jié)出了問題。
2. 數據的實時監(jiān)控
2.1 可感知门岔、可保障
對于聲網來說爱致,我們需要對用戶的通話體驗進行實時監(jiān)控。包括接入節(jié)點質量固歪、路由傳輸層質量蒜鸡、音視頻引擎質量以及用戶體驗質量。有了這些數據牢裳,我們就能夠對通話過程進行診斷或者進行事后的深入復盤逢防。聲網是全球第一個使用大數據平臺做監(jiān)控和實時保障的通信技術服務商。我們在質量監(jiān)控方面的目標是讓整個通信服務的質量是可感知和可保障的蒲讯。
2.2 基礎網絡
這是一個聲網數據監(jiān)控中關于基礎網絡質量的粗略演示忘朝。圖中顯示的是我們整個大網絡SD-RTN的數據中心相互之間的連接的情況。紅色說明兩個機房之間連接的狀態(tài)非常差判帮,綠色說明非常好局嘁。
2.3 基礎服務
這是基礎服務的監(jiān)控情況。聲網要保障對98%的用戶能夠在1秒內完成響應晦墙,紅色是代表響應時間小于1秒的百分比悦昵。
2.4 端到端的監(jiān)控
這是端到端的監(jiān)控,測量用戶在傳輸區(qū)間的數據晌畅,包括延遲但指、丟包。圖中的丟包,是網絡優(yōu)化后的丟包棋凳,不是實際的丟包拦坠。
2.5 用戶體驗的監(jiān)控
最后是用戶體驗方面的監(jiān)控,比如直播場景下剩岳,根據用戶的觀感體驗所做的監(jiān)控贞滨,觀眾的卡頓。
2.6 告警
這是我們自己開發(fā)的一個APP拍棕。聲網的服務出現任何不穩(wěn)定的情況時晓铆,通過這個APP都可以接收到告警。拿Hike作為一個例子莫湘,我們首先會定義什么叫優(yōu)質接入尤蒿,當優(yōu)質接入的比例低于80%的時候郑气,我們就會觸發(fā)告警幅垮。過了一段時間恢復了,同樣會接收到提示尾组。
2.7 個例調查
前文說的是一個整體監(jiān)控忙芒。如果個別用戶出現突發(fā)狀況時,比如網絡特別差或者手機特別差讳侨。我們需要把整個過程還原出來呵萨,調查出是哪個環(huán)節(jié)出了問題,作為后續(xù)質量改進的依據跨跨。所以潮峦,我們會把所有通話各個層次的工作指標實時收集保存下來,這樣就能夠用于在線現場分析勇婴,或者事后復盤忱嘹。
這是兩個用戶在打電話的數據實時監(jiān)控,圖中的數據包含:音頻的渲染耕渴、視頻的渲染拘悦、用戶上行的丟包、上行的延遲等等信息橱脸。
3. 系統(tǒng)架構與挑戰(zhàn)
這樣一個實時監(jiān)控體系础米,包含幾百個指標,每個用戶的數據都要實時收集添诉、實時分析屁桑。所以,我們需要一個穩(wěn)定的架構來支撐這樣的海量數據和運算量栏赴。
上圖是一個架構簡圖蘑斧。我們的用戶全球分布,數據會從全球各地輸入進來,通過我們SD-RTN網絡分布全球的數據中心乌叶,收集數據盆偿。在中間環(huán)節(jié),有一個實時的智能網絡准浴,它也是一個分布的接收節(jié)點事扭,中間有傳感節(jié)點,收到數據以后通過最近的線路報到美國的數據中心乐横。
整個監(jiān)測架構求橄,分為3個系統(tǒng):實時計算系統(tǒng)、實時存儲系統(tǒng)葡公、離線存儲系統(tǒng)罐农。實時計算系統(tǒng)用來做數據的實時統(tǒng)計和分析,對異常進行告警催什。實時存儲系統(tǒng)用來把數據進行實時收集涵亏,用來支撐實時調查的工具,這里會用到HBase離線存儲系統(tǒng)蒲凶,用作整體的質量分析气筋。
要實現這套系統(tǒng),首先需要對統(tǒng)計的指標進行清晰定義旋圆。下圖是一些例子宠默,實際的指標不止于此。
用戶數據的收集灵巧,尤其是移動設備搀矫,面臨很多問題和挑戰(zhàn)。
UDP不可靠:我們采用UDP進行上報刻肄。但是瓤球,UDP的傳輸不可靠,所以我們要實現UDP的響應機制肄方。數據報上去后冰垄,是否收到,客戶端需要知道权她。如果沒有收到就多報幾次虹茶。
Best effort傳輸:如果數據報不上去,現在不報隅要,晚一點再報蝴罪,但這樣就失去了時效性。所以步清,我們要做到可控的上報要门。那么虏肾,我們就要計算總體的丟失率。
DNS解析問題:早期我們采用DNS的方式選擇上報的邊緣節(jié)點欢搜,后來發(fā)現效果比較差封豪,比如很多DNS時候解析會超時。
數據協(xié)議:有些協(xié)議是看起來非常簡單炒瘟,容易調試吹埠,但是數據的傳輸效率比較差,而且不是機器友好的協(xié)議疮装,可能在解析的時候要做多種判斷缘琅。最后我們用Thrift協(xié)議。
數據量可控:這是數據上報移動端獨有的問題廓推。比如刷袍,通話時處在非常差的網絡, 2G網絡樊展。在帶寬不夠時呻纹,如果還上報大量數據,會影響通話過程滚局。所以居暖,數據量可控就是指顽频,在不同網絡狀況下分析藤肢,什么情況下可以多報數據,什么情況下少報一些數據糯景。
數據實時收集:要對上報的邊緣節(jié)點做負載均衡嘁圈,防止雪崩。比如蟀淮,一個客戶突然放量了最住,用戶增長上百萬。此時怠惶,基礎設施的搭建可能趕不上用戶量的增長涨缚。所以,必須保障數據服務能夠可靠穩(wěn)定的工作策治,不能因為數據量驟增就全都不工作了脓魏。所以,邊緣節(jié)點還必須要有一些防御性的策略通惫。比如茂翔,指定哪些類型的數據在邊緣節(jié)點就丟掉,不再往數據中心傳輸履腋。
時間序列數據:我們用HBase做時間序列的存儲珊燎。因為我們收集的數據特別多惭嚣,但只有少部分數據會調取,比如100個通話只有一兩個通話需要復盤或者調查悔政。這是一個寫多讀少的場景晚吞。大量數據都是擱置的,但是又必須要把它們全部收集起來谋国。所以载矿,要針對寫多讀少的場景做優(yōu)化。此外烹卒,數據結構也做了優(yōu)化工作闷盔。一開始,是參考寬表的方式旅急,但測試后發(fā)現寬表會因為行鎖問題逢勾,影響到寫的速度,后面就改成了高表藐吮。同時溺拱,時間序列就是時間點,是一個key-value序列谣辞,但是rowkey很長迫摔, 不加優(yōu)化存儲效率非常低。
目前泥从,這個數據監(jiān)測系統(tǒng)一天規(guī)模是一千億條數據句占。并且在隨著用戶量的增加,逐漸提升躯嫉。整體監(jiān)控的延遲性能大概是10s以內纱烘,從終端用戶體驗到接入到大網通話開始到結束,所有的環(huán)節(jié)我們都能監(jiān)控起來祈餐,所有的通話都可以回溯擂啥,任何一通通話出現問題,我們都能找到原因帆阳。
引用 https://zhuanlan.zhihu.com/p/27817652