在線游戲(主要指手游和頁游)具有鮮明的行業特點。首先,游戲開發門檻較低,導致游戲數量急劇增長,玩家忠誠度迅速降低,穩定可靠的游戲服務能力成為游戲開發與運營商的立身之本。其次,大多數游戲廠商獨立運維的實力較小,隨著業務的井噴式發展,對動態快速擴展硬件資源的需求與日俱增。第三,對于相對熱門的游戲而言,一般都擁有海量玩家,亟需高并發、高負載的應對措施與方案。第四,游戲開發技術發展迅速,硬件日新月異,游戲畫質與可玩性明顯改善,低響應延遲是游戲體驗的基本需求。最后,同業競爭激烈,安全成為游戲,尤其是熱門游戲的命門。
在這種背景下,在線游戲行業面臨三個主要挑戰:1)需要IT系統提供穩定、安全、可靠的游戲服務能力,保證業務的高可用性;2)需要靈活、高可擴展性的游戲架構設計,適應業務發展的突發峰值訪問;3)海量用戶高并發場景下的低延遲響應要求,以提供流暢的游戲體驗。
應對好這三個挑戰,將為游戲廠商的成功提供堅實的基礎與支撐。本文將從手游的角度討論合理的在線游戲后端平臺架構,并將引入手游行業的知名游戲大掌門應用云計算的架構,幫助優化已有的系統部署。
在傳統手游構設計中,有幾個可以改進的地方。游戲運行服務中,應用部署在固定的服務器上,當業務迅速變化時,無法及時動態調整資源來滿足;單臺云服務器上部署了游戲應用的多個模塊,不符合松耦合的部署原則,且容易造成IO爭搶,影響讀寫性能;在玩家游戲的高峰時段,游戲更新服務容易因數據分發延遲,形成瓶頸,影響用戶體驗;游戲更新服務中存在單點配置,一旦其中的一臺服務器宕機,可能導致玩家無法更新而不能繼續游戲;對架構全局缺少專門的監控與報警機制,存在安全隱患。
1)實現應用的松耦合,將Web/應用服務器與緩存、數據庫服務等模塊解耦,并物理隔離部署,這樣能夠實現功能模塊的水平擴展,同時也避免了云服務器上IO爭搶帶來的性能降低問題。如上圖所示,Web Server、Cache Server及DB Server均各自分層,Web Server組成一個集群,通過負載均衡SLB對外提供服務。當業務量迅速變化時,可以通過API自動動態向上或向下擴展集群中的云服務器數目。DB Server搭建主備集群,并定期冷備數據到本地或OSS存儲。用戶也可不必自己搭建緩存和數據庫服務,而直接采用阿里云OCS和RDS,這樣可以簡化系統架構、降低運維成本,并有更高的可靠性。
2)在關鍵路徑上,部署主備集群,通過負載均衡服務SLB分發并對外提供服務,避免單點故障帶來的游戲不可用。游戲更新和運行服務均體現了這一點。
3)游戲更新服務可基于阿里云CDN提供靜態文件分發的低延遲,若游戲中有大量臨時文件,包括地圖、靜態數據分發等,也可以考慮通過CDN來保證游戲體驗。
4)在應用部署的云服務器上,免費開通云盾及云監控,保障游戲不受惡意攻擊及病毒、木馬等入侵,為游戲穩定運行提供保障。
綜上所述,面對游戲行業特點與挑戰,基于云服務的架構部署方式完全可以解決傳統架構存在的問題與隱患。阿里云的云服務器、RDS等產品的高可擴展性能力幫助用戶實現動態資源配置,以應對業務的劇烈變化;負載均衡幫助用戶應對高峰流量、單點故障,提升業務穩定性;云盾、云監控幫助用戶保護網絡與數據安全,抵御惡性競爭的攻擊;多線BGP網絡、CDN幫助用戶在海量、高并發場景下維持業務的快速響應。