阿裡雲CDN服務客戶超過30萬,擁有遍布6大洲、70多個國家地區的1500多個節點,帶寬能力超過120T,是國内唯一獲得Gartner評級Global的廠商。随着業務和節點帶寬的增長,服務品質優化是一個值得探讨課題。在杭州雲栖大會-飛天技術彙CDN與邊緣計算專場中,阿裡雲進階技術專家劉廷偉與現場觀衆一同交流了CDN服務品質優化的技術實踐。

阿裡雲全球CDN發展曆程
阿裡雲CDN是在2006年起源于淘寶自建CDN,從為淘寶提供圖檔、網頁等小檔案的加速服務,并逐漸開始服務整個阿裡集團内部業務。2014年3月,阿裡雲CDN正式對外商業化,從商業化之初,就非常關注産品标準化,提供了完善的控制台和API,使用者可以與使用其他雲資源一樣,即買即用。
在此之後的幾年内,阿裡雲CDN陸續釋出了極速CDN6.0、PCDN、SCDN、DCDN等産品,在今年三月,被Gartner釋出最新全球CDN服務市場指南《Market Guide for CDN Services》評級為Global,并在今年夏天,承擔了70%的世界杯直播流量。
而伴随着業務和節點帶寬的增長,服務品質的問題也會随之凸顯。劉廷偉說:“當我們讨論服務品質優化的時候,需要從整個生态系統的角度來考慮,結合技術和行業背景,尋找所有可能優化的方向。當時就感覺像這種圖,目标就在前方,但是怎麼也走不出去。于是我們團隊靜下心來,決定徹底解決服務品質的問題。”
下圖是一個簡化的CDN邏輯架構圖,從圖中可以看出CDN是一套完備的生态系統。從使用者通路的路徑來看,這套生态系統的每個環節都有哪些子系統。首先是營運商的LDNS,然後是CDN的排程系統,通過這兩個環節給使用者配置設定一個最近的節點,這屬于排程子系統。當使用者通路到達邊緣節點,從邊緣節點上擷取對應的直播、點播、下載下傳、動态、實時音視訊等内容,這是緩存系統在工作,再之後就是緩存節點之間、節點到使用者、節點到源站之間的資料傳輸,這屬于鍊路品質系統的工作。最後一個部分是配置、資料、監控相關的支撐系統。
劉廷偉老師重點圍繞排程、鍊路品質和天眼監控展開分享,在短短半個小時之内将整個CDN生态系統中的服務品質優化實踐做了非常生動精彩地講解,現場觀衆紛紛表示受益頗多。
一.排程子系統優化
排程要解決的問題,就是将使用者排程到離使用者最近的健康節點。這其中,最關鍵的就是節點覆寫的能力,其次才是排程,另外一個就是流控。
節點覆寫
劉廷偉老師講到:節點的覆寫并不是單純的建設,選點和度量是非常關鍵的,它可以讓節點更好的覆寫使用者。阿裡雲從17年開始大規模進行海外節點的建設,300+海外節點,滿足國内使用者出海加速和海外使用者加速的需求。
排程 - LDNS
公共LDNS或者使用者LDNS配置錯誤等問題,會導緻使用者無法正确排程到最近的節點,導緻服務品質下降。針對這個問題,對于APP端的應用,阿裡雲提供HTTPDNS的方式解決;對于網頁等無法實作HTTPDNS的,通過302排程/糾偏解決。當使用者請求到邊緣節點後,如果由于LDNS問題沒有排程到最近的節點,這時候節點會對大檔案進行302糾偏,将使用者排程到最近的節點。
“另外一個就是LDNS的畫像,我們看到不同的LDNS在輪詢、forward和TTL的處理上都是不同的,包括LDNS的前後端IP的比例也是不同的。我們不可能要求LDNS都按照我們的要求來吐出政策,但是我們可以按照LDNS的特點,調整我們的吐出政策。有人說既然302可以糾偏,那幹嘛還有跟LDNS過不去啊,就讓他随便排程吧,是不是?“劉廷偉認為:”答案一定是否定的,一次302排程對時間是一個RTT 20ms左右,不要小看這20ms,我們針對圖檔小檔案服務品質優化的時候,都是按照1-2ms挖掘優化的。一個1K的圖檔,整個處理響應時間就是10-15ms左右,增加一個20ms,意味着性能下降一半,因為這個性能下降,我們客戶的使用者轉化率下降10%,這是無法忍受的。”
流控
流控的自動化和智能化是雲CDN和普通CDN的最大差別之一,1000多個節點,數十萬機器,100T+的流量,怎麼将流量均衡的排程到使用者最優的節點,靠人是完不成的。何況整個阿裡雲CDN排程的運維同學隻有2個人,這意味着阿裡雲CDN必須要高度的自動化和智能化,才能完成精準的流量排程。這塊優化方案有兩個,一個是離線規劃,根據曆史流量的趨勢進行預測排程;一個是實時排程,針對突發業務特點進行流量規劃。
那麼怎麼做離線和實時呢?我們把每個節點比喻成一個瓶子,排程流量是砂石。那麼DNS流量特點就非常像大石頭,而HTTPDNS和302流量就像是沙子,排程的力度可以到具體的問題。離線規劃重點是大塊的DNS流量,實時流控就是HTTPDNS和302流量,兩者結合,保證每個節點水位均衡,每個使用者也都排程到最優的節點。阿裡雲流控系統不僅很好的支援常态的CDN業務,也經受住了雙11、春晚和世界杯活動類突發流量的考驗。
二. 鍊路子系統優化
接下來劉廷偉老師帶着現場觀衆走進了鍊路品質優化。鍊路子系統要解決的問題,就是在現有的網絡鍊路上,如何高效的傳輸資料。
固定單向鍊路下的優化方案 - 協定棧優化
協定棧優化的目标是什麼? 場景不同,優化的方向不同,要考慮成本、性能、公平性的均衡。在面向使用者這段的鍊路,為了保證使用者的服務品質,阿裡雲犧牲了部分成本,通過調整擁塞算法,丢包探測算法,将協定棧的性能提升了30%。
路由決策
劉廷偉老師生動的比喻:“如果說CDN的節點網絡是高速公路,那麼路由決策就是高德地圖。為使用者的每一個動态請求,決策從最近接入點到使用者源站的最優路徑。”
當打開高德地圖,進行阿裡中心到北京南站的高德路線規劃的時候,我們可以發現:
第一,每個鍊路上每段路的擁堵程度也都标注了,這就相當于網絡品質實時探測。
第二,高德為我們規劃了3條路。這就相當于選路,CDN也會給出源站内容到使用者之間最短的3條路徑做選擇。
第三,高德地圖給出來高速優先、躲避擁堵等選項,還有我們特色的限号區域。這就相當于鍊路親和性,比如源站在鐵通,CDN就可以接鐵通。
四、天眼系統
天眼系統的目标就是第一時間發現和診斷品質問題,并将處理經驗自動化。主要包括兩塊,第一時間發現問題 - 監控,和發現後的處理經驗自動化 - 告警處理。
監控
監控的核心就是資料源。談到資料源,大家首先想到的就是業務日志,這些業務帶寬、QPS、命中率等資料,這個是這個域名的請求處理時間資料。這些資料可以進行基本的業務監控。
如果這時候某個地區營運商服務品質下降,業務正常,隻是下載下傳速度慢了。通過這種資料就沒法進行判斷了。需要網絡層面的度量資料。
網絡資料包括丢包率、RTT、建連時間、平均請求大小等資料都是在核心層面進行采集。這些可以對下載下傳類的業務進行基礎的判斷。如果直播的客戶卡頓,監控如何發現是哪裡的原因呢?這就需要全鍊路監控,阿裡雲實作了直播全鍊路全域的資料監控體系。
告警處理
有了資料之後,大家都知道根據資料添加告警就可以了,是不是這樣告警就結束了呢?
随着業務發展,針對各種各樣的資料源來配置告警,導緻告警越來越多,告警泛濫,根本無法有效處理,是以第一個要解決的問題就是告警的準确性和收斂。
如何進行告警收斂?
1、根據業務特點和告警時的異常事件進行關聯和合并,降低重複報警
2、告警處理工單化,同時對工單進行跟蹤處理和統計
3、告警分級,這個非常關鍵。不同級别的工單不同的通知方式、通知通路和響應時間要求。比如高優先級的告警,必須保證及時性、準确性響應時間;對于底優先級的告警,更多關注告警後續的跟蹤和處理率。
雖然進行了告警收斂,但是還是會發現依靠人來處理還是有滞後,需要具備自動化的能力。自動化能力其實就是人工處理經驗的機械化,将問題出現後排查的方式、資料和手段機械化,将問題修複的操作程式化。
比如針對直播業務,對于卡頓非常敏感,對于處理時間的響應要求也非常高。于是就将卡頓排除的手段和處理程式化,當有問題出現的時候,直接告警通知問題發生了、問題發生的原因是什麼、這個問題的原因應該執行的修複政策是什麼。
一個是自動化處理陷阱,不要天真的以為所有的事情都可以自動化,很多時候簡單的自動化會給系統埋下巨大的坑。比如節點故障的隔離,如果1500個節點,有1000個節點監測出問題了,怎麼辦?自動化處理下線修複?那剩下的500個節點就被流量打爆了。一定要給自動化安個熔斷器,做到可控的自動化。
一個是自動化窮舉的問題,你不可能所有的自動化都是人工經驗的簡單重複,需要讓自動化去自學習,通過機器學習的能力,利用告警異常資料,自己成長出未知問題的處理能力。
五、客戶案例
除了分享純粹的技術幹貨,劉廷偉老師現場也介紹了幾個具體的客戶案例,讓觀衆更有體感。
第一個案例是亞洲航空,阿裡雲為亞航提供全球全站加速解決方案,針對動态資料進行路由優化及隧道服務,響應速度提升150%。
第二個案例是印尼本土電商Tokopedia, 印尼最大的C2C的網絡銷售平台, 阿裡雲為Tokopedia提供全鍊路HTTPS安全加速解決方案,在保障安全支付的同時,提升100%以上的加速效果,同時發揮雲CDN彈性擴容的優勢,在多次促銷活動輕松應對數十倍的活動突發。
第三案例是今日頭條,國内移動網際網路領域成長最快的産品,旗下有今日頭條、抖音、火山等深受使用者喜愛的産品,頭條技術團隊的能力也是國内領先的,阿裡雲CDN跟頭條團隊一起,建立了端到端的短視訊品質監控體系,整個優化資料做到卡頓率、中斷率和失敗率總體低于1%。
最後一個客戶案例是虎牙,作為國内領先的互動式直播平台,阿裡雲CDN和虎牙一起實作了端到端的直播全鍊路監控,可以實時監控和定位直播卡頓問題和原因,保證虎牙直播業務的流暢體驗。
在分享的最後,劉廷偉老師說到:“雖然我們在服務品質上做了很大的工作,但是還有很長的路要走,我們歡迎各位專家加入我們,一起做全球最好的CDN!”