Bilibili資深運維工程師:DCDN在遊戲應用加速中的實踐

qq_33857573發表於2020-09-27

日前,雲棲大會新一代CDN的技術突破與應用實踐專場中,bilibili資深運維工程師李寧進行了《DCDN在遊戲應用加速中的實踐》主題分享,從bilibili遊戲應用CDN的效果和成本入手,深入淺出地分享DCDN全站加速在遊戲加速場景中的應用。

bilibili的業務部署架構及CDN的應用

bilibili一直以來是作為中國Z世代高度聚集的文化社群而被大家熟知,已經成為了國內二次元遊戲的主要分發渠道和發行方。在公司不斷髮展過程中,CDN扮演著不可或缺的角色。

簡單的七層應用遊戲的部署架構如下圖所示,業務的後端以中心化部署的方式完全隱藏在公共雲的網路內,出向網路經過NAT轉發,業務的入口只通過公網負載均衡進行暴露,靜態資源存放在物件儲存上,然後從使用者動靜態的請求全部經過CDN進行轉發,這樣的方式不僅能進行常規靜態資源的快取加速,也能幫助隱藏源站,並進行相應的DDoS防護。

image.png

李寧介紹到:bilibili對CDN的使用大概分三個階段,初期業務規模比較小,主要通過基於雲內專線自建代理的方式實現區域加速;隨著業務規模增加,運維管理問題和安全問題暴露, bilibili基於不同的快取策略,在商業靜態CDN上去實現動靜態請求的分發,雖然解決了自建帶來的管理和安全問題,但是也帶來了新問題,比如靜態CDN中間源大量回源過載、靜態CDN鏈路過長,多級代理導致響應耗時增加等等;直到近兩年,市場上出現了專門針對動態請求加速的產品,在原有CDN功能豐富度提升的基礎上,通過智慧路由帶來了更好的加速質量提升。

遊戲應用運維工作對CDN的核心訴求

在遊戲運維的日常工作裡經常會遇到以下場景:靜態突發流量報備不及時,單一廠商無法全部承接,導致業務進退兩難,業務和運維揹著炸藥包上線;遊戲熱更中大量的重新整理預熱需求,帶給運維帶來繁重的工作;熱點遊戲海外使用者訪問質量如何保障;國內小運營商環境中各種劫持與弱網傳輸;遊戲業務突發式增長對彈性伸縮、快速交付的挑戰等等。

簡單總結,業務對運維的需求就是:

a) 熱點資源、導致流量突發運維需要做好保障
b) 保障業務發展過程中快速交付、並且保障易用性
c) 業務的基礎網路鏈路實現跨境優化
d) 要能覆蓋國內的小運營商
e) 需要有政企關係,具備推進運營商快速處理問題的能力

基於上述需求綜合考慮,bilibili選擇使用公共雲CDN,而非自建的形式。其業務對雲CDN的使用運維有以下訴求:
a) 業務接入的時候控制檯要快、簡單,介面要完善、可程式設計,功能豐富、不支援的功能也要支援定製化
b) 產品需要支援自動排程、方便的配置和內容管理,底層要對跨境網路進行優化
c) 針對海量的CDN資料有簡化分析的方案,以便資料管理運營
d) 要有豐富的報警指標、在業務報障的時候輔助運維進行決策

image.png

bilibili選擇使用阿里雲全站加速進行業務分發

為了解決以上問題,bilibili使用阿里雲全站加速產品支援遊戲應用內容的分發加速。在接入之後,質量有明顯的提升,平響耗時降低了32%,首包的耗時降低了18.6%。同時,當異常發生的時候,CDN告警的收斂聚合,可以與源站監控報警進行比對,用於快速的排除故障。

image.png

全站加速是阿里雲自主研發的融合了動態加速和靜態加速技術的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) 最終結合少量的人工輔助決策,去實現智慧排程

相關文章