欧美色图 亚洲|野外口爆视频国产|久久精品视频观看|97精品人人抽插

【技術(shù)干貨】彈性支撐百萬級別直播流的樂視云“月光寶盒”如何煉成?

2018-03-13 11:28:03 來源:樂視云 作者:劉斌 熱度:
公司介紹

樂視云計(jì)算有限公司(以下簡稱樂視云)是新樂視上市體系中核心業(yè)務(wù)版塊之一,負(fù)責(zé)新樂視體系所有基礎(chǔ)設(shè)施服務(wù)和云計(jì)算服務(wù)。樂視云圍繞視頻云和物聯(lián)云兩大方向開展業(yè)務(wù),致力成為領(lǐng)先的家庭互聯(lián)智能娛樂云技術(shù)提供者,以物聯(lián)云為核心創(chuàng)造更智能的家居社區(qū)解決方案。

樂視云在視頻行業(yè)有強(qiáng)大的技術(shù)儲(chǔ)備,在視頻領(lǐng)域中的點(diǎn)播、直播、分發(fā)、媒體技術(shù)、視頻內(nèi)容理解等方面處于行業(yè)領(lǐng)先地位;而物聯(lián)云將圍繞家居安全、智能互聯(lián)、環(huán)境健康等方面提供全部解決方案。

2015年到2017年的2年間,樂視云曾成功服務(wù)于除新樂視外上萬家企業(yè)客戶,如熊貓TV、戰(zhàn)旗TV、快手、人人網(wǎng)、鳳凰網(wǎng)、百度視頻、OPPO等大型企業(yè);在廣電領(lǐng)域,樂視云先后與中國藍(lán)TV、天府TV、四川網(wǎng)絡(luò)廣播電視臺(tái)等廣電企業(yè)建立開放型戰(zhàn)略合作,促進(jìn)新型全媒體產(chǎn)業(yè)融合。2016年曾融資10億人民幣,是樂視生態(tài)第四個(gè)獨(dú)角獸。

項(xiàng)目背景

在觀看視頻直播中,難免會(huì)發(fā)生因?yàn)楦鞣N打斷而錯(cuò)過一些精彩片刻的情況,這個(gè)時(shí)候,如果我們能

快速穿越回去,會(huì)是怎樣一種體驗(yàn)?樂視云“月光寶盒”可以完美彌補(bǔ)遺憾,讓精彩不再錯(cuò)過。

項(xiàng)目挑戰(zhàn)

“月光寶盒”是樂視云直播 PaaS 平臺(tái)的一個(gè)重要服務(wù),可以完美解決直播過程中任意時(shí)間段的時(shí)移回看,也可以在直播結(jié)束后,提供瞬時(shí)秒回功能,快速將直播信號轉(zhuǎn)為點(diǎn)播信號進(jìn)行分發(fā),大幅提升了直播觀看體驗(yàn),也同時(shí)給直播運(yùn)營提供了更多的可能。月光寶盒歷經(jīng)三次產(chǎn)研迭代,見證了直播流由萬增至百萬的快速增長,一路上我們遇到了哪些挑戰(zhàn)?直播流的分配策略是如何進(jìn)化的?源站的切片、索引存儲(chǔ)需要做出哪些升級?以及在持續(xù)迭代過程中如何確保平滑升級等等問題,接下來我們將從“月光寶盒”三次大的版本迭代中做出解答。

月光寶盒 V1.0

直播 PaaS 平臺(tái)由原支撐樂視集團(tuán)業(yè)務(wù)的直播后臺(tái)技術(shù)部蛻變而成,已經(jīng)持續(xù)服務(wù)于樂視網(wǎng)、樂視電視、機(jī)頂盒、樂視體育、樂視音樂等超過 5 年時(shí)間, 早期的直播流量在萬級別(注:直播流 ID 個(gè)數(shù),可以理解為一個(gè)直播流就是一路信號),直播信號通常以 7*24 小時(shí)長直播為主,發(fā)布會(huì)、演唱會(huì)等短直播為輔(注:這類短直播無直播內(nèi)容時(shí),通常會(huì)配置一個(gè)指定的備片來持續(xù)代替直播信號源,以提升斷流時(shí)用戶播放體驗(yàn)),因此在 V1.0 架構(gòu)中,這階段的直播生產(chǎn)調(diào)度分配算法采用簡單的配置策略,將直播流與設(shè)備組進(jìn)行關(guān)聯(lián)綁定,直播流對應(yīng)的切片與索引采用簡單的本地存儲(chǔ)。直播、時(shí)移回看、打點(diǎn)錄制均在該組設(shè)備中并行提供服務(wù)。

