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


小結:

1、

 中心處理系統

/1/將定制后的巡檢任務拆分,通過配置與任務分發系統、CMDB*( configuration management database)將派發到邊緣撥測系統
/2/處理邊緣撥測系統返回的撥測結果,進行分析計算

 2、

數據處理中心將巡檢任務生成系統產生的巡檢任務用例拆分,結合分布式消息處理框架celery,支持上百萬QPS的巡檢用例拆分,秒級將巡檢任務發送給配置與任務分發系統。

 

https://mp.weixin.qq.com/s/trAUlnQM1BGgxFALrLM_SQ

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

CDN的全稱是Content Delivery Network,即內容分發網絡,是一種分布式網絡系統。CDN依靠部署在各地的邊緣服務器,通過中心平台的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。愛奇藝作為中國高品質的視頻娛樂服務提供者,致力於讓人們平等、便捷地獲得更多、更好的視頻,CDN的穩定運行是保障用戶獲得豐富、高清、流暢視頻體驗與服務的基石,其重要性不言而喻。

 

愛奇藝CDN采用混合雲架構,包括自建CDN和商業CDN數萬台CDN服務器,為月活超過5億用戶提供服務。混合雲架構可以提升資源利用率、降低成本,但同時也帶來了軟件與服務變更管理和CDN服務質量監控的困難。軟件與服務變更可以被稱之為運維領域的“阿克琉斯之踵”,稍有不慎就像打開了“潘多拉魔盒”,愛奇藝自建CDN和商業CDN都在軟件升級與配置變更、機房割接、服務器故障下線再重新上線后出現過配置不統一、文件不完整等問題導致用戶報障,這是影響愛奇藝CDN服務穩定性的重要問題。在此同時,商業CDN還出現過劫持率較高、非本省覆蓋,定向流量出網的情況。更嚴峻的是,以上很多異常都是用戶報障后才被分析出來,我們很被動,用戶體驗也不好。所以,為了隨時掌握全網數萬台CDN服務器的服務情況,同時要保證在CDN服務器在進行軟件與服務變更后進行上線之前就發現問題,我們設計和實現了CDN巡檢系統。

 

系統整體架構

愛奇藝巡檢系統目前支持自建和商業CDN的全量IP功能巡檢、定向調度巡檢、覆蓋率與劫持情況巡檢,其中:

 

功能巡檢:驗證相關視頻文件是否滿足奇藝CDN功能需求,驗證其線上配置是否滿足標准化。

定向流量巡檢:驗證提供服務的CDN服務器是否屬於定向地址庫,提供的定向流量服務是否正常。

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

 

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

1. 巡檢任務生成系統:負責數萬台CDN服務器的巡檢用例的定制化生成,支持人工定制或者定時觸發巡檢。

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

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

巡檢任務生成系統

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

 

圖二 巡檢任務生成系統

 

1. 巡檢用例篩選器:巡檢用例篩選器從線上篩選覆蓋各端訪問的所有類型的視頻格式文件,對篩選出的文件添加巡檢標識符,生成巡檢文件列表,作為巡檢用例生成器的輸入,同時通過智能分發系統將巡檢文件分發到CDN存儲。

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粒度的小型故障,自建CDN自動上下線,對於商業CDN要求其兩個小時內處理完畢,無法修復要求其摘除IP,更新API接口。如果是大型故障,如某省、某運營商故障或某類型文件無法播放,智能調度系統及時調整流量,使用其他CDN進行災備切換。

 

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

 

邊緣撥測系統

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

圖四 邊緣撥測系統

 

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

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

 

系統應用場景

CDN巡檢系統上線后,自建CDN與商業CDN在進行服務與配置變更時都需要經過巡檢系統巡檢通過后才能上線服務。另外的,巡檢系統對於已經在線上服務的自建CDN與商業CDN還會進行定時巡檢,如圖五所示。

 

圖五 巡檢系統應用場景

 

1. 服務變更:在新IDC節點上線、服務器上線和IDC節點割接的上線流程中,調用巡檢系統對CDN服務器功能進行檢查,通過檢查才允許服務器在智能調度系統上線,避免異常服務器上線。

2. 配置變更:在進行軟件升級或者配置變更的過程中,實時調用巡檢系統進行CDN服務器功能檢查,在發現異常的情況下及時回滾,降低影響范圍和時間。

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

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

 

成果與展望

愛奇藝CDN巡檢系統已平穩運行半年,檢測出相關功能配置問題100多起,文件MD5不一致問題10起, 定向流量出網5起,推動三家商業CDN整改服務資源,確保其保障100%的本省覆蓋率。未來,愛奇藝巡檢系統會支持更多的巡檢模式,結合人工智能技術,為未來的IOCP業務、奇速播業務保駕護航,保障用戶極致的視頻娛樂體驗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM