前言
遊戲做的差不多了,是時候准備上線測試部署了,選一個靠譜的雲服務器廠商還是很重要,這次准備嘗試用下華爲雲的服務,爲了在上線前做足准備,先做一次預演,省得到時候手忙腳亂,也給其他的同事做一個文檔記錄。
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,作者:香菜】
(推廣)