V1.0 架構(gòu)圖

注:

綠色表示直播流長期處于使用狀態(tài)。

紫色表示直播信號暫時(shí)中斷,但源站配置了播放備片功能,會(huì)播放備片信號,提高直播斷流體驗(yàn)。

附:左圖為正常直播信號,右圖為直播信號中斷時(shí)播放的備片。

隨著直播 PaaS 平臺(tái)的開放,海量直播流的接入,而商業(yè)直播的需求主要以秀場、發(fā)布會(huì)等間隔較短的直播為主,此時(shí)如果仍按照原有均衡分配直播流策略,每個(gè)直播都分配單獨(dú)服務(wù)器,會(huì)導(dǎo)致服務(wù)器數(shù)量成倍增加,資源成本陡增,為解決這個(gè)問題,月光寶盒架構(gòu)也升級至 V1.1。

月光寶盒 V1.1

在 V1.1 版本中,直播流均按需生產(chǎn),為了確保客戶所接入的流量安全,調(diào)度會(huì)同時(shí)分配給主備兩臺(tái)設(shè)備來生產(chǎn)該流,在主節(jié)點(diǎn)故障時(shí)自動(dòng)執(zhí)行主備切換,確保對用戶播放無感知。

隨著業(yè)務(wù)的快速增長,日活直播快速上升,平臺(tái)對直播源站集群進(jìn)行了擴(kuò)容,但由于直播流分配策略會(huì)優(yōu)先與時(shí)移數(shù)據(jù)綁定(注:該策略為確保全程回看數(shù)據(jù)在同臺(tái)設(shè)備連續(xù)),因此在實(shí)際運(yùn)行的過程中可能會(huì)出現(xiàn)比較嚴(yán)重的偏壓問題,會(huì)導(dǎo)致比較明顯的熱點(diǎn)問題,需要通過集群上報(bào)流監(jiān)控狀態(tài)判斷是否需要對備流進(jìn)行遷移,以實(shí)現(xiàn)集群的再均衡。

V1.1架構(gòu)圖

注:

虛線箭頭表示發(fā)生偏壓時(shí),部分直播流發(fā)生遷移。

綠色表示正在播放的直播流。

紅色表示直播流即將被遷移。

黃色表示直播流被遷移后。

通過流遷移的方式我們緩解了熱點(diǎn)問題,但這種方式有一定的滯后性,我們需要新的架構(gòu)來解決這個(gè)問題,在介紹新架構(gòu)方案前,首先快速介紹下直播業(yè)務(wù)里面用到一些協(xié)議和文件,HLS(Http Live Streaming)是由 Apple 公司定義的用于實(shí)時(shí)流傳輸?shù)膮f(xié)議,HLS 基于 HTTP 協(xié)議實(shí)現(xiàn),傳輸內(nèi)容包括兩部分,一是 M3U8 描述文件,二是 TS 媒體文件。M3U8 文件是用文本方式對媒體文件進(jìn)行描述,由一系列標(biāo)簽組成。

隨著業(yè)務(wù)持續(xù)增長,整個(gè)直播集群的存儲(chǔ)壓力會(huì)變得比較突出,因此需要盡快消除 IO 瓶頸。在此背景下,我們首先將 TS 切片遷移到了 LeS3(樂視云對象存儲(chǔ)系統(tǒng)), 但對于視頻索引的存儲(chǔ)仍然按照主備方式管理,所以下一步重點(diǎn)就變成了尋找存儲(chǔ) M3U8 的索引集群存儲(chǔ)解決方案,由于不同直播流對切片設(shè)置大小不一(通常設(shè)置在 2~10s),譬如北京其中一個(gè)集群最大峰值寫入約在 3w 左右,業(yè)務(wù)屬于寫多讀少,對于傳統(tǒng)主從 RDS 來說,單機(jī)無法承受,需要做分庫分表,而分庫分表有很多弊端,比如對業(yè)務(wù)侵入太多、應(yīng)用不友好,普遍的采用 Proxy 方案不但對技術(shù)有要求,而且還有非常多的局限性,視頻直播需要靈活的擴(kuò)展性,而分庫分表對再擴(kuò)容的成本非常高,會(huì)為業(yè)務(wù)埋下隱患。這期間我們接觸到了 TiDB,其支持多活、無單點(diǎn)、支持橫向擴(kuò)容特性且兼容 MySQL 等特性與我們的業(yè)務(wù)需求非常吻合,加之 TiDB 安裝部署、監(jiān)控等細(xì)節(jié)做得非常到位,我們決定測試看看效果。

