江娛互動是一家新興的遊戲企業,自2023年成立伊始,江娛互動就面向廣闊的全球遊戲市場,通過創造有趣的遊戲體驗,在競爭激烈的遊戲市場占得一席之地。僅僅2年的時間,江娛互動就憑藉topwar(口袋奇兵)單款產品躋身中國遊戲廠商出海30強。在「中國遊戲,未來可期」的使命下,江娛互動正在不斷豐富旗下的遊戲品類,希望把更多的快樂帶給全球玩家。
隨著業務的飛速增長,遊戲服務端的系統規模和系統複雜度正在經歷著翻天覆地的變化。幸運的是,江娛互動擁有一支極具戰鬥力的技術團隊,雖然團隊的整體規模不大,但他們一直保持著對前沿技術領域的探索,通過多種手段維持系統架構的技術先進性,以更好地支撐業務需求,並降低it成本。
在技術架構的多次迭代公升級中,有一項非常重要的工作,就是將遊戲場景中通用的業務能力進行抽象,從遊戲主服中進行剝離,沉澱到統一服務層,以模組化的方式同時支撐江娛互動的多個遊戲品類。從主服中剝離出來的業務能力包括賬號管理、im、內容安全、會員體系、資訊推送、遊戲行為分析等多個方面,這樣做首先降低了遊戲主服的業務複雜度,使主服專注於對核心遊戲場景的支撐。此外,通用的能力可以在多個遊戲品類中得到復用,從而降低研發成本,提公升研發效率。
能力拆分和業務耦合度降低,為持續迭代和新技術預研提供了便利,也為江娛互動在雲原生serverless領域深入探索創造了契機。serverless架構可以充分發揮計算資源的快速彈性能力,是雲計算的重要發展方向。在遊戲領域,遊戲主服承載著複雜的核心業務邏輯,需要長期執行,並與多個玩家終端進行極低延遲的資料互動,因此仍然需要通過虛擬機器或容器的方式承載。從主服中剝離的遊戲周邊業務場景,就成為了試點serverless技術架構的首選目標。
最初的架構是通過負載均衡slb和基於easyswoole框架的php應用集群來實現的。
在這個架構中,通過php編寫的主體應用對玩家的翻譯請求進行一系列的預處理,包括符號**的替換以及敏感內容的過濾等,然後**到第三方翻譯平台獲取翻譯結果。這是一套非常被廣泛採用的擁有高併發處理能力的技術架構,在雲計算時代,可以借助於雲資源的彈性伸縮特性,使整個集群的吞吐量隨著業務量的變化而動態調整。但基於雲原生的視角來看,這套架構在生產環境大規模執行的時候還是存在一些不完美之處。
1. 維護工作量大。整套系統的維護工作量涵蓋了虛擬機器、網路、負載均衡元件、作業系統、應用等多個層面,需要投入大量的時間和精力來保障系統的高可用性與穩定性。舉乙個最簡單的例子,當某個應用例項出現故障的時候,如何第一時間定位故障並盡可能迅速的將其從計算集群中摘除呢?這些都需要再配合完整的監控機制以及故障隔離恢復機制來實現。
2. 彈性伸縮能力滯後。不論是通過定時任務,還是通過指標閾值(cpu利用率、記憶體使用率等)來觸發彈性擴容,都沒有辦法基於實際請求量精細化管理,在遇到聊天請求密度大陡增的時候,會面臨彈性伸縮能力滯後的問題。即便通過kubernetes以及預留資源池等技術優化,擴容乙個新的例項也往往需要幾分鐘的時間。
3. 資源利用率低。滯後的彈性伸縮能力會導致伸縮策略制定得相對保守,造成資源利用率的下降,最直接的表現是增加了資源成本:
有沒有一種方案能能幫助技術團隊專注於業務邏輯的實現,並可以根據玩家的實際請求量進行精細化的資源分配,從而實現資源利用最大化呢?隨著雲計算的飛速發展,各大雲廠商都在積極探索新的方案,用更加「雲原生」的思路來解決成本和效率的問題,基於阿里雲函式計算fc的serverless方案就是這個領域的傑出代表。
函式計算fc是事件驅動的全託管計算服務,通過函式計算,開發者無需管理伺服器等基礎設施,只需編寫**並上傳,函式計算會為自動準備好計算資源,以彈性、可靠的方式執行業務邏輯,並提供日誌查詢、效能監控、報警等附加功能,確保系統的穩定執行。
相比傳統的應用伺服器保持執行狀態並對外提供服務的方式,函式計算最大的區別是按需拉起計算資源對任務進行處理,在任務完成以後自動的**計算資源,這是一種真正符合serverless理念的方案,能最大化的提公升資源利用率,減少系統系統維護工作量和使用成本。因為不需要預先申請計算資源,使用者完全不需要考慮容量評估和彈性伸縮的問題,只需要根據資源的實際使用量來進行付費。
配置了http觸發器的函式可以直接響應玩家發起的請求,並通過彈性可靠的方式排程相應的計算資源進行處理。由於函式計算的任務分配能夠完全匹配前端使用者流量的變化,負載均衡slb就不再有用武之地,可以從架構中直接移除。同時,長駐執行的應用集群也不再需要,函式計算平台能夠快速拉起大量計算資源併發執行任務,並確保整套架構的高可用性。其中,redis的作用是快取一部分高頻的簡單語句,減少第三方平台的依賴。這樣的架構簡化給江娛互動技術團隊帶來的最大驚喜,是不再需要進行容量規劃以及彈性伸縮管理工作,讓團隊可以集中精力實現業務需求,並在更多的領域實現業務創新。
通過單例項多併發,能讓每個拉起的函式計算例項,併發處理多達100個任務,以此減少平均執行時長,節省費用,並降低冷啟動的概率。通過預留例項優化,能夠根據函式的負載變化提前分配好計算資源,使系統能夠在擴容按量例項時仍然使用預留例項處理請求,從而徹底消除冷啟動帶來的延時毛刺。
另外乙個讓江娛互動感受到研發效率明顯提公升的,是函式計算fc提供的版本與別名管理功能。版本相當於服務的快照,支援使用者為服務發布乙個或多個版本,配合別名機制,可以實現軟體開發生命週期持續整合、持續發布,並用最便捷的方式實現服務的灰度迭代。
在後續的架構優化中,江娛互動將嘗試通過機器學習技術盡可能多的對原始內容進行預處理,以減少對於第三方平台的依賴。在ai推理領域,依然可以利用serverless架構的優勢,通過預先訓練好的深度學習模型,在短時間內排程大量計算資源進行大規模並行處理。
Serverless 在 SaaS 領域的最佳實踐
隨著網際網路人口紅利逐漸減弱,基於流量的增長已經放緩,網際網路行業迫切需要找到一片足以承載自身持續增長的新藍海,產業網際網路正是這一巨集大背景下的新趨勢。我們看到網際網路浪潮正在席捲傳統行業,雲計算 大資料 人工智慧開始大規模融入到金融 製造 物流 零售 文娛 教育 醫療等行業的生產環節中,這種融合...
進入遊戲開發領域
辭職的日子過得真快!從離開工作了九年多的單位,到現在在家已經乙個多月了。最近開始進入遊戲開發領域,同另外兩位有多年遊戲開發經驗的朋友,一起做自己的mmo遊戲平台。我主要負責做伺服器端開發。在做遊戲方面,我是個徹底的新手。對於這些年流行網遊,也僅限於從別人的只言片語中獲得。有很多功課要補習,從熟悉各類...
遊戲主迴圈腳手架
在開頭,我們知道在乙個遊戲應用中,遊戲是在遊戲主迴圈裡面執行的。flame外掛程式已經提供了可以直接使用的遊戲主迴圈腳手架,要使用這個腳手架,就要用到flame的遊戲 game 抽象類。建立乙個名稱為box game.dart的新檔案,然後開始編寫boxgame類,import dart ui im...