细说双 11 直播背后的压测保障技术
作者:子矜
審核&校對:風云
編輯&排版:酒圓
“今年 1 月到現在,淘寶直播的用戶超過了 5 億,到 8 月份流量也增長了 59%,在最核心的商家 GMV 上增長了 55%。雙 11 是從 10 月 20 日晚開始的,我們希望淘寶直播作為主場去承接這件事情。”日前,淘寶事業群直播事業部負責人程道放在接受 21 世紀經濟報道記者采訪時透露,過去一年的直播可謂熱鬧,今年會更加專業化。
如此大的用戶體量下,直播類應用給后端服務帶來了一些什么不一樣的挑戰呢?我們今天來介紹一些直播的架構,以及針對這個架構,給我們的應用架構帶來的挑戰。?
直播的架構
我們通常看到的有下面幾種直播:?
1. 單人直播,例如淘寶直播,通常伴隨著秒殺,彈幕,送火箭等業務邏輯;
2. 多人同時直播,例如連麥,會議;
3. 錄播,對于部分直播場景如培訓、會議等,需要將現場直播視頻保存以進行傳播、留存等使用,有對直播進行錄制的需求。這種往往對實時性要求不高。
而當用戶觀看直播時,如果服務接入了 CDN,若接入 CDN,播放端選擇就近的 CDN 節點進行拉流播放,此時拉流壓力在 CDN;若未接入 CDN,播放端從直播源站進行拉流。
下圖是一個比較常見的視頻流的架構和兩條數據走向:
1.?視頻流推拉邏輯,如藍色線所示
2.?常規的業務邏輯,如黃色線所示
可以看到有四個主要模塊:
1. 推流端:主要的作用在于采集主播的音視頻數據推送到流媒體服務端;
2. 流媒體服務端:主要作用在于把推流端傳遞過來的數據轉換成指定格式,同時推送到播放端方便不同播放端用戶觀看,當然目前云產商也流媒體服務端的一整套解決方案;
3. 業務服務端:主要處理一些常見的業務邏輯,如秒殺,彈幕等等;
4. 播放端:播放端簡而言之就是拉取音視頻進行播放,把相應的內容呈現給用戶。
四個關鍵的模塊的協議其實就是流媒體傳輸協議。大部分直播的結構都采取上圖的格式,較大的區別是是否引入 CDN。一般來說,我們建議客戶引入 CDN 來減少直播流量對服務器的沖擊。四個模塊之間的協議并不著重強調一致性。
接下來,我們沿著這個架構來討論一下,在這其中比較脆弱的風險有哪些,以及我們如何提早通過壓測來排查這些風險點。
直播中的挑戰
挑戰一:視頻流給流媒體服務端的壓力
在這個推拉的邏輯中,由于涉及視頻的流量較大,經過的路線較長,對流媒體服務器都會造成沖擊;通場的做法是引入 CDN,當用戶開始收看視頻的時候,會先就近去 CDN 拉取流,如果這個時候視頻內容還沒有緩存在 CDN 的時候,CDN 就回源到流媒體服務端。?
但是,風險就存在在瞬間大量用戶同時收看 CDN,CDN 大量回源的時候;這種脈沖流量,會給流服務端帶來不可預計的效果。
我們通常通過壓測來提前驗證鏈路的有效性,甚至可以通過壓測,提前把視頻在 CDN 預熱。然而,傳統的 HTTP 請求協議是無法支持這種場景的,因為:
1. 即使開源軟件 srs_bench,以及 JMeter 都提供了一些插件來使用。但是這些開源軟件需要用戶對視頻協議有比較深入的理解,使用門檻會略微偏高;
2. 視頻壓測本身對帶寬的要求非常高,這就意味壓測機器成本比較高;
3. 視頻壓測需要考慮到地域對傳輸質量的影響。
針對以上問題,PTS 加入了 RTMP/HLS 協議,并且結合壓測場景做了抽象,讓用戶可以界面化的使用不同協議的壓測。
除此以外,PTS 還提供豐富的編排模式,可以方便自如的對場景進行編排;更重要的是,還可以利用 PTS 全國定制的模式,模擬客戶從不同的地方發起請求,更快捷的探測出問題。?
挑戰二:低延時的互動協議
和傳統的大促不一樣,直播往往追求和線下客戶的互動。例如彈幕,評論,聊天,秒殺等等。主持人聊的 熱火朝天,用戶毫無反應,這就是一次失敗的直播了。而普通的 HTTP 請求無法滿足對時效的需求;因此,通常這些功能用WebSocket來實現的。因為 HTTP 是一種無狀態的、無連接的協議,WebSocket 則通過服務端/客戶端建立長鏈,來保證消息的實時性、以及降低性能開銷。
每建立一個 WebSocket 連接時,在握手階段都會發起 HTTP 請求。通過 HTTP 協議協定好 WebSocket 支持的版本號、協議的字版本號、原始地址,主機地址等內容給服務端。報文的關鍵地方在于 Upgrade 的首部,用于告訴服務端把當前的 HTTP 請求升級到 WebSocket 協議,如果服務端支持,則返回的狀態碼必須是 101:
有了上述返回,Websocket 連接才建立成功,接下來就是完全按照 Websocket 協議進行了數據傳輸了。
針對 WebSocket 的通信過程,JMeter 提供了插件來模擬整個過程,但是它也需要用戶理解協議的玩法,使用起來相對晦澀。PTS 通過抽象業務含義,用戶通過場景配置和施壓配置,僅需要配置壓測 url 等基本配置、出參設置、檢查點設置等幾個簡單參數,就能夠把復雜協議玩起來。
除了在直播中使用,Websocket 也廣泛應用于在線游戲、股票基金、體育實況更新、聊天室、彈幕、在線教育等實時性要求非常高的場景。
挑戰三:?高并發的脈沖流量
不同于普通應用,直播類應用的使用時間段非常的集中,因此在這短短幾小時之間,會涌入大量的用戶,一次大 V 的直播通常就會造成百萬級的用戶登錄,故直播系統對應脈沖流量的能力要求也變得很高。而且在搶貨的時候,和傳統的秒殺不同,往往是主播進行到某個時間突然發起秒殺的--這個時間往往無法非常精確--同時脈沖流量對系統的要求極高,很多平時不會出現的問題,例如懶加載,jit 預熱,冷熱數據切換等傳統大流量不會出現的問題,都會出現。
這兩點特性,要求壓測工具能夠瞬間發起大流量。這除了需要較多的機器引擎,還需要對流量的有精準控制--滿足流量快速攀升的訴求。
而這兩點,正是阿里云 PTS 的強項。阿里云 PTS 站在雙 11 巨人的肩膀上,是阿里全鏈路壓測的延伸。PTS 通過伸縮彈性,輕松發起用戶百萬級別的流量,免去機器、人力成本;PTS 對流量的控制,能夠實時脈沖,精準控制;?是應對視頻直播快速攀升的流量脈沖的優秀方案。
最后
PTS 針對視頻、直播行業的變化,對 PTS 支持的協議做了全面升級。它不光支持傳統的 HTTP 請求,更是引入了 HTTP 2、流媒體、MQTT 等多種協議,讓用戶可以 Test Anywhere!
另外,PTS 推出了新的資源包售價,以及更低價格的 JMeter 專屬資源包,現在正值雙十一優惠中,全場 88 折起,最低可到 0.99 元,關于 PTS 的更多問題和產品建議,歡迎大家掃碼進群溝通。
相關鏈接
- 阿里云PTShttps://pts.console.aliyun.com/#/overviewpage
- PTS資源包購買https://common-buy.aliyun.com/?commodityCode=ptsbag#/buy
原文鏈接:https://developer.aliyun.com/article/804061?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的细说双 11 直播背后的压测保障技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钉钉宜搭入选Forrester《中国低代
- 下一篇: 云原生 DevOps,模型化应用交付能力