前言
游戲做的差不多了,是時候準備上線測試部署了,選一個靠譜的云服務器廠商還是很重要,這次準備嘗試用下華為云的服務,為了在上線前做足準備,先做一次預演,省得到時候手忙腳亂,也給其他的同事做一個文檔記錄。
1、游戲架構介紹
1.1 服務器架構
不同的公司有不同的游戲服務器架構,所以部署的具體細節大多不相同,但是基本的部署準備還是一樣的,先看下我們的游戲架構,方便讀者朋友了解后續的準備工作。
1.1.1 服務器角色具體介紹下
client:游戲客戶端。
gate:網關服,這里不承載游戲的鏈接,僅僅做游戲服務器的地址發放,玩家從gate服獲取正式游戲服的ip和端口。
game:玩家主要在的游戲服務器,只有一個。
room:房間服,玩家匹配進入戰斗后將進入戰斗服,如果戰斗多可以做動態擴展。
Gm:后臺管理服務器,可以做活動的發布或者管理玩家數據。
redis: 這里主要用來做緩存,避免數據庫的頻繁訪問壓力。
mysql: 主要用來做數據的持久化。
1.1.2 玩家數據流
玩家(client)通過http方式訪問gate服務器,獲取game服務的ip和端口。
client通過拿到的ip和端口直連game服務器,這樣玩家就登錄進了服務器。
當玩家操作角色進行匹配戰斗的時候,匹配成功后會將需要的數據傳入room服務器,所有的戰斗指令也會被傳入room服務。
當玩家需要查詢數據時,比如想獲得背包,game服會先像redis查詢,如果數據不存在,則像mysql查詢,查詢到數據后會存入緩存。
當玩家角色數據發生變化時,比如獲得了新的道具,這個時候需要操作數據庫,game服務器會先更新數據庫然后更新緩存。
當發布活動和修改玩家數據的時候使用gm,通過發布指令到game服。
1.1.3 服務間交互協議
http協議:主要發生在訪問場景比較少的地方,client 和gate,game和Gm之間。
dubbo協議:主要使用在內部服務器之間交互數據,好處是簡單直接,像操作本地方法一樣。
webscoket:主要用在client和game之間,因為這是一個網頁游戲的服務器,所以使用了websocket。
1.2 部署方式
這里使用docker的方式,原因有幾點:
標準化應用發布,避免環境帶來的問題。
節約時間,方便快速部署和啟動。
團隊同學比較熟悉,降低犯錯的可能性。
2、部署準備
2.1 環境準備
2.1.1 機器準備
對服務器的配置做了一個表統計,準備好服務器就好,下表是參考華為云官網。
注:具體價格實際以官網價為準
2.1.2 解決方案構成
彈性云服務器ECS:是一種云上可隨時自助獲取、可彈性伸縮的計算服務,幫助打造安全、可靠、靈活、高效的應用環境。
云數據庫 RDS for MySQL:擁有即開即用、穩定可靠、安全運行、彈性伸縮、輕松管理、經濟實用等特點,讓客戶更加專注業務發展。
分布式緩存服務Redis版:業界首個支持Arm和x86雙架構的Redis云服務,支持雙機熱備的HA架構,提供單機、主備、Proxy集群、Cluster集群、讀寫分離實例類型,滿足高讀寫性能場景及彈性變配的業務需求。
云日志服務 LTS:提供一站式日志采集、秒級搜索、海量存儲、結構化處理、轉儲和可視化圖表等功能,滿足應用運維、網絡日志可視化分析、等保合規和運營分析等應用場景。
彈性公網IP EIP:彈性公網IP(Elastic IP)提供獨立的公網IP資源,包括公網IP地址與公網出口帶寬服務。可以與彈性云服務器、裸金屬服務器、虛擬IP、彈性負載均衡、NAT網關等資源靈活地綁定及解綁,提供訪問公網和被公網訪問能力。擁有多種靈活的計費方式,滿足不同業務場景訴求。
2.2 鏡像準備
鏡像的準備打包推送到私有倉庫,具體的方法可以使用一些插件,也可以使用Jenkins,或者手動推送,無論哪種方式,這里準備下可能需要用到的手動命令。
2.2.1 安裝docker服務
2.2.2 打包鏡像
將jar包拷貝到和dockerfile相同目錄下,執行下面命令,打包鏡像。
2.2.3 將鏡像打包為本地文件
鏡像導出為壓縮包,方便傳輸。
2.2.4 解包鏡像
登錄到服務器之后,將上面的文件拷貝到本機,使用下面的命令將鏡像導入到當前機器:
2.3 部署腳本
注:上述是開發環境,環境變量在有些是默認,在正式環境部署時候需要動態調整
2.4 注意點
gate服務器需要開通公網ip。
excel配置文件要提前規劃,在docker腳本中掛載
docker 掛載的數據目錄和日志目錄需要提前規劃。
每個服務器內部的端口映射要提前規劃
環境變量需要在腳本中修改,包括mysql 和redis 數據庫地址,需要鏈接的服務器ip和端口,以及相關的服務器配置等。
3、正式部署
3.1 環境調研
游戲的痛點:
新游首發、海量玩家在線,高并發訪問擴容不及時;
網絡時延高,游戲卡頓、玩家掉線;自建周期長成本高,無法彈性伸縮。
大多游戲服務器屬于計算密集型的,所以游戲服務器云廠商選擇核心點有以下幾條:
資源擴容能力,能及時擴容,根據需求靈活購買資源,實現動態擴展、成本優化,支持游戲開服、擴服、并服等場景的業務運行。
穩定的帶寬,華為云內網帶寬轉發效率高,ELB億級并發,動態自動優化網絡結構,網絡持續、穩定、高效、低時延。
安全防御,華為云提供了單線路T級DDoS高防IP服務以及百萬QPS級CC防護,基于黑客攻擊機器學習、業務風控大數據智能隔離等AI能力,保障中手游游戲長期安全運行。
資費,好用且便宜是每個公司的追求,降本增效,多種計費模式,起步預算低,按需使用,用多少付多少,有效緩解企業初創資金壓力,更省錢。
總結:華為云游戲云端部署解決方案,提供覆蓋全球的云基礎設施,支撐千萬級玩家同時在線穩定運行,助力游戲企業打造精品化游戲,保障游戲彈性部署和無憂運維。
3.2 服務器購買
下面是在購買的時候一些服務器截圖,可以作為參考配置,等到正式生產環境的時候根據資源動態配置。
注:點擊可看大圖
3.3 華為云核心優勢匯總
數據庫能力:高并發場景,性能穩定性優于友商Mysql主備切換效率優于友商。
海外區域亞太覆蓋:華為網絡質量(時延和丟包)總體優于友商。(除日韓、越南、臺灣)。
計算能力:ECS—同類型ECS高于友商15%,PPS領先,容器—快速發放,性能對比開源高20%。
網絡能力:內網帶寬轉發效率最高。ELB億級并發。
安全防護:華為云打造租戶隔離的安全平臺,并提供完善的安全服務保障業務和數據安全,為您的游戲保駕護航。
極簡運維:云上運維工作,平臺為游戲客戶提供7*24小時服務,專項保障、專家支持,確保重大活動業務穩定。
高數據可靠性:ECS服務通過商業和技術上的合理努力,承諾單實例維度每服務周期服務可用率不低于99.975%;單區域多可用區維度每服務周期服務可用率不低于99.995%;基于分布式架構的、可彈性擴展的虛擬塊存儲服務,具有高數據可靠性,高I/O吞吐能力,能夠保證任何一個副本故障時快速進行數據遷移恢復,避免單一硬件故障造成數據丟失
3.4 機器環境準備
3.4.1 安裝docker
遠程登錄到機器之后,切換到root用戶,執行下面的命令,安裝docker環境
3.4.2 拷貝文件到目標機器
文件列表如下:
鏡像文件,根據2.2 中相關命令,拷貝到本地,如果用私有倉庫,則不需要執行此步驟。
拷貝配置文件到機器,將所有的excel配置文件拷貝到機器,并在啟動腳本中配置掛載
啟動腳本,在規劃的目錄下創建并修改啟動腳本,設置相應的參數。
3.4.3 腳本執行
在所有的文件都準備好之后,切換到腳本所在目錄,可以直接啟動腳本,下面以game為例
3.4.4 驗證服務器正常
首先查看所有服務器的日志是否有報錯異常,然后使用特殊賬號進行登錄,驗證服務器功能正常
驗證點:
可以正常登錄
可以匹配戰斗
http接口正常
服務器操作正常
主要業務邏輯正常。
驗證以上邏輯后通知測試同學進行功能測試。
3.4.5 開服
待測試同學測試通過后,通過gm設置服務器狀態為開服狀態,部署流程結束。
4、總結
不打無準備之仗,方能立于不敗之地,臨門一腳,提前準備,考慮周全。
九層之臺,起于壘土,好的云服務廠商可以讓事情更簡單,更容易,華為云值得作為首選。
華為云游戲云端部署解決方案,提供覆蓋全球的云基礎設施,支撐百萬級玩家同時在線穩定運行,結合云上運維運營,助力游戲企業實現業務的快速上線和彈性擴展,有效應對游戲的突發性需求和游戲企業出海發展需求。
目前華為云618營銷季正在進行中,眾多爆款解決方案驚喜滿滿,即日起至6月30日,登錄華為云官網可享10000元專屬禮包,更有大額免單券、儲值滿減等福利玩法,全方位助力中小企業高效上云。機不可失時不再來,感興趣的小伙伴快去看看吧!
【本文首發于CSDN,作者:香菜】