原文 https://medium.com/netflix-techblog/re-architecting-the-video-gatekeeper-f7b0ac2f6b00
本文介紹了了內(nèi)容配置工程團(tuán)隊(duì)使用Hollow抛猫,一個(gè)Netflix OSS技術(shù)洪规,重新架構(gòu)與簡(jiǎn)化我們內(nèi)容管道上的基礎(chǔ)組件 - 在流程中交付巨大業(yè)務(wù)價(jià)值。
上下文
每個(gè)在Netflix服務(wù)上的電影和秀都被精心處理以提供最佳的觀看體驗(yàn)念链。團(tuán)隊(duì)對(duì)處理主要負(fù)責(zé)標(biāo)題運(yùn)營(yíng)(Title Operation)禀综。標(biāo)題運(yùn)營(yíng)會(huì)確認(rèn)截驮,除了:
- 我們確保合同符合規(guī)范 - 我們?yōu)槊總€(gè)標(biāo)題配置的視頻日期時(shí)間段與位置是正確的捌浩。
- 視頻的標(biāo)題啄糙,字幕笛臣,第二音軌都被翻譯并被正確分發(fā)到世界各地。
- 標(biāo)題名與概要都可用并被翻譯隧饼。
- 每個(gè)國(guó)家都有合適的觀影等級(jí)
當(dāng)標(biāo)題達(dá)到了以上需求的最低要求捐祠,它就可以發(fā)布到服務(wù)上上線。Gatekeeper是在Netflix負(fù)責(zé)評(píng)估網(wǎng)站上視頻和資產(chǎn)的“活躍度”桑李。在Gatekeeper批準(zhǔn)前標(biāo)題對(duì)于會(huì)員是不可見(jiàn)的 - 如果它驗(yàn)證不了設(shè)置,它會(huì)指出從客戶體驗(yàn)基線上缺了什么來(lái)輔助標(biāo)題運(yùn)營(yíng)(Title Operation)窿给。
Gatekeeper通過(guò)聚合多個(gè)上游系統(tǒng)的數(shù)據(jù)來(lái)完成預(yù)處理任務(wù)贵白,使用合適的業(yè)務(wù)邏輯,生產(chǎn)和輸出每個(gè)國(guó)家每個(gè)視頻的詳細(xì)狀態(tài)崩泡。
技術(shù)
Hollow, 是我們幾年前發(fā)布的OSS技術(shù)禁荒。并被描述為一種靠近緩存的全高密度(total high-density near cache)技術(shù):
全:在每個(gè)節(jié)點(diǎn)上都緩存著這個(gè)數(shù)據(jù)集 - 沒(méi)有驅(qū)逐策略,沒(méi)有緩存命中丟失角撞。
高密度:編碼呛伴,解碼勃痴,反重復(fù)技術(shù)都被用來(lái)數(shù)據(jù)集上的內(nèi)存指紋。
靠近:在每個(gè)需要存取數(shù)據(jù)集的實(shí)例上都有RAM上的緩存热康。
對(duì)于這個(gè)全(total)技術(shù)有一個(gè)令人興奮的內(nèi)容 - 因?yàn)槲覀儾恍枰獡?dān)心清除內(nèi)存中的數(shù)據(jù)項(xiàng)沛申,我們可以對(duì)內(nèi)存中的數(shù)據(jù)集展示做一些假設(shè)與預(yù)計(jì)算,沒(méi)有這個(gè)特性是不可能的姐军。結(jié)果是铁材,對(duì)許多數(shù)據(jù)集,提高了很大的內(nèi)存使用效率奕锌。而在傳統(tǒng)的部分緩存方案上你可能會(huì)想是否你只緩存了5%的數(shù)據(jù)集著觉,或者你需要被10%保留足夠的空間用來(lái)得到一個(gè)可接受的命中/丟失率 - 使用同樣的內(nèi)存Hollow可以緩存100%的數(shù)據(jù)集數(shù)據(jù)并得到100%的命中率。
很明顯惊暴,如果你有100%的命中率饼丘,你可以消除所有訪問(wèn)你數(shù)據(jù)的IO需求 - 并可以更有效的提高數(shù)據(jù)訪問(wèn)效率,可以開(kāi)啟更多可能性辽话。
現(xiàn)狀
在不久以前肄鸽,Gatekeeper是一個(gè)完全的事件驅(qū)動(dòng)系統(tǒng)。當(dāng)任何上游系統(tǒng)對(duì)視頻有改動(dòng)屡穗,系統(tǒng)會(huì)發(fā)送給Gatekeeper發(fā)送一個(gè)事件贴捡。Gatekeeper會(huì)對(duì)那條事件進(jìn)行響應(yīng),進(jìn)入每一個(gè)它的上游服務(wù)村砂,收集必要的輸入數(shù)據(jù)來(lái)評(píng)估視頻與它的對(duì)應(yīng)資產(chǎn)的活躍性烂斋。它會(huì)產(chǎn)生一條輸出記錄來(lái)輸出這條視頻的詳細(xì)狀態(tài)。
這個(gè)模型有一些相關(guān)的問(wèn)題:
這個(gè)進(jìn)程完全與IO綁定础废,并對(duì)上游系統(tǒng)產(chǎn)生了很大的負(fù)載汛骂。
因此,這些事件會(huì)將一天的吞吐隊(duì)列化并產(chǎn)生處理的延遲评腺,導(dǎo)致標(biāo)題的處理不能及時(shí)的上線帘瞭。
更壞的,事件可能偶爾丟失蒿讥,這將導(dǎo)致標(biāo)題不能上線蝶念,知道某一個(gè)標(biāo)題運(yùn)營(yíng)人員發(fā)現(xiàn)可能有問(wèn)題。
為了減輕這些問(wèn)題可以“清掃”目錄讓視頻可以匹配特定的查詢條件(比如芋绸,計(jì)劃下周上線)可以讓事件自動(dòng)注入到處理隊(duì)列中媒殉。不幸的是,這種方式會(huì)往隊(duì)列中增加更多的事件摔敛,會(huì)使問(wèn)題更加惡化廷蓉。
很明顯,很有必要改變方向马昙。
本文來(lái)自微信公眾號(hào)「麥芽面包桃犬,id「darkjune_think」
轉(zhuǎn)載請(qǐng)注明刹悴。微信掃一掃關(guān)注公眾號(hào)。
交流Email: zhukunrong@yeah.net