乾貨 愛奇藝CDN巡檢系統技術解析

2022-06-07 10:42:11 字數 3799 閱讀 8939

小結:

1、中心處理系統

/1/將定製後的巡檢任務拆分,通過配置與任務分發系統、cmdb*(configuration management database

)將派發到邊緣撥測系統

/2/處理邊緣撥測系統返回的撥測結果,進行分析計算

2、資料處理中心將巡檢任務生成系統產生的巡檢任務用例拆分,結合分布式訊息處理框架celery,支援上百萬qps的巡檢用例拆分,秒級將巡檢任務傳送給配置與任務分發系統。

愛奇藝cdn採用混合雲架構,包括自建cdn和商業cdn數萬臺cdn伺服器,為月活超過5億使用者提供服務。混合雲架構可以提公升資源利用率、降低成本,但同時也帶來了軟體與服務變更管理和cdn服務質量監控的困難。軟體與服務變更可以被稱之為運維領域的「阿克琉斯之踵」,稍有不慎就像開啟了「潘多拉魔盒」,愛奇藝自建cdn和商業cdn都在軟體公升級與配置變更、機房割接、伺服器故障下線再重新上線後出現過配置不統

一、檔案不完整等問題導致使用者報障,這是影響愛奇藝cdn服務穩定性的重要問題。在此同時,商業cdn還出現過劫持率較高、非本省覆蓋,定向流量出網的情況。更嚴峻的是,以上很多異常都是使用者報障後才被分析出來,我們很被動,使用者體驗也不好。所以,為了隨時掌握全網數萬臺cdn伺服器的服務情況,同時要保證在cdn伺服器在進行軟體與服務變更後進行上線之前就發現問題,我們設計和實現了cdn巡檢系統。

系統整體架構

愛奇藝巡檢系統目前支援自建和商業cdn的全量ip功能巡檢、定向排程巡檢、覆蓋率與劫持情況巡檢,其中:

覆蓋率與劫持巡檢:驗證提供服務的cdn伺服器是否由本省伺服器提供服務,是否存在劫持情況。

愛奇藝cdn巡檢系統主要包括三個子系統,如圖一為系統架構圖:

1.巡檢任務生成系統:負責數萬臺cdn伺服器的巡檢用例的定製化生成,支援人工定製或者定時觸發巡檢。

2.中心處理系統:愛奇藝cdn巡檢系統核心,負責將定製後的巡檢任務拆分,通過配置與任務分發系統、cmdb將巡檢任務派發到邊緣撥測系統,同時還要處理邊緣撥測系統返回的撥測結果,進行分析計算。

3.邊緣撥測系統:負責自建cdn和商業cdn的撥測,並將撥測結果反饋給巡檢任務中心處理系統,覆蓋移動、聯通、電信、廣電、方正寬頻等多家運營商,20多個省份,包括800多個探測點。

巡檢任務生成系統

巡檢任務生成系統如圖二所示,主要由三部分組成:

圖二 巡檢任務生成系統

2.實時ip庫:由各家cdn實時ip介面匯聚而成,作為巡檢用例生成器的輸入,用於全量ip巡檢用例的生成。

3.巡檢用例生成器:結合巡檢檔案列表與實時ip庫,對檔案新增相應鑑權引數與ip替換,將其「加工」成不同的cdn巡檢用例,寫入redis,供中心處理系統隨時呼叫處理。

技術挑戰

目前愛奇藝使用了多家cdn資源,伺服器高達數萬臺,帶來了兩個挑戰:

1.保證cdn服務ip實時、準確

實時性:我們的做法是要求每家cdn返回的api介面實時動態更新,粒度為5分鐘,新增時間戳進行校驗。

準確性:結合愛奇藝及多個第三方廠商的ip位址庫等位址庫對每乙個ip進行服務區域和運營商識別,將其歸類寫入mysql,用於比對校驗。對於ip總數小於500的廠商,比對時發現差異超過其ip總數的5%進行報警,對於ip總數大於500的廠商,我們將差異擴大到10%,當報警發生時,及時與商業cdn溝通是否發生了故障和流量調整。

2.保證極低的巡檢用例生成錯誤率:每家商業cdn都有不同的訪問規範和要求,需要相容網域名稱和ip等多維度的url生成邏輯,基礎巡檢檔案個數100+,「定製」化的巡檢用例高達數百萬,巡檢用例生成器需要保證生成用例錯誤率小於0.001%。

中心處理系統

作為巡檢系統的「大腦」,中心處理系統需要資料處理中心、cmdb、配置與任務分發系統、智慧型排程系統的協作與配合,如圖三所示,完成複雜的巡檢測試任務,其中:

圖三 中心處理系統

