億級月活遊戲《迷你世界》全棧容器化實踐分享

本文分享自華爲雲社區《億級月活遊戲《迷你世界》全棧容器化實踐分享》,作者:雲容器大未來。

背景

迷你玩旗下《迷你世界》是一款國產沙盒創意平臺,擁有全球數千萬創作者進行去中心化內容創作,通過方塊組合自由創造等方式,引導用戶在平臺上創作虛擬作品。2021《迷你世界》的每月活躍玩家人數已超過一億。

《迷你世界》此前面臨的突出問題在於服務端的彈性:迷你世界服務器的規格較大,每個服務器上承載了很多遊戲服進程,不同玩家的遊戲時間上差異也比較大,爲了保障深度玩家的遊戲體驗,即使只有一個玩家還在進行遊戲,對應的遊戲服務器也是不會縮容的,這必然會影響服務端整體的資源利用率和運營成本。我們期望通過容器靈活規格來解決《迷你世界》服務端的縮容問題,同時提升整個遊戲系統的擴縮容、部署升級效率。

挑戰

雲原生技術以其靈活性、可擴展性和可維護性等優勢,正在迅速改變企業的 IT 架構。第三方報告顯示,2022年已經有超過75%的互聯網公司在基於K8s部署生產業務,預期2025年這個數字將超過90%。然而在遊戲場景中,k8s的還面臨一些侷限性。首先,遊戲業務天然是有狀態的,K8S原生的有狀態資源StatefulSet並不擅長處理大量的、複雜的狀態管理任務。其次,時延敏感性也是一個問題。在遊戲中,時延直接影響到遊戲的流暢度和玩家的體驗,這就對K8s的容器網絡實現提出了更高的要求。同時,安全性也是一個挑戰。遊戲服中可能包含大量的敏感信息,普通容器的隔離程度與虛擬化相比仍有一定差距。

解決方案

華爲雲CCE在網絡、容器運行時上進行了增強,再配合社區workload,使能《迷你世界》後端全棧容器化,資源使用量較虛擬化部署環境減少了50+%。整體架構如下:

WechatIMG892.png

網絡方面,華爲雲CCE Turbo提供了一種更接近虛擬機的容器網絡,這種模式下,容器成爲和虛擬機等同的“一等公民”。容器網卡集成了虛擬網絡的能力,比如通過CRD關聯到安全組進行安全加固,更細粒度的IP地址管理等。更重要的是,這種容器網絡支持Pod直接關聯EIP,用戶可以直接通過EIP訪問應用。EIP的成本管理上,華爲雲提供了95計費的共享帶寬,以多個EIP共享的帶寬爲計費單元。我們開發了專門的K8s webhook爲不同的pod分配不同的共享帶寬,來做到最優的成本控制。

WechatIMG893.png

有狀態應用管理方面:我們使用了OpenKruise社區的CloneSet來管理遊戲服pod。CloneSet提供了pod的原地升級能力,可以在不重建pod的情況下對運行中的容器進行更新。我們還深度使用了它的定向縮容能力,通過自定義Hooks判斷指定遊戲服pod是否有活躍玩家,實現對遊戲服縮容的精細化控制。OpenKurise的CRD配合控制器的模式在不同的K8s環境中具有良好的擴展性,只要廠商提供社區一致的API,均可正常部署運行。

安全方面,當前我們的使用方式是服務端Pod與節點1:1部署,遊戲服pod配置關聯指定安全組,通過安全組和虛擬化對遊戲服進行雙重安全加固。

效果

《迷你世界》完成全量容器化後,在運維效率、資源成本都有了顯著優化

  • 資源佔用節省50%

計算資源根據遊戲的實施訪問量自動管理,定時彈性伸縮配合指標觸發的自動彈性伸縮,再加上定向縮容,資源總是能伸縮至合理水平,保障玩家的遊戲體驗。

  • 迭代效率提升

容器化縮短了應用的迭代週期,通過灰度發佈,流量治理等保證了業務平滑穩定升級,應用升級從小時級提升至分鐘級。

迷你玩和華爲雲在未來將Serverless領域加深合作:華爲雲容器實例服務CCI具有秒級彈性、按量計費的特性,非常貼合我們的應用場景。此外,華爲雲CCE提供彈性突發引擎,可以將CCI資源池以虛擬節點的方式接入CCE。基於這項能力,我們僅需將與節點強綁定的部分資源稍作調整即可將應用部署到Serverless容器服務中,進一步提升後端的彈性能力。同時CCI基於安全容器構建,獨享內核,具有虛擬機級別的安全保障。下一階段,我們考慮將部分負載逐步遷移到Serverless容器上。

20240220-095244(WeLinkPC).jpg

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章