日前,雲棲大會新一代CDN的技術突破與應用實踐專場中,bilibili資深運維工程師李寧進行了《DCDN在遊戲應用加速中的實踐》主題分享,從bilibili遊戲應用CDN的效果和成本入手,深刻淺出地分享DCDN全站加速在遊戲加速場景中的應用。git
bilibili的業務部署架構及CDN的應用
bilibili一直以來是做爲中國Z世代高度彙集的文化社區而被你們熟知,已經成爲了國內二次元遊戲的主要分發渠道和發行方。在公司不斷髮展過程當中,CDN扮演着不可或缺的角色。編程
簡單的七層應用遊戲的部署架構以下圖所示,業務的後端以中心化部署的方式徹底隱藏在公共雲的網絡內,出向網絡通過NAT轉發,業務的入口只經過公網負載均衡進行暴露,靜態資源存放在對象存儲上,而後從用戶動靜態的請求所有通過CDN進行轉發,這樣的方式不只能進行常規靜態資源的緩存加速,也能幫助隱藏源站,並進行相應的DDoS防禦。後端
李寧介紹到:bilibili對CDN的使用大概分三個階段,初期業務規模比較小,主要經過基於雲內專線自建代理的方式實現區域加速;隨着業務規模增長,運維管理問題和安全問題暴露, bilibili基於不一樣的緩存策略,在商業靜態CDN上去實現動靜態請求的分發,雖然解決了自建帶來的管理和安全問題,可是也帶來了新問題,好比靜態CDN中間源大量回源過載、靜態CDN鏈路過長,多級代理致使響應耗時增長等等;直到近兩年,市場上出現了專門針對動態請求加速的產品,在原有CDN功能豐富度提高的基礎上,經過智能路由帶來了更好的加速質量提高。api
遊戲應用運維工做對CDN的核心訴求
在遊戲運維的平常工做裏常常會遇到如下場景:靜態突發流量報備不及時,單一廠商沒法所有承接,致使業務進退兩難,業務和運維揹着炸藥包上線;遊戲熱更中大量的刷新預熱需求,帶給運維帶來繁重的工做;熱點遊戲海外用戶訪問質量如何保障;國內小運營商環境中各類劫持與弱網傳輸;遊戲業務突發式增加對彈性伸縮、快速交付的挑戰等等。緩存
簡單總結,業務對運維的需求就是:
a) 熱點資源、致使流量突發運維須要作好保障
b) 保障業務發展過程當中快速交付、而且保障易用性
c) 業務的基礎網絡鏈路實現跨境優化
d) 要能覆蓋國內的小運營商
e) 須要有政企關係,具有推動運營商快速處理問題的能力
安全
基於上述需求綜合考慮,bilibili選擇使用公共雲CDN,而非自建的形式。其業務對雲CDN的使用運維有如下訴求:
a) 業務接入的時候控制檯要快、簡單,接口要完善、可編程,功能豐富、不支持的功能也要支持定製化
b) 產品須要支持自動調度、方便的配置和內容管理,底層要對跨境網絡進行優化
c) 針對海量的CDN數據有簡化分析的方案,以便數據管理運營
d) 要有豐富的報警指標、在業務報障的時候輔助運維進行決策
服務器
bilibili選擇使用阿里雲全站加速進行業務分發
爲了解決以上問題,bilibili使用阿里雲全站加速產品支持遊戲應用內容的分發加速。在接入以後,質量有明顯的提高,平響耗時下降了32%,首包的耗時下降了18.6%。同時,當異常發生的時候,CDN告警的收斂聚合,能夠與源站監控報警進行比對,用於快速的排除故障。網絡
全站加速是阿里雲自主研發的融合了動態加速和靜態加速技術的CDN產品,解決了頁面動靜態資源混雜、跨運營商、網絡不穩定、單線源站、突發流量、網絡擁塞等諸多因素致使的響應慢、丟包、服務不穩定的問題,提高全站性能和用戶體驗。對於源站的適配,全站加速產品無需對服務器資源進行調整,會智能的區分動態和靜態內容並分別加速,這也是目前比較適合遊戲應用的加速方案。架構
全站加速能夠提供傳輸加速、穩定均衡、HTTPS、基礎防禦和管控靈活五大價值。併發
傳輸加速:一站式靜態、動態資源分離,靜態資源能夠基於遍及全球的邊緣節點緩存進行加速,動態資源利用智能路由、傳輸協議優化、壓縮傳輸、鏈路複用等技術實現回源加速;
穩定均衡:經過全網節點的負載均衡,以及主備源站、有序回源、源站健康檢查等多重策略,肯定高併發狀況下的業務穩定運行以及加速效果平穩。
HTTPS:國內運營商環境複雜,網站被劫持,站點內容遭篡改,僅使用HTTP協議傳輸可能會有用戶動態內容泄露風險,須要尋求更安全高效的網絡鏈路和內容分發途徑,那麼阿里雲支持全鏈路HTTPS安全加速,提供多種證書格式,支持keyless方案,知足客戶對於安全訪問的不一樣場景需求。
基礎防禦:在DCDN之上逐漸集成雲安全能力,打造邊緣安全能力。在更接近***源產生的位置,經過覆蓋全球各地的DCDN邊緣節點進行防劫持、防篡改、防DDoS***,減輕源站壓力。
管控靈活:基於緩存多源優化,能夠控制每一個回源量,從而可以對節省源站的帶寬,以此保護源站,有序回源這一塊,當活動突發的時候,DCDN能夠經過有序回源的策略來明確哪些請求優先返還源站,哪些能夠經過隊列的方式來控制源站的回源量,從而能達到穩定均衡的一個效果。
bilibili實踐經驗
針對使用CDN的效率以及成本幾大問題,bilibili具有如下實踐經驗:
第一,在交付效率上,bilibili經過gitops加基礎設施及代碼實現了一套資源編排,CDN也包含其中,研發經過選擇CDN的配置模板(好比CDN多線策略,緩存配置模板)生成資源堆棧,再結合流程審批實現分鐘級別的資源交付,在交付過程當中咱們力求讓使用者只作選擇題,少作問答題,減小反覆溝通的成本;固然平臺也集成了不少的小工具,好比最高頻的刷新預熱操做,咱們將不一樣雲平臺的需求收斂到統一的界面,提供給研發自助進行操做;還有ip歸屬查詢這類小工具,儘可能實現研發自助,以減小溝通提高人效。
第二,針對成本的問題,強調可計價,可度量;在CDN成本優化方面,首先要先知道錢花到了哪裏,經過雲計費api拿到實時數據,進行簡單地同比環比,對成本突發進行預警,而後人工干預及時止損;第二是花同樣的錢作更多的事,經過業務數據壓縮以及開啓雲廠商的智能壓縮功能進行技術優化,同時,提高靜態緩存命中率,下降對象存儲回源;第三是作同樣的事情花更少的錢,就須要更優的計費策略和更優的核算策略。
對將來遊戲CDN的思考
李寧表示:我理解的運維工做的主要目標之一就是可控,CDN可控就是實現智能調度,將來會圍繞着數據治理進行一些嘗試:
a) 經過第三方撥測、客戶端數據上報、業務全鏈路監測,收集到完善的業務數據b) 在此基礎上進行多維度的分析,好比異常狀況下,進行多維度的數據關聯聚合,減小多個運維監控組件之間切換排查c) 最終結合少許的人工輔助決策,去實現智能調度