資料處理中心:資料處理中心將巡檢任務生成系統產生的巡檢任務用例拆分,結合分布式訊息處理框架celery,支援上百萬qps的巡檢用例拆分,秒級將巡檢任務傳送給配置與任務分發系統。資料處理中心使用zeromq收集邊緣撥測系統的撥測結果,通過相關分析計算,將巡檢結果實時投遞到業務大屏、生成巡檢**和巡檢測試報告,與智慧型排程系統聯動。

配置與任務分發系統: 由於在cdn 複雜網路環境下進行軟體部署、配置同步、應用狀態管理是非常複雜的,開源的ansible、puppet等工具已無法滿足快速迭代、持續交付的需求,愛奇藝系統網路團隊自研的配置與任務分發系統目前支援數萬臺伺服器配置分鐘內同步,可重試可重入,結合cmdb,快速將巡檢任務分發到邊緣撥測系統,保障巡檢快速、高效穩定。

技術難點:對於全量ip撥測,在巡檢任務拆分階段需要結合ip所屬運營商、不同運營商ip分布密度,撥測agent實時服務狀態,撥測agent與被巡檢cdn的網路狀態等資訊做出決策,保障99%以上的撥測覆蓋率。

邊緣撥測系統

邊緣撥測系統是巡檢撥測任務的真正執行者,分布在全國各大運營商、多個省份,有著強大的分布式處理能力,並且部署方式簡單,只需部署定製化的非侵入撥測指令碼,任一伺服器都可作為撥測agent。配置與分發系統負責巡檢撥測任務觸發,監控每乙個撥測任務的執**況。如圖四所示,撥測agent支援兩種巡檢撥測方式:

圖四 邊緣撥測系統

1.ip模式:用於全量ip巡檢,通過ip直連方式獲取被巡檢cdn的撥測結果,主要用於功能測試。

2.網域名稱解析模式:線上使用者的真實訪問是通過網域名稱方式來完成的,由於各家cdn為了保障使用者遵循自身的排程策略要進行二次排程,可能出現使用外省資源服務使用者,這樣會降低使用者訪問質量甚至出現劫持的情況。同時,定向流量排程對於各家cdn的二次排程要求更為苛刻, 時刻需要保障響應ip符合其提供的位址段。撥測agent通過模擬真實使用者,使用網域名稱方式訪問cdn,獲取各家cdn的本省覆蓋率和劫持情況、定向流量排程情況。

系統應用場景

圖五 巡檢系統應用場景

1.服務變更:在新idc節點上線、伺服器上線和idc節點割接的上線流程中,呼叫巡檢系統對cdn伺服器功能進行檢查,通過檢查才允許伺服器在智慧型排程系統上線,避免異常伺服器上線。

2.配置變更:在進行軟體公升級或者配置變更的過程中,實時呼叫巡檢系統進行cdn伺服器功能檢查,在發現異常的情況下及時回滾,降低影響範圍和時間。

3.商業cdn變更:新商業cdn上線對接、新需求上線、故障恢復上線的過程中,呼叫巡檢系統進行cdn伺服器進行功能檢查,通過檢查後才允許上線,降低商業cdn的故障概率。

4.cdn定時巡檢:cdn巡檢系統定時建立cdn巡檢任務,對cdn伺服器的功能性,本省覆蓋率、劫持情況、運營商定向流量業務進行檢查,及時發現線上異常,並採取相應措施。

成果與展望

愛奇藝 筆試

題目描述 時間限制 1秒 空間限制 32768k 牛牛養了n只奶牛,牛牛想給每只奶牛編號,這樣就可以輕而易舉地分辨它們了。每個奶牛對於數字都有自己的喜好,第i只奶牛想要乙個1和x i 之間的整數 其中包含1和x i 牛牛需要滿足所有奶牛的喜好,請幫助牛牛計算牛牛有多少種給奶牛編號的方法,輸出符合要求...

愛奇藝程式設計題

1 爐石傳說 時間限制 c c 語言1000ms 其他語言3000ms 記憶體限制 c c 語言65536kb 其他語言589824kb 題目描述 小明喜歡玩一款叫做爐石傳說的卡牌遊戲,遊戲規則如下,玩家擁有n顆水晶和m張卡牌,每張卡牌的使用會消耗a顆水晶並且造成b的傷害值,請你幫小明算一下該如何使...

愛奇藝面試題

求字典序的最大子序 解題思路 例如乙個字串asdfghj,首先需要遍歷一遍字串,找到字典排序最大的s,然後接下來遍歷dfghj,找到最大的j。此時j是最後乙個字元,搜尋結束,字典排序最大的子字串即為sj。public static void main string args maxpos syste...