原文 https://medium.com/netflix techblog/re architecting the video gatekeeper f7b0ac2f6b00 本文介紹了了內容配置工程團隊使用Hollow,一個Netflix OSS技術,重新架構與簡化我們內容管道上的基礎組件 在流 ...
原文 https://medium.com/netflix-techblog/re-architecting-the-video-gatekeeper-f7b0ac2f6b00
本文介紹了了內容配置工程團隊使用Hollow,一個Netflix OSS技術,重新架構與簡化我們內容管道上的基礎組件 - 在流程中交付巨大業務價值。
上下文
每個在Netflix服務上的電影和秀都被精心處理以提供最佳的觀看體驗。團隊對處理主要負責標題運營(Title Operation)。標題運營會確認,除了:
- 我們確保合同符合規範 - 我們為每個標題配置的視頻日期時間段與位置是正確的。
- 視頻的標題,字幕,第二音軌都被翻譯並被正確分發到世界各地。
- 標題名與概要都可用並被翻譯。
- 每個國家都有合適的觀影等級
當標題達到了以上需求的最低要求,它就可以發佈到服務上上線。Gatekeeper是在Netflix負責評估網站上視頻和資產的“活躍度”。在Gatekeeper批准前標題對於會員是不可見的 - 如果它驗證不了設置,它會指出從客戶體驗基線上缺了什麼來輔助標題運營(Title Operation)。
Gatekeeper通過聚合多個上游系統的數據來完成預處理任務,使用合適的業務邏輯,生產和輸出每個國家每個視頻的詳細狀態。
技術
Hollow, 是我們幾年前發佈的OSS技術。並被描述為一種靠近緩存的全高密度(total high-density near cache)技術:
全:在每個節點上都緩存著這個數據集 - 沒有驅逐策略,沒有緩存命中丟失。
高密度:編碼,解碼,反重覆技術都被用來數據集上的記憶體指紋。
靠近:在每個需要存取數據集的實例上都有RAM上的緩存。
對於這個全(total)技術有一個令人興奮的內容 - 因為我們不需要擔心清除記憶體中的數據項,我們可以對記憶體中的數據集展示做一些假設與預計算,沒有這個特性是不可能的。結果是,對許多數據集,提高了很大的記憶體使用效率。而在傳統的部分緩存方案上你可能會想是否你只緩存了5%的數據集,或者你需要被10%保留足夠的空間用來得到一個可接受的命中/丟失率 - 使用同樣的記憶體Hollow可以緩存100%的數據集數據並得到100%的命中率。
很明顯,如果你有100%的命中率,你可以消除所有訪問你數據的IO需求 - 並可以更有效的提高數據訪問效率,可以開啟更多可能性。
現狀
在不久以前,Gatekeeper是一個完全的事件驅動系統。當任何上游系統對視頻有改動,系統會發送給Gatekeeper發送一個事件。Gatekeeper會對那條事件進行響應,進入每一個它的上游服務,收集必要的輸入數據來評估視頻與它的對應資產的活躍性。它會產生一條輸出記錄來輸出這條視頻的詳細狀態。
這個模型有一些相關的問題:
這個進程完全與IO綁定,並對上游系統產生了很大的負載。
因此,這些事件會將一天的吞吐隊列化並產生處理的延遲,導致標題的處理不能及時的上線。
更壞的,事件可能偶爾丟失,這將導致標題不能上線,知道某一個標題運營人員發現可能有問題。
為了減輕這些問題可以“清掃”目錄讓視頻可以匹配特定的查詢條件(比如,計划下周上線)可以讓事件自動註入到處理隊列中。不幸的是,這種方式會往隊列中增加更多的事件,會使問題更加惡化。
很明顯,很有必要改變方向。
本文來自微信公眾號「麥芽麵包,id「darkjune_think」
轉載請註明。微信掃一掃關註公眾號。
交流Email: [email protected]