世界盃千萬級直播高穩定的挑戰和實踐
摘要: 今年夏天,俄羅斯世界盃召開。在剛剛落幕的重慶雲棲飛天技術匯專場中,阿里視訊雲技術專家裘良科,就世界盃這個話題,跟參會嘉賓一起探討了千萬級直播高穩定的挑戰和相關實踐,本文為演講全文。 2018年俄羅斯世界盃從6月14日到7月15日,跨度整整一個月,共有64場比賽,優酷成為央視指定的世界盃新媒體官方合作伙伴,作為優酷的同門兄弟,阿里雲也一併為世界盃直播的提供技術支援,一同征戰世界盃。
今年夏天,俄羅斯世界盃召開。在剛剛落幕的重慶雲棲飛天技術匯專場中,阿里視訊雲技術專家裘良科,就世界盃這個話題,跟參會嘉賓一起探討了千萬級直播高穩定的挑戰和相關實踐,本文為演講全文。
2018年俄羅斯世界盃從6月14日到7月15日,跨度整整一個月,共有64場比賽,優酷成為央視指定的世界盃新媒體官方合作伙伴,作為優酷的同門兄弟,阿里雲也一併為世界盃直播的提供技術支援,一同征戰世界盃。 整個世界盃期間,阿里雲的服務是不間斷的,要始終保持著穩定與流暢。而且除了支援優酷外,阿里雲同時支援著CCTV5、CNTV、咪咕的世界盃直播,支撐了全網世界盃流量的70%。單單優酷的法阿大戰單場併發就達到2000W,加上其他的幾家客戶,足足有數千萬的使用者併發。這麼大規模、持久的賽事,對直播平臺也是很大的挑戰。
那麼從技術層面看,世界盃直播的挑戰究竟有哪些?
- 第一個挑戰是內容集中。世界盃核心內容就是CCTV5,加上解說頻道,多角度頻道就10多路直播,假設源站出現問題,那麼所有的直播都會出現問題。
- 第二個挑戰是高併發。世界盃高達千萬級的併發線上觀看使用者,且使用者量徒增非常明顯。假設直播平臺出現短暫故障,所有使用者可能會重新請求或者請求其他系統,對系統壓力也會非常大。
- 第三個挑戰是安全性。世界盃是世界級盛會,假設中間出現安全事故,影響會非常大,平臺方也會有不可推卸的責任。
在這樣的挑戰之下,阿里雲要始終保持著世界盃直播的穩定、流暢、安全,背後有一套複雜的方案和邏輯,下面我們來從穩定性、安全、監控三個部分展開。
穩定性
下圖是世界盃直播穩定性架構圖,分為四大部分,信源生產鏈路、視訊雲中心、CDN和客戶端。
第一部分是信源生產鏈路,因為最原始的訊號很有可能不被雲平臺使用,比如非常高位元速率的訊號,不適合傳輸,所以一般都會有信源生產的鏈路進行編碼,提供一個源站服務。第二部分是視訊雲中心,整個直播平臺架構是中心架構,所有直播所需要的功能,比如轉碼、截圖、錄製、水印等功能,都是在中心完成的。第三部分是CDN,CDN是真正承載整個世界盃直播的使用者壓力的一環,數千萬的使用者都跑在CDN上。第四個部分是客戶端。接下來分各個環節來介紹阿里雲如何保障服務穩定。
一、信源生產鏈路
- 多訊號源輸入:生產鏈路環節一般是使用者自己搭建,建議使用者多訊號源輸入,因為單訊號源輸入的情況下,如果訊號源中斷就會導致業務中斷。如果訊號源確認只有一個的話,建議使用者訊號源多鏈路輸入,避免單鏈路故障而導致訊號源無法接收。
- 主備線下轉碼器:前面講到原始訊號源是沒辦法直接使用的,所以會用到一個編碼器,我們一般會要求編碼器的主備是實時能夠獲取多個訊號源,並支援實時切換的。切換的模式有兩種,第一個是直接主備模式,在同時輸出源,只有1臺編碼器。第二個雙備的方式,2臺編碼器的輸出源同時給雲平臺提供資料來源,這樣的方式,我們最終會把轉碼器的資料通過拉流或者推流的方式同步到視訊雲中心。如果是拉流的方式,視訊雲中心會從多個源站同時拉流,保證任何一個源站/編碼器出現問題,視訊雲中心都可以順利的拿到資料。如果是推流的方式,主動權在使用者,使用者也最好能多個源站/編碼器同時向視訊雲中心推流。
- 多出口推/拉流:源站的出口鏈路一般會要求是多個,因為單出口鏈路存在網路風險。
二、視訊雲中心
- 結合多網路輸入,視訊雲中心也會採用多網路接入。
- 流合併,多個流來到視訊雲中心,通過特有的合併元件,把多個流變成一路流。
- 元件分散式部署,對於重大賽事,所用的機房我們會採用獨立資源專用機房,和其他業務之間互不影響。
- 全鏈路自動切換,每一個元件的狀態都會自動檢測,發生問題在10秒鐘之內完成切換,保證直播流的連續性。
- 對於互動相對較少的賽事直播,所以會採用H264直播,進行的優化是,所有的切片輸出的H264切片中,切片長度和I幀都是對齊的,好處是當下遊想在不同位元速率之間切換的時候,畫面是連續的,不會有跳躍感。
- 切片雙寫,每一路流在進行切片的時候,都是雙程序切片,同時切到兩個OSS,這樣就保證了下游CDN的源是雙份的。
- 考慮到賽事直播的重要性,整套架構在原來的基礎上,同時做了中心異地備份。
三、 CDN與客戶端
- 配合OSS雙寫,CDN也同時支援兩個OSS,並根據實時檢測把好的切片拼成一路,任何一個OSS寫異常、寫的慢都不會影響內容的傳輸。
- 中心主備與L2災備,由於CDN本身架構就是分散式的,考慮到世界盃的規模非常大,採用中心主備,如果CDN中心出現問題,會馬上切換為另一個。另外,每個地區都會放多個L2節點,如果L2在某一時刻出現問題,會馬上要附近的其他L2接入,不會因為異地影響服務質量。
- 採用節點內的負載均衡和CDN的排程優化方案,可以確保業務順暢。
- 最後,給客戶端一個建議,因為客戶端很多,當前面的切換出現時,某些客戶端可能會出現卡死無法播放等問題,所以客戶端需要對CDN請求做一個重試。
安全
世界盃賽事直播護航工作中,內容的安全和穩定同樣重要。使用者可以通過阿里云云導播臺內容稽核、源站IP推流和拉流的白名單設定、推流鑑權、拉流HTTPS校驗防劫持等幾個方案,來保障內容安全。針對類似世界盃賽事的版權內容,阿里雲也提供播放鑑權&二次鑑權、DRM對視訊本身鑑權、分域名封禁、區域限制等方案來防止盜播盜鏈。
監控
架構解決了穩定性問題,並在安全方面也做了很多準備之後,直播當然也需要監控,阿里雲對於世界盃直播的監控分以下三大部分。
第一是技術環境的監控
包括直播中心、CDN每臺裝置的CPU使用率、記憶體、網路、磁碟等,如果出現故障情況,就和前面的方案配合進行自動切換;如果出現異常、亞健康的狀態,則會通過報警讓運維人員快速定位問題和快速處理。
第二是應用監控
包括每個程式的程序、埠、QPS壓力、直播延遲,與前面環境監控的處理方式一樣,如果出現故障,就和切換機制聯動,如果出現異常則通過報警來人為處理。
第三是業務監控
包括直播全鏈路監控,下圖是一張比較複雜的直播業務的監控圖,綠色代表正常,黃色可能會出現丟幀、丟包等問題出現的異常線路。點開每一條線,就可以看到沒路流在當前時間下的狀態值,比如說時間戳一小時之內是否連續、遞增和跳頻,避免客戶端相容性問題引發的不好的使用者體驗。
對於幀率的監控,在視訊雲中心進行流合併的時候,我們實時地把不同的流合併成一個,來達到抗抖動的效果。下面四幅圖是同一時間同一路流的監控,上面三路流合併成下面一路流,毛刺變少,結果更穩定。
除此之外,系統還會針對服務端慢速比、客戶端卡頓率等資料,進行實時收集和監控,通過和客戶端的聯合,實現質量調優。
除了以上高穩定性的服務架構、多維度安全策略以及全鏈路監控以外,阿里視訊雲也為使用者提供時移直播、智慧剪輯、異地容災、智慧排程、秒開、位元速率控制、50幀極清、高速通道、防盜鏈、雲導播臺、廣告識別、ET字幕等能力。
相信護航過世界盃直播之後,阿里視訊雲一定在活動、賽事直播這個場景下沉澱了更多技術,在未來為客戶創造更多價值,為使用者帶來更極致的觀看體驗。