天天看點

幹貨分享:細說雙 11 直播背後的壓測保障技術

PTS 針對視訊、直播行業的變化,對 PTS 支援的協定做了全面更新。它不光支援傳統的 HTTP 請求,更是引入了 HTTP 2、流媒體、MQTT 等多種協定,讓使用者可以 Test Anywhere!另外,PTS 推出了新的資源包售價,以及更低價格的 JMeter 專屬資源包,現在正值雙十一優惠中,全場 88 折起,最低可到 0.99 元,關于 PTS 的更多問題和産品建議,歡迎大家掃碼進群溝通。

作者:子矜

稽核&校對:風雲

編輯&排版:酒圓

“今年 1 月到現在,淘寶直播的使用者超過了 5 億,到 8 月份流量也增長了 59%,在最核心的商家 GMV 上增長了 55%。雙 11 是從 10 月 20 日晚開始的,我們希望淘寶直播作為主場去承接這件事情。”日前,淘寶事業群直播事業部負責人程道放在接受 21 世紀經濟報道記者采訪時透露,過去一年的直播可謂熱鬧,今年會更加專業化。

幹貨分享:細說雙 11 直播背後的壓測保障技術

如此大的使用者體量下,直播類應用給後端服務帶來了一些什麼不一樣的挑戰呢?

我們今天來介紹一些直播的架構,以及針對這個架構,給我們的應用架構帶來的挑戰。

直播的架構

我們通常看到的有下面幾種直播:

  1. 單人直播,例如淘寶直播,通常伴随着秒殺,彈幕,送火箭等業務邏輯;
  2. 多人同時直播,例如連麥,會議;
  3. 錄播,對于部分直播場景如教育訓練、會議等,需要将現場直播視訊儲存以進行傳播、留存等使用,有對直播進行錄制的需求。這種往往對實時性要求不高。

而當使用者觀看直播時,如果服務接入了 CDN,若接入 CDN,播放端選擇就近的 CDN 節點進行拉流播放,此時拉流壓力在 CDN;若未接入 CDN,播放端從直播源站進行拉流。

下圖是一個比較常見的視訊流的架構和兩條資料走向:

幹貨分享:細說雙 11 直播背後的壓測保障技術
  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 協定,并且結合壓測場景做了抽象,讓使用者可以界面化的使用不同協定的壓測。

幹貨分享:細說雙 11 直播背後的壓測保障技術

除此以外,PTS 還提供豐富的編排模式,可以友善自如的對場景進行編排;更重要的是,還可以利用 PTS 全國定制的模式,模拟客戶從不同的地方發起請求,更快捷的探測出問題。

挑戰二:低延時的互動協定

和傳統的大促不一樣,直播往往追求和線下客戶的互動。例如彈幕,評論,聊天,秒殺等等。主持人聊的 熱火朝天,使用者毫無反應,這就是一次失敗的直播了。而普通的 HTTP 請求無法滿足對時效的需求;是以,通常這些功能用WebSocket來實作的。因為 HTTP 是一種無狀态的、無連接配接的協定,WebSocket 則通過服務端/用戶端建立長鍊,來保證消息的實時性、以及降低性能開銷。

每建立一個 WebSocket 連接配接時,在握手階段都會發起 HTTP 請求。通過 HTTP 協定協定好 WebSocket 支援的版本号、協定的字版本号、原始位址,主機位址等内容給服務端。封包的關鍵地方在于 Upgrade 的首部,用于告訴服務端把目前的 HTTP 請求更新到 WebSocket 協定,如果服務端支援,則傳回的狀态碼必須是 101:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept:xxxxxxxxxxxxxxxxxxxx
           

有了上述傳回,Websocket 連接配接才建立成功,接下來就是完全按照 Websocket 協定進行了資料傳輸了。

針對 WebSocket 的通信過程,JMeter 提供了插件來模拟整個過程,但是它也需要使用者了解協定的玩法,使用起來相對晦澀。PTS 通過抽象業務含義,使用者通過場景配置和施壓配置,僅需要配置壓測 url 等基本配置、出參設定、檢查點設定等幾個簡單參數,就能夠把複雜協定玩起來。

幹貨分享:細說雙 11 直播背後的壓測保障技術

除了在直播中使用,Websocket 也廣泛應用于線上遊戲、股票基金、體育實況更新、聊天室、彈幕、線上教育等實時性要求非常高的場景。

挑戰三: 高并發的脈沖流量

不同于普通應用,直播類應用的使用時間段非常的集中,是以在這短短幾小時之間,會湧入大量的使用者,一次大 V 的直播通常就會造成百萬級的使用者登入,故直播系統對應脈沖流量的能力要求也變得很高。而且在搶貨的時候,和傳統的秒殺不同,往往是主播進行到某個時間突然發起秒殺的--這個時間往往無法非常精确--同時脈沖流量對系統的要求極高,很多平時不會出現的問題,例如懶加載,jit 預熱,冷熱資料切換等傳統大流量不會出現的問題,都會出現。

這兩點特性,要求壓測工具能夠瞬間發起大流量。這除了需要較多的機器引擎,還需要對流量的有精準控制--滿足流量快速攀升的訴求。

而這兩點,正是阿裡雲 PTS 的強項。阿裡雲 PTS 站在雙 11 巨人的肩膀上,是阿裡全鍊路壓測的延伸。PTS 通過伸縮彈性,輕松發起使用者百萬級别的流量,免去機器、人力成本;PTS 對流量的控制,能夠實時脈沖,精準控制; 是應對視訊直播快速攀升的流量脈沖的優秀方案。

最後

PTS 針對視訊、直播行業的變化,對 PTS 支援的協定做了全面更新。它不光支援傳統的 HTTP 請求,更是引入了 HTTP 2、流媒體、MQTT 等多種協定,讓使用者可以 Test Anywhere!

另外,PTS 推出了新的資源包售價,以及更低價格的 JMeter 專屬資源包,現在正值雙十一優惠中,全場 88 折起,最低可到 0.99 元,關于 PTS 的更多問題和産品建議,歡迎大家掃碼進群溝通。

相關連結

1)阿裡雲PTS:

https://pts.console.aliyun.com/#/overviewpage

2)PTS資源包購買

https://common-buy.aliyun.com/?commodityCode=ptsbag#/buy

繼續閱讀