版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、七牛云:大規(guī)模實(shí)時流處理平臺架構(gòu)隨著不同網(wǎng)絡(luò)質(zhì)量下接入終端設(shè)備種類的增多,服務(wù)端轉(zhuǎn)碼已經(jīng)成為視頻點(diǎn)播和直播產(chǎn)品中必備的能力之一。直播產(chǎn)品講究時效性,希望在一定的時間內(nèi)讓所有終端看到不同尺寸甚至是不同質(zhì)量的視頻,因此對轉(zhuǎn)碼的實(shí)時性要求也較高。上次卜赫分享了我們實(shí)時流網(wǎng)絡(luò)LiveNet的架構(gòu),它在整個流分發(fā)的環(huán)節(jié)中起著流傳輸通道和網(wǎng)絡(luò)骨干的作用。理論上它和傳輸內(nèi)容的類型是無關(guān)的,可以傳輸音頻和視頻數(shù)據(jù),也可以傳輸其它數(shù)據(jù)包,因此涉及到編碼和轉(zhuǎn)碼相關(guān)的內(nèi)容比較多。今天我的分享主要集中于七牛直播云實(shí)時流處理平臺的架構(gòu)。通用直播模型通用直播模型主播端RTMP直播服務(wù)耦KTN1P/HL5ALV這是一個通用
2、的直播模型,大家可能對直播產(chǎn)品的架構(gòu)已經(jīng)非常熟悉了。無論是自己去建設(shè),還是使用第三方云服務(wù),它的通用架構(gòu)都差不多是這樣的。一個生產(chǎn)環(huán)境可用的直播產(chǎn)品應(yīng)該包含一個主播方,它是產(chǎn)生視頻流的源頭。主播播出去的視頻,最直接的訴求就是希望被觀眾觀看到,我們稱之為播放端。我們知道,一般來講,內(nèi)容產(chǎn)生方和消費(fèi)方一般都不是一一對應(yīng)的。對于一個直播產(chǎn)品來講,最直觀的體現(xiàn)就是一個主播可能會有很多粉絲。因此,我們不能直接讓主播端和所有播放端進(jìn)行點(diǎn)對點(diǎn)通信,這在技術(shù)上是做不到或者很有難度的。主播方播出的視頻在到達(dá)播放端之前,需要經(jīng)過一系列的中間環(huán)節(jié),也就是圖中的直播服務(wù)器端,它能夠把主播方的能力放大,提供更加強(qiáng)大的通
3、信通道供主播方和所有播放端進(jìn)行對話。這是一個看起來非常簡單的模型,實(shí)際上無論是主播端還是播放端,他們的訴求都不會僅僅是拍攝視頻和播放視頻這么簡單。在這個核心訴求被滿足之后,還有很多關(guān)鍵訴求需要被滿足。接下來我們再看看,實(shí)現(xiàn)一個基于這個簡單模型的消費(fèi)級直播產(chǎn)品還需要做哪些事情。七牛直播云方案首先,在主播端,他需要通過一定的設(shè)備來拍攝視頻,我們稱之為采集。然后,將采集的這些視頻進(jìn)行一系列的處理,比如水印、美顏和特效濾鏡等處理。最后將處理后的結(jié)果視頻進(jìn)行編碼壓縮成可觀看可傳輸?shù)囊曨l流,再通過網(wǎng)絡(luò)通道傳輸出去。對于一個社交直播產(chǎn)品來說,在觀眾端,他希望能夠?qū)崟r的看到主播端推過來的視頻流,并且和主播以及
4、其他觀眾產(chǎn)生一定的互動,比如點(diǎn)贊、聊天、彈幕甚至是一些高級道具。這就是播放端所需做的事情。我們前面說過,主播端不太可能直接和播放端進(jìn)行連接,在這個過程中還有一個中間環(huán)節(jié),幫助主播把能力放大,以滿足更多的觀眾,這就是直播服務(wù)器端。通常來講,直播服務(wù)器端提供的最核心功能是收集主播端的視頻推流,并將其放大后推送給所有觀眾端。直播服務(wù)端由一系列的網(wǎng)絡(luò)節(jié)點(diǎn)構(gòu)成,它們都能夠進(jìn)行收流和分發(fā)視頻流,這個流式傳輸?shù)木W(wǎng)絡(luò)結(jié)構(gòu)我們在上一次分享中卜赫重點(diǎn)介紹過了。除了這個核心功能之外,還有很多運(yùn)營級別的訴求需要在這個服務(wù)端滿足,比如鑒權(quán)認(rèn)證,視頻連線和實(shí)時轉(zhuǎn)碼,自動鑒黃,多屏合一,以及云端錄制存儲等功能。另外,對于一
5、個主播端推出的視頻流,中間需要經(jīng)過一些環(huán)節(jié)才能到達(dá)播放端,因此對中間環(huán)節(jié)的質(zhì)量進(jìn)行監(jiān)控,以及根據(jù)這些監(jiān)控來進(jìn)行智能調(diào)度,也是非常重要的訴求。七牛直播云平臺框架接下來我們分享這個流分發(fā)網(wǎng)絡(luò)中涉及到的實(shí)時流處理平臺的架構(gòu)。這里我們先簡單的來看下這個實(shí)時流處理平臺包含哪些內(nèi)容。這是我們直播云平臺的框架圖,我們今天分享的內(nèi)容主要集中于存儲與回訪、轉(zhuǎn)碼和內(nèi)容處理以及內(nèi)容識別平臺的架構(gòu),同時它還包含實(shí)時轉(zhuǎn)存儲的能力,也就是圖中間的綠色部分所表示的模塊。為什么需要實(shí)時轉(zhuǎn)碼?在分享實(shí)時轉(zhuǎn)碼平臺架構(gòu)之前,我們先來回答一個問題,為什么需要對視頻流進(jìn)行實(shí)時轉(zhuǎn)碼?從字面上看,實(shí)時性的要求是直播場景決定的,它需要保證比
6、較低的延時。那么,為什么需要轉(zhuǎn)碼?編碼器的多樣性:我們知道,經(jīng)過30年的長時間發(fā)展,市場上出現(xiàn)了無數(shù)多的音視頻編碼器和編碼格式。同時,現(xiàn)在主流的終端設(shè)備和操作系統(tǒng)有好幾個,它們對于不同編碼解碼器的支持都不一樣。這就導(dǎo)致了在不同設(shè)備不同平臺之間播放相同的視頻可能存在差異。帶寬限制:現(xiàn)在移動3G和4G網(wǎng)絡(luò)已經(jīng)非常普及了,他們的速度也相對較快,但還是存在很多弱網(wǎng)環(huán)境,比如偏遠(yuǎn)地區(qū)戶外,或者大型活動現(xiàn)場。要保證在不同網(wǎng)絡(luò)條件下都能流暢的在線觀看視頻,網(wǎng)絡(luò)自適應(yīng)的傳輸不同碼率的視頻是目前最好的選擇。終端設(shè)備的多樣性還體現(xiàn)在另外一方面,也即它們尺寸的多樣性。設(shè)備屏幕尺寸的大小決定了在它們上面呈現(xiàn)視頻的最佳
7、分辨率,因此為了在不同設(shè)備下都能獲得最佳用戶體驗,需要在服務(wù)端準(zhǔn)備多種不同尺寸的視頻流。大規(guī)模實(shí)時轉(zhuǎn)碼面臨的挑戰(zhàn)回答了為什么需要實(shí)時轉(zhuǎn)碼之后,我們再來看一下它面臨哪些挑戰(zhàn)。網(wǎng)絡(luò)方面的架構(gòu)之前卜赫已經(jīng)分享過,我們假設(shè)轉(zhuǎn)碼所需數(shù)據(jù)能夠通過LiveNet實(shí)時流網(wǎng)絡(luò)獲取到,同時轉(zhuǎn)碼結(jié)果也能夠通過實(shí)時流網(wǎng)絡(luò)LiveNet實(shí)時傳輸出去。因此,這里講的第一個挑戰(zhàn)低延時只涉及到編解碼效率和內(nèi)部路由環(huán)節(jié)。其次,直播云服務(wù)需要向很多企業(yè)級公司提供服務(wù),面臨非常大的終端用戶量,這是另外一個挑戰(zhàn)。最后,應(yīng)國家有關(guān)部門和業(yè)務(wù)的需求,直播過程中產(chǎn)生的數(shù)據(jù)需要存檔。在某些業(yè)務(wù)場景教育直播,直播過程產(chǎn)生的數(shù)據(jù)具有非常大的存檔
8、價值。面對海量的直播流,如何將其實(shí)時存儲起來是另一個較大的挑戰(zhàn)。低延時帶來的挑戰(zhàn)我們先來看一下低延時帶來的挑戰(zhàn)。要做到較低的延時,首先意味著轉(zhuǎn)碼性能需提升,也即,要么使用性能更好的硬件(比如GPU,要么優(yōu)化編碼解碼器的能力,降低編碼延遲?;蛘?,減少關(guān)鍵幀間隔,增加關(guān)鍵幀出現(xiàn)的頻率,這樣能夠讓播放器以較高頻率獲取到關(guān)鍵幀,直接解碼播放,降低等待關(guān)鍵幀的延時。當(dāng)然,這樣做也有它的風(fēng)險,關(guān)鍵幀的增加會增大視頻流的編碼碼率,或者在碼率恒定的情況下會降低關(guān)鍵幀的編碼質(zhì)量,影響關(guān)鍵幀進(jìn)而影響整個視頻流的質(zhì)量。低延時帶來的第二個挑戰(zhàn)在于,需盡量縮短流在服務(wù)端內(nèi)的傳輸路徑,動態(tài)調(diào)整流在服務(wù)端內(nèi)的轉(zhuǎn)發(fā)路由。這在
9、傳統(tǒng)的樹狀網(wǎng)絡(luò)結(jié)構(gòu)下是難以做到的,之前卜赫分享過實(shí)時流網(wǎng)絡(luò)LiveNet中流的最優(yōu)傳輸路徑的選擇,這里面不再介紹。海量終端用戶帶來的挑戰(zhàn)接下來我們再看看,海量終端用戶對于對于實(shí)時流處理服務(wù)來說意味著什么。高并發(fā)、高在線:大量用戶同時直播和訪問,意味著同時有大量并發(fā)請求需要處理。直播是一種實(shí)時性非常強(qiáng)的在線服務(wù),每一個在線用戶都需要維持一個長連接,因此對于服務(wù)端IO和并發(fā)能力的要求非常高。此外,每一路用戶推流都可能意味著多路不同的轉(zhuǎn)碼和處理,處理平臺不僅是IO密集型服務(wù),也是CPU密集型服務(wù)。海量終端用戶雖然大都集中在北上廣地區(qū),但在龐大的用戶基數(shù)基礎(chǔ)上,長尾用戶的覆蓋面也非常廣泛,因此除了需要
10、在網(wǎng)絡(luò)上做好規(guī)劃之外,轉(zhuǎn)碼資源的合理利用也需要動態(tài)規(guī)劃和調(diào)整。實(shí)時轉(zhuǎn)存帶來的挑戰(zhàn)流的實(shí)時轉(zhuǎn)存是數(shù)據(jù)處理平臺所需面對的另一個挑戰(zhàn),對于一個企業(yè)級直播云服務(wù)來說,海量的用戶意味著:1.出口網(wǎng)絡(luò)帶寬占用的提升。2.海量視頻文件的存儲。海量的回訪意味著大規(guī)模的下載分發(fā)。幸好七牛是做云存儲服務(wù)開始的,可以輕松應(yīng)對這些海量視頻文件的存儲和分發(fā)需求。去中心化網(wǎng)絡(luò)拓?fù)淞私馔陮?shí)時流轉(zhuǎn)碼服務(wù)面臨的挑戰(zhàn)之后,我們再來看一下我們七牛針對這些挑戰(zhàn)打造的實(shí)時流網(wǎng)絡(luò)LiveNet是如何進(jìn)行實(shí)時轉(zhuǎn)碼的圖中的5個實(shí)心圈表示5個IDC機(jī)房內(nèi)的收流、轉(zhuǎn)碼和分發(fā)節(jié)點(diǎn),一個節(jié)點(diǎn)內(nèi)包含多個部署不同服務(wù)的集群,比如收流、分發(fā)和不同的轉(zhuǎn)碼、
11、處理等功能。圖中可以看出,紅線表示的數(shù)據(jù)流1從A節(jié)點(diǎn)收流之后轉(zhuǎn)發(fā)到B節(jié)點(diǎn),在B節(jié)點(diǎn)轉(zhuǎn)碼之后再分發(fā)出去。藍(lán)線表示的數(shù)據(jù)流2從E節(jié)點(diǎn)收流之后立即進(jìn)行轉(zhuǎn)碼,轉(zhuǎn)碼后的流經(jīng)過C節(jié)點(diǎn)轉(zhuǎn)發(fā)到達(dá)B節(jié)點(diǎn),再通過B節(jié)點(diǎn)轉(zhuǎn)發(fā)出去。同樣的,數(shù)據(jù)流3的轉(zhuǎn)碼和流向也類似。至于為什么有些數(shù)據(jù)流是在靠近推流端的收流節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼,而有些數(shù)據(jù)流是在靠近播放端的節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼,我們后面會討論。從這張圖可以看出,只要有需要,任意一個IDC機(jī)房內(nèi)都可以部署數(shù)據(jù)處理服務(wù),同時可以在流轉(zhuǎn)發(fā)環(huán)節(jié)的任意一站進(jìn)行流的處理。這樣的靈活性極大的保證了節(jié)點(diǎn)故障下的容錯度,以及節(jié)點(diǎn)計算和IO能力的動態(tài)調(diào)配。收流、轉(zhuǎn)碼節(jié)點(diǎn)服務(wù)部署接下來我們再看看下每個收流
12、、轉(zhuǎn)碼節(jié)點(diǎn)里面服務(wù)部署的大致架構(gòu)怎么樣。首先,在流的入口層有一個網(wǎng)關(guān)負(fù)責(zé)收流,同時會在這里對其是否需要轉(zhuǎn)碼,以及轉(zhuǎn)碼參數(shù)如何等做業(yè)務(wù)判斷。然后,網(wǎng)關(guān)將收到的流轉(zhuǎn)發(fā)到后端的負(fù)載均衡器。對于需要最做處理的流,負(fù)載均衡器直接將其分發(fā)給后端的業(yè)務(wù)服務(wù)進(jìn)行處理,如HLS切片服務(wù),或者RTMP轉(zhuǎn)碼服務(wù),以及鑒黃等內(nèi)容識別服務(wù)。處理完成后,處理服務(wù)輸出相應(yīng)的TS流或者RTMP流到下一個路由節(jié)點(diǎn)進(jìn)行后續(xù)處理,或者直接由它轉(zhuǎn)發(fā)到目標(biāo)終端用戶。為了最大化資源的利用率,節(jié)點(diǎn)上的切片服務(wù)或者轉(zhuǎn)碼服務(wù)可以動態(tài)部署,在流量較小的時候不需要部署足夠多的服務(wù)在那里空轉(zhuǎn)。但為了避免請求過來時候的預(yù)熱過程導(dǎo)致延遲的增加,每個節(jié)點(diǎn)
13、上的服務(wù)不完全處于冷卻狀態(tài),負(fù)載均衡器背后至少有一個在線服務(wù)可以持續(xù)等待請求,請求量增加之后再動態(tài)調(diào)整服務(wù)的副本數(shù)。收流、轉(zhuǎn)碼節(jié)點(diǎn)服務(wù)部署rtrnp!ts流網(wǎng)關(guān)rtmo流-w.-rtmp流實(shí)時流處理服務(wù)的特點(diǎn)從以上去中心化的網(wǎng)絡(luò)結(jié)構(gòu)和流實(shí)時處理服務(wù)部署結(jié)構(gòu)圖可以看出,這樣的架構(gòu)更為輕量,同時又能處理海量、高并發(fā)的流處理請求,同時由于單個節(jié)點(diǎn)成本較低,可以以極低的成本快速的擴(kuò)容,能夠覆蓋更為廣泛的地域。其次,由于實(shí)時流分發(fā)網(wǎng)絡(luò)的主要職責(zé)在于流的分發(fā),是典型的網(wǎng)絡(luò)io密集型服務(wù),因此節(jié)點(diǎn)上的計算能力可能會有浪費(fèi)。為了滿足實(shí)時轉(zhuǎn)碼的需求,可以在不影響流分發(fā)的情況下通過充分利用節(jié)點(diǎn)計算能力,做到流的就
14、近處理,以保證轉(zhuǎn)碼性能和低延時。同時,分散式的流數(shù)據(jù)處理服務(wù)能夠降低錄制存儲對于上傳帶寬的要求,充分利用七牛對象云存儲的分布式就近上傳能力化解單節(jié)點(diǎn)帶寬瓶頸。最后,作為實(shí)時流處理服務(wù)的一大特點(diǎn)之一,我們來解釋一下為什么有些數(shù)據(jù)流是在靠近推流端的收流節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼,而有些數(shù)據(jù)流是在靠近播放端的節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼。我們知道,一般來講,流的目標(biāo)碼率小于原始碼率,這樣的轉(zhuǎn)碼才有意義。因此,對于RTMP流來說,在靠近推流端的收流節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼后,后續(xù)轉(zhuǎn)發(fā)環(huán)節(jié)可以只轉(zhuǎn)發(fā)低碼率的目標(biāo)RTMP流。對于HLS流來說,理論上也是目標(biāo)碼率小于原始碼率,但HTTP是為短連接設(shè)計的,內(nèi)部轉(zhuǎn)發(fā)環(huán)節(jié)效率還是不如RTMP流,因此在靠近
15、播放端的節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼是比較好的選擇。新技術(shù)下的個性化實(shí)時轉(zhuǎn)碼架構(gòu)從前面轉(zhuǎn)碼節(jié)點(diǎn)的部署結(jié)構(gòu)圖可以看出,我們使用了基于Docker容器虛擬化技術(shù)的平臺來調(diào)度轉(zhuǎn)碼服務(wù),它可以幫助我們以服務(wù)的邏輯單元為單元,隔離不同的處理服務(wù)(如切片服務(wù)和轉(zhuǎn)碼服務(wù)),同時又能夠充分利用容器虛擬化的靈活性,快速擴(kuò)容縮容,動態(tài)調(diào)整所需的物理資源。除了隔離性和動態(tài)擴(kuò)容縮容之外,它帶來了一個非常重要的特性,也即將轉(zhuǎn)碼服務(wù)模塊化之后,即可使用個性化的處理服務(wù)替換平臺自帶的處理服務(wù)。例如,可以使用H.265編碼器替換H.264編碼器,使用VP9替換VP8,或者同時支持所有這些編碼器。同時,除了支持水印、截圖和內(nèi)容識別等數(shù)據(jù)處理服
16、務(wù)之外,還可以支持其它個性化的數(shù)據(jù)處理服務(wù)?!綫&AQ1:質(zhì)量監(jiān)控主要監(jiān)控哪些內(nèi)容?A1:我們會監(jiān)控很多東西,比如節(jié)點(diǎn)的狀態(tài)和節(jié)點(diǎn)內(nèi)服務(wù)的狀態(tài),節(jié)點(diǎn)狀態(tài)包括CPU內(nèi)存、網(wǎng)絡(luò)和服務(wù)器句柄數(shù)等。同時會對健康節(jié)點(diǎn)之間的速度進(jìn)行定期測試(預(yù)留足夠的帶寬保證測速的時效性)。另外,除了服務(wù)端節(jié)點(diǎn)質(zhì)量的監(jiān)控之外,還會監(jiān)控直播客戶端的網(wǎng)絡(luò)狀況,以及流的質(zhì)量。Q2這種類型的直播視頻處理環(huán)境,個人想自己搭一個了解相關(guān)技術(shù)能實(shí)現(xiàn)嗎?A2:可以實(shí)現(xiàn)。實(shí)際上直播是一個包含很多技術(shù)的解決方案,幸運(yùn)的是大部分技術(shù)都有開源的實(shí)現(xiàn),比如轉(zhuǎn)碼使用FFmpeg,后端負(fù)載均衡使用Nginx等,服務(wù)資源的隔離和動態(tài)調(diào)度目前也有比較好的開源容器云平臺。Q3:FFmpeg這個轉(zhuǎn)碼視
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年高校博士研究生教師職務(wù)聘任合同范本3篇
- 二零二五年度跨境電子商務(wù)代理銷售合同6篇
- 二零二五年空壓機(jī)行業(yè)市場推廣與銷售合同3篇
- 二零二五年度儲煤場煤炭儲備與智能物流服務(wù)合同3篇
- 2024版土地貸款反擔(dān)保合同范本3篇
- 二零二五年度特殊環(huán)境搬遷及環(huán)保措施合同3篇
- 二零二五版跨境擔(dān)保居間交易合同細(xì)則2篇
- 展會國際物流合同(2篇)
- 二零二五版代駕服務(wù)租賃合同范本(含車輛使用限制條款)2篇
- 二零二五版快遞駕駛員職業(yè)發(fā)展規(guī)劃與聘用合同3篇
- 公共政策分析 課件 第8章政策評估;第9章政策監(jiān)控
- 人教版八年級上學(xué)期物理期末復(fù)習(xí)(壓軸60題40大考點(diǎn))
- 企業(yè)環(huán)保知識培訓(xùn)課件
- 2024年度管理評審報告
- 暨南大學(xué)《微觀經(jīng)濟(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)藥銷售合規(guī)培訓(xùn)
- DB51-T 5038-2018 四川省地面工程施工工藝標(biāo)準(zhǔn)
- 三年級數(shù)學(xué)(上)計算題專項練習(xí)附答案
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- 2024年廣東省深圳市中考英語試題含解析
- GB/T 16288-2024塑料制品的標(biāo)志
評論
0/150
提交評論