于是在2014 年底,開發(fā)者們重新回顧了一遍 Borg 和 Omega 相關(guān)的信息,開始了第二代NBE,也就是今天的主角——Project Eru——的開發(fā)。這一次他們拋棄了以前做一個PaaS的思路,而是決定去實現(xiàn)一個類似于Borg的服務(wù)編排和調(diào)度平臺。

第二代NBE——Project Eru

到目前為止,Eru平臺可以混編Offline和Online的服務(wù)(binary/script),對于資源尤其是CPU資源實現(xiàn)了自由維度(0.1、0.01、0.001等)的彈性分配,使用 Redis 作為數(shù)據(jù)總線對外進行消息發(fā)布,動態(tài)感知集群所有的 Containers 狀態(tài)并監(jiān)控其各項數(shù)據(jù)等。此外,把基于Docker的Image Layer特性和Git version結(jié)合起來,實現(xiàn)了自動化的 build/test 流程,統(tǒng)一了線上部署環(huán)境。同時解決了 Runtime 的污染問題,使得業(yè)務(wù)能快速地擴容和縮容。系統(tǒng)架構(gòu)如下圖所示。


看上去變化不大,實際上內(nèi)部的設(shè)計和反饋回路等與第一代截然不同。業(yè)務(wù)層方面,在邏輯上使用了類似于Kubernetes的Pod來描述一組資源,使得Eru有了Container的組資源控制的能力。但是和 Kubernetes 不同的是,Pod 僅僅是邏輯上的隔離,主要用于業(yè)務(wù)的區(qū)分,而實際的隔離則基于網(wǎng)絡(luò)層。對于 Dockefile,這里不允許業(yè)務(wù)方自行寫Dockerfile,而是通過標準化的 App.yaml統(tǒng)一Dockerfile的生成,通用化的 Entrypoint 則滿足了業(yè)務(wù)一份代碼多個角色的復(fù)用和切換,使得任何業(yè)務(wù)幾乎都可以完全無痛地遷移上來。

另外,第一代NBE是個完整的閉環(huán),一個業(yè)務(wù)由生到死都有NBE本身各個組件的身影。但在Eru中放棄了以前考慮的完整閉環(huán)設(shè)計。由于第一代NBE打通了項目整個生命周期的每一個環(huán)節(jié),但實際上落地起來困難重重,并且使得Dot(Master)的狀態(tài)太重沒法 Scale Out,因為它是單點部署,可靠性上會糟糕一些。所以Eru中每一個Core都是一個完整的無狀態(tài)的邏輯核心,使其在能夠Scale Out的同時可靠性也比 NBE 第一代要健壯得多。

因此,在這個體系下,業(yè)務(wù)推薦會根據(jù)自身業(yè)務(wù)特性,通過監(jiān)控自身數(shù)據(jù)、訂閱 Eru 廣播、調(diào)用Eru-Core的API ,實現(xiàn)復(fù)雜的自定義的部署擴容等操作。在系統(tǒng)中,并會去強行干涉或者建立一系列規(guī)則去限定這些事情,這也是它不屬于PaaS的原因。

總的來說,Eru平臺項目的設(shè)計思路是以組合為主,依托于現(xiàn)有的 Redis 解決方案,通過“消息”將各個組件串起來,從而使得整個平臺的擴展性和自由度達到業(yè)務(wù)的需求。除了一些特定的方法,比如構(gòu)建 Image,其他的諸如構(gòu)建 Dockerfile,如何啟動應(yīng)用等,均不做強一致性的范式去規(guī)范業(yè)務(wù)方/服務(wù)方怎么去做,當然這和芒果TV本身體系架構(gòu)有關(guān),但主要還是為了減少落地成本。

引入公有云服務(wù),構(gòu)建360度方案

為了同時抓住核心業(yè)務(wù)外和邊緣性業(yè)務(wù),又不能讓突發(fā)業(yè)務(wù)影響到核心業(yè)務(wù)的發(fā)展,芒果TV目前選擇的是私有云加公有云的混合云解決方案。彭哲夫所負責的平臺部門核心技術(shù)團隊,已經(jīng)圍繞核心業(yè)務(wù)打造了屬于自己的私有云業(yè)務(wù)平臺,以確保業(yè)務(wù)的正常運行。而隨著業(yè)務(wù)量的增加,以及突發(fā)事件的頻起,芒果TV本地私有平臺已經(jīng)不能滿足全部業(yè)務(wù)的需求,但自建數(shù)據(jù)中心來處理并發(fā)流量,又會造成資源浪費、增加成本負載。基于這些情況,芒果TV開始積極尋找公有云服務(wù)提供商,而七牛作為候選方案提供商,針對轉(zhuǎn)播和直播兩類業(yè)務(wù)分別提出了360度的解決方案,以備具體場景的需求。

首先,七牛采用優(yōu)化的EC技術(shù),使單位存儲的冗余度從傳統(tǒng)3副本降到1.125,并率先達到了16個9的可靠性。由于廣電屬于受到監(jiān)管比較嚴格的傳統(tǒng)行業(yè),客戶也會對云存儲存在的傳輸性能和隱秘性等方面感到擔憂。對此,一份數(shù)據(jù)在上傳時,七牛先將其打散,每一臺服務(wù)器都是子因素,分批量將這些文件存在對應(yīng)的服務(wù)器上,從而使任何一臺服務(wù)器的宕機都不會影響其他備份服務(wù)器的正常運轉(zhuǎn)。

同時,將媒體文件進行切片加密保存,最大程度保證了數(shù)據(jù)的私密性。在音視頻處理方面,七牛有快速轉(zhuǎn)碼、視頻水印、打點、快速轉(zhuǎn)格式等在線應(yīng)用,并且將計算資源作為一個池,可以進行動態(tài)擴張和縮小。在內(nèi)容分發(fā)方面,七牛推出了自研的多CDN管理平臺,能夠幫助用戶透明并自助式地監(jiān)控和管理各個CDN節(jié)點,在上傳、存儲、下載、分發(fā)等各個環(huán)節(jié)做好健康管理,實現(xiàn)一站式服務(wù)。

結(jié)語

強有力的技術(shù)支撐平臺是保障業(yè)務(wù)得以快步發(fā)展的堅實后盾,這一事實無疑在芒果TV得到了更深刻的印證。同時,芒果TV引入云服務(wù)打造360度技術(shù)方案,不僅節(jié)約了大量的時間和成本,更幫芒果TV在上線一年半的時間內(nèi)迅速實現(xiàn)業(yè)務(wù)擴展,搶占了時間優(yōu)勢和發(fā)展先機。相信在互聯(lián)網(wǎng)+風口下,謀求突破和轉(zhuǎn)型的廣電機構(gòu)/企業(yè)還有很多,云服務(wù)勢必會為這次優(yōu)雅轉(zhuǎn)身起到相當大的助推作用。

分享到

fanz

相關(guān)推薦