月光寶盒 V1.2

經(jīng)過一周左右對TiDB的常用場景測試、壓測,測試結(jié)果比較符合預(yù)期,從存儲(chǔ)容量、QPS、響應(yīng)時(shí)間來看,均可支持我們“快速穿越執(zhí)行時(shí)移回看”的需求。測試期間也跟官方的同學(xué)進(jìn)行技術(shù)交流,確定了后續(xù)生產(chǎn)環(huán)境中如:部署架構(gòu)、設(shè)備選型、表結(jié)構(gòu)及索引優(yōu)化。在生產(chǎn)環(huán)境的 TiDB 生產(chǎn)集群上線后,我們將線上原有直播流的 HLS 回看的索引在原 V1.1 架構(gòu)進(jìn)行本地存儲(chǔ)外,同步復(fù)制至 TiDB 中,以便于真實(shí)生產(chǎn)環(huán)境中來驗(yàn)證TiDB的穩(wěn)定性。觀察一月多,運(yùn)行平穩(wěn),期間我們做部分故障演練,如將PD、TiKV、TiDB中某一臺(tái)重啟,并未出現(xiàn)服務(wù)不可用或丟數(shù)據(jù)的情況!接下來對北京一個(gè)直播集群月光寶盒服務(wù)進(jìn)行了試點(diǎn)改造,采用灰度切流方式逐步將直播流的時(shí)移、回看、秒回請求切至TiDB ,運(yùn)行穩(wěn)定。目前全國各地直播集群的月光寶盒服務(wù)跑在TiDB服務(wù)之上。

v1.2 架構(gòu)圖

附一張 TiDB 在月光寶盒 V1.2 中的架構(gòu)圖:

總結(jié)回顧

前面已將“月光寶盒“歷經(jīng)3個(gè)階段詳述,最后我們再用一張表做下簡單的回顧。

上線效果數(shù)據(jù)說明

通過將 M3U8 數(shù)據(jù)統(tǒng)一存儲(chǔ)到一套 TiDB 集群,大幅度簡化直播源站的結(jié)構(gòu),從源頭解決負(fù)載偏壓、擴(kuò)展的問題,同時(shí) TiDB 很好的解決了這類寫多讀少的業(yè)務(wù)場景,具體體現(xiàn)如下:

● 單機(jī) HLS 設(shè)備生產(chǎn)性能提升 200%。

● 簡化直播流分配調(diào)度策略,消除集群內(nèi)偏壓問題。

● 簡化直播源站結(jié)構(gòu),消除上下游關(guān)聯(lián)系統(tǒng)耦合。

● TiDB 天然的高可用提升了系統(tǒng)的可用性。

● 依賴 TiDB 的負(fù)載均衡,優(yōu)雅的解決了直播流量彈性擴(kuò)展的問題。

現(xiàn)狀及計(jì)劃

目前月光寶盒 v1.2 已持續(xù)穩(wěn)定的服務(wù)于標(biāo)準(zhǔn)直播、移動(dòng)直播、直播CDN等三大業(yè)務(wù)線,其中北京一個(gè)核心直播集群的 TiDB 峰值 寫入 QPS 達(dá)到 2.5W 左右,經(jīng)過 CDN 及 HLS_Consumer 的雙重緩存后讀請求峰值約在 5k 左右,下一步我們會(huì)將直播內(nèi)部的一套數(shù)據(jù)分析系統(tǒng)也遷移到 TiDB中。

大家對“月光寶盒”研發(fā)技術(shù)感興趣,也可以關(guān)注樂視云公眾賬號,感興趣同學(xué)達(dá)到一定數(shù)量后,我們會(huì)舉辦一些線下活動(dòng)進(jìn)行技術(shù)分享。

單個(gè)直播集群對應(yīng)的 TiDB 集群總體配置如下:

作者簡介:劉斌,樂視云工程師,主要參與樂視直輪播、商業(yè)直播 PaaS 架構(gòu)設(shè)計(jì)迭代。

招聘

視頻云基礎(chǔ)平臺(tái)正在招聘“流媒體研發(fā)/圖像視頻算法/深度學(xué)習(xí)/JAVA開發(fā)工程師” 感興趣的同學(xué)可將簡歷發(fā)送至“wangxiaoyu1@le.com

責(zé)任編輯:張樑