大規模實時流處理平台架構 zz

2022-09-10 19:24:18 字數 2490 閱讀 1490

接下來我們分享這個流分發網路中涉及到的實時流處理平台的架構。

這裡我們先簡單的來看下這個實時流處理平台包含哪些內容。這是我們「直播雲平台」的框架圖,我們今天分享的內容主要集中於「儲存與回訪」、「轉碼和內容處理」以及「內容識別」平台的架構,同時它還包含實時轉儲存的能力,也就是圖中間的綠色部分所表示的模組。

從字面上看,實時性的要求是直播場景決定的,它需要保證比較低的延時。那麼,為什麼需要轉碼?

回答了為什麼需要實時轉碼之後,我們再來看一下它面臨哪些挑戰。網路方面的架構之前卜赫已經分享過,我們假設轉碼所需資料能夠通過 livenet 實時流網路獲取到,同時轉碼結果也能夠通過實時流網路 livenet 實時傳輸出去。因此,這裡講的第乙個挑戰「低延時」只涉及到編譯碼效率和內部路由環節。

其次,直播雲服務需要向很多企業級公司提供服務,面臨非常大的最終使用者量,這是另外乙個挑戰。

最後,應國家有關部門和業務的需求,直播過程中產生的資料需要存檔。在某些業務場景教育直播,直播過程產生的資料具有非常大的存檔價值。面對海量的直播流,如何將其實時儲存起來是另乙個較大的挑戰。

「低延時」帶來的第二個挑戰在於,需盡量縮短流在服務端內的傳輸路徑,動態調整流在服務端內的**路由。這在傳統的樹狀網路結構下是難以做到的,之前卜赫分享過實時流網路 livenet 中流的最優傳輸路徑的選擇,這裡面不再介紹。

接下來我們再看看,海量終端使用者對於對於實時流處理服務來說意味著什麼。

2. 海量終端使用者雖然大都集中在北上廣地區,但在龐大的使用者基數基礎上,長尾使用者的覆蓋面也非常廣泛,因此除了需要在網路上做好規劃之外,轉碼資源的合理利用也需要動態規劃和調整。

流的實時轉存是資料處理平台所需面對的另乙個挑戰,對於乙個企業級直播雲服務來說,海量的使用者意味著:

1. 出口網路頻寬占用的提公升。

了解完實時流轉碼服務面臨的挑戰之後,我們再來看一下我們七牛針對這些挑戰打造的實時流網路 livenet 是如何進行實時轉碼的。

接下來我們再看看下每個收流、轉碼節點裡面服務部署的大致架構怎麼樣。

首先,在流的入口層有乙個閘道器負責收流,同時會在這裡對其是否需要轉碼,以及轉碼引數如何等做業務判斷。然後,閘道器將收到的流**到後端的負載均衡器。對於需要最做處理的流,負載均衡器直接將其分發給後端的業務服務進行處理,如 hls 切片服務,或者 rtmp 轉碼服務,以及鑑黃等內容識別服務。處理完成後,處理服務輸出相應的 ts 流或者 rtmp 流到下乙個路由節點進行後續處理,或者直接由它**到目標終端使用者。

從以上去中心化的網路結構和流實時處理服務部署結構圖可以看出,這樣的架構更為輕量,同時又能處理海量、高併發的流處理請求,同時由於單個節點成本較低,可以以極低的成本快速的擴容,能夠覆蓋更為廣泛的地域。

其次,由於實時流分發網路的主要職責在於流的分發,是典型的網路 io 密集型服務,因此節點上的計算能力可能會有浪費。為了滿足實時轉碼的需求,可以在不影響流分發的情況下通過充分利用節點計算能力,做到流的就近處理,以保證轉碼效能和低延時。同時,分布式的流資料處理服務能夠降低錄製儲存對於上傳頻寬的要求,充分利用七牛物件雲儲存的分布式就近上傳能力化解單節點頻寬瓶頸。

我們知道,一般來講,流的目標位元速率小於原始位元速率,這樣的轉碼才有意義。因此,對於 rtmp 流來說,在靠近推流端的收流節點進行轉碼後,後續**環節可以只**低位元速率的目標 rtmp 流。

從前面轉碼節點的部署結構圖可以看出,我們使用了基於 docker 容器虛擬化技術的平台來排程轉碼服務,它可以幫助我們以服務的邏輯單元為單元,隔離不同的處理服務(如切片服務和轉碼服務),同時又能夠充分利用容器虛擬化的靈活性,快速擴容縮容,動態調整所需的物理資源。

除了隔離性和動態擴容縮容之外,它帶來了乙個非常重要的特性,也即將轉碼服務模組化之後,即可使用個性化的處理服務替換平台自帶的處理服務。例如,可以使用 h.265 編碼器替換 h.264 編碼器,使用 vp9 替換 vp8,或者同時支援所有這些編碼器。

同時,除了支援水印、截圖和內容識別等資料處理服務之外,還可以支援其它個性化的資料處理服務。

q1:質量監控主要監控哪些內容?a1:我們會監控很多東西,比如節點的狀態和節點內服務的狀態,節點狀態包括 cpu、記憶體、網路和伺服器控制代碼數等。同時會對健康節點之間的速度進行定期測試(預留足夠的頻寬保證測速的時效性)。另外,除了服務端節點質量的監控之外,還會監控直播客戶端的網路狀況,以及流的質量。

a2:可以實現。實際上直播是乙個包含很多技術的解決方案,幸運的是大部分技術都有開源的實現,比如轉碼使用 ffmpeg,後端負載均衡使用 nginx 等,服務資源的隔離和動態排程目前也有比較好的開源容器雲平台。

q5:有可操作的 demo 嗎?除了 sdk 之外,我們也做了一些 demo 可供提前體驗:

1. 安卓:

**:2. ios:

**:

a6:這是乙個很有價值的問題。我們的架構和傳統 cdn 不太一樣。a 節點轉碼好之後,會上報狀態到全域性排程中心,排程中心將其作為乙個源站存在,這樣別的節點可以「回源」到它這裡,簡化了同步的邏輯。

機器學習大規模學習平台架構

對於已有的開源的機器學習框架,很多都是單機環境下部署的,但是對於大公司層面的機器學習的應用需求,簡單的單機,分布式spark機器學習平台很難滿足公司的大資料應用需求,因為不僅要求具有正確性,還要求高效性和穩定性。這裡面存在很多的問題,比如模型如何在多台機器上跑,引數如何分布在多台伺服器上,構成par...

python實現Simhash處理大規模文字相似度

simhash 顧名思義,通過hash值比較相似度,通過兩個字串得出來的hash值,進行異或操作,然後得到相差的個數,數字越大則差異越大。1 用分詞工具 jieba nlpir 哈工大分詞器等 對字串進行分詞 去除停用詞,英文除外 seg jieba.cut str keyword jieba.an...

OpenPAI 大規模人工智慧集群管理平台

微軟亞洲研究院 2018年5月22日,在微軟舉辦的 新一代人工智慧開放科研教育平台暨中國高校人工智慧科研教育高峰論壇 上,微軟亞洲研究院宣布,攜手北京大學 中國科學技術大學 西安交通大學和浙江大學四所國內頂尖高校共建新一代人工智慧開放科研教育平台,以推動中國人工智慧領域科研與教育事業的發展。作為由微...