愛奇藝廣告平臺的架構設計與演進之路
自動運維系統(tǒng)架構
1. 問題發(fā)現(xiàn)和分析定位
業(yè)界通用的方式是全鏈路追蹤系統(tǒng)(dapper & zipkip)和智能運維,我們也在正在進行這方面的工作;除此之外,我們還做了另外兩件事情:異常檢測和 Staging 環(huán)境建設;
異常檢測:主要是從業(yè)務層面發(fā)現(xiàn)各種宏觀指標的異常,對于廣告投放系統(tǒng)、庫存量、曝光量、點擊率和計費率等都是非常受關注的業(yè)務指標;異常檢測系統(tǒng)可以預測業(yè)務指標在當前時刻的合理范圍值,然后跟實時數(shù)據(jù)作對比;如果實時數(shù)據(jù)超出預測范圍就會發(fā)出報警并附帶分析數(shù)據(jù)輔助進行問題分析;這部分工作由在線服務和數(shù)據(jù)團隊共同完成,這個系統(tǒng)有效地提高了問題發(fā)現(xiàn)的效率。
愛奇藝廣告平臺的架構設計與演進之路
Staging 環(huán)境建設:系統(tǒng)變更(包括運維和新功能發(fā)布)是引起線上故障的主要原因,所以我們需要一個系統(tǒng)幫助我們以很小的代價快速發(fā)現(xiàn)變更異常。
在功能發(fā)布時大家都會采用梯度發(fā)布的方法,譬如先升級 5% 的服務,然后觀察核心指標的變化,沒有明顯異常就繼續(xù)推進直到全量;這個方法并不是總能有效發(fā)現(xiàn)問題,假如一個新功能中的 bug 會導致 1% 的訂單曝光下降 50%,那么在全量發(fā)布之后系統(tǒng)的整體曝光量也只有 0.5% 的變化,也可能因為其他訂單的填充使得整體曝光量沒有變化,所以僅通過整體曝光量很難發(fā)現(xiàn)這個問題。只有對所有訂單的曝光量進行對比分析才能準確地發(fā)現(xiàn)這個問題。
我們在實踐中利用向量余弦相似度來發(fā)現(xiàn)系統(tǒng)變更引起異常,即把一段時間內(5min)曝光的廣告數(shù)量轉換成向量并計算余弦相似度。那么如何得到兩個向量呢?可以按照梯度發(fā)布的時間進行分割前后各生成一個向量,這個方法不夠健壯,不同時間的向量本身就有一定的差異。
我們是這樣來解決的:部署一個獨立的投放環(huán)境(我們稱為 Staging 環(huán)境,相對的原本的投放環(huán)境稱為 Base 環(huán)境)承載線上的小流量(譬如 3%),所有的系統(tǒng)變更都先在這里進行;然后用 Staging 環(huán)境的向量與 Base 環(huán)境的向量進行相似度計算。
因為對差異非常敏感,使用余弦相似度做監(jiān)控會有誤報發(fā)生;不過這個并不難解決,通過一些 bad case 的分析,我們定位并消除了兩個環(huán)境之間的差異(非 bug)因素;在正常情況下兩個環(huán)境的相似度會保持在 95% 左右,并在遇到真正的異常時會有明顯的下降觸發(fā)報警。Staging 環(huán)境及相似度檢測功能在實踐中多次幫助我們發(fā)現(xiàn)系統(tǒng)異常。
上篇:
下篇: