北海BRDYUN的會議云直播流量控制
時間:2020-11-21 16:03:46 信息來源:百睿德 點擊:86573次
1. 錯誤代碼102004表示:會議已經(jīng)存在無法創(chuàng)建;
2. 錯誤代碼102005表示:MC服務器不可用;
3. 錯誤代碼102011表示:請升級zoom客戶端;
4. 錯誤代碼103002表示:會議沒有開啟;
5. 錯誤代碼103003表示:會議已經(jīng)關(guān)閉;
6. 錯誤代碼103006表示:會議已滿,達到人數(shù)上限;
7. 錯誤代碼103011表示:會議被主持人鎖定;
8. 錯誤代碼104005表示:會議在MC上不存在;
9. 錯誤代碼104101~104118表示:無法和MC服務器建立連接;
10. “會議異常,錯誤代碼16” 表示:需升級zoom客戶端;
當BRDYUN決定放棄流量時,它會向設(shè)備發(fā)送信號,讓對方知道我們需要它們卸載流量。BRDYUN會議直播系統(tǒng)將告訴設(shè)備最大的重試次數(shù),以及可以在什么樣的時間窗口下執(zhí)行這些重試命令,這樣就解決了重試風暴的問題。比方說:
{“maxRetries”:<max-retries>,“retryAfterSeconds”:<seconds>}
使用這種反壓機制,我們可以比過去更快地停止重試風暴。我們會根據(jù)請求的優(yōu)先級自動調(diào)整這兩個撥盤。高優(yōu)先級的請求將比低優(yōu)先級的請求更積極地重試,這也提高了流式傳輸?shù)目捎眯浴?/p>
利用這種反壓機制,跟過去相比,我們可以更快地停止重試風暴。我們會根據(jù)請求的優(yōu)先級自動調(diào)整這兩個刻度盤,高優(yōu)先級的請求的重試頻率會比低優(yōu)先級的請求的更高,這也會提高流媒體的可用性。
驗證哪些請求適合這項任務
為了驗證關(guān)于特定請求是否屬于NON_CRITICAL,DEGRADED或CRITICAL存儲桶的請求分類法假設(shè),我們需要一種方法來測試該請求發(fā)出時用戶的體驗。為此,我們利用了內(nèi)部故障注入工具(FIT),并在Zuul中創(chuàng)建了一個故障注入點,該點使我們能夠根據(jù)提供的優(yōu)先級發(fā)出任何請求。這使我們能夠手動模擬負載脫落的阻斷優(yōu)先級范圍,特定設(shè)備或成員,讓我們知道哪些要求可能是安全的,而不會影響用戶體驗棚。
為了對我們的請求分類假設(shè)(NON_CRITICAL、DEGRADED及CRITICAL)是否合適進行驗證假設(shè),我們需要有一種方法來測試當該請求被卸載時用戶的體驗。為此,我們利用了內(nèi)部故障注入工具(FIT),并在Zuul中創(chuàng)建了一個故障注入點,這讓我們可以根據(jù)提供的優(yōu)先級來舍棄任何的請求。如此,我們就可以通過屏蔽特定設(shè)備或會員特定優(yōu)先級范圍的請求,來手動模擬負載分流體驗,讓我們了解哪些請求可以安全地卸載掉,而不會影響到用戶。
不斷確保這些請求仍適合工作
這里的目標之一,是通過丟棄預期不會影響用戶流媒體體驗的請求,來減輕會員的痛苦。不過,BRDYUN的會議云直播的變化是很快的,那些被認為非關(guān)鍵的請求可能也會意外地變成關(guān)鍵請求。此外,Netflix還有多種的客戶端設(shè)備、客戶端版本,以及多種跟系統(tǒng)交互的方式。為了確保在任何情況下限制NON_CRITICAL請求時我們都不會引起成員的痛苦,我們利用了自己的基礎(chǔ)設(shè)施試驗平臺ChAP。
這個平臺可以讓我們開展A/B測試,把我們的少量產(chǎn)品用戶分配到對照組或?qū)嶒灲M,每次實驗45分鐘的時間,同時對實驗組一定范圍內(nèi)的優(yōu)先級進行限制。這可以讓我們捕捉到各種實時的用例,并衡量它們對回放體驗的影響。ChAP按照設(shè)備分析每一位會員的KPI,以確定對照組和實驗組之間是否存在偏差。
在我們的第一個實驗里,我們在Android和iOS設(shè)備上都檢測到了低優(yōu)先級請求的紊亂情況,這會導致零星的播放錯誤。由于我們進行的是連續(xù)實驗,所以一旦初始的實驗開始運行,并且bug得到了修復,我們會安排實驗繼續(xù)按照周期運行。這樣一來,我們就能夠盡早檢測出回歸,并讓用戶保持正常播放。