随着游戏市场的持续升温,游戏行业正朝着高品质、IP化及多元化方向加速迈进,这对游戏开发者提出了更为严苛的要求。如何确保游戏性能的稳定性,为玩家带来流畅无阻的游戏体验?近日,笔者决定亲身体验华为云的游戏云端部署解决方案,一探究竟。
在游戏架构方面,不同的公司有着各不相同的服务器架构,但基本的部署流程大同小异。首先,让我们了解一下本次部署所基于的游戏架构,以便更好地理解后续的准备工作。
该游戏架构主要包括以下几个服务器角色:Client(游戏客户端)、Gate(网关服,负责分发游戏服务器地址)、Game(游戏主服务器)、Room(房间服,用于玩家匹配战斗)、Gm(后台管理服务器,用于活动发布及玩家数据管理)、Redis(用作缓存,减轻数据库访问压力)以及Mysql(用于数据持久化)。
在玩家数据流方面,玩家首先通过HTTP方式访问Gate服务器,获取Game服务器的IP和端口,然后通过这些信息直连Game服务器进行登录。当玩家进行匹配战斗时,相关数据会被传入Room服务器,战斗指令也同样如此。当玩家需要查询数据时,Game服务器会先尝试从Redis中获取,若不存在则向Mysql查询,并将查询结果存入Redis。当玩家角色数据发生变化时,Game服务器会先更新数据库,再更新缓存。而Gm服务器则用于发布活动和修改玩家数据。
在服务间交互协议方面,HTTP协议主要用于Client与Gate、Game与Gm之间的通信;Dubbo协议则用于内部服务器之间的数据交互,其简洁高效的特点使得服务器间的通信如同操作本地方法一般;而WebSocket协议则用于Client与Game之间的通信,以满足网页游戏的实时性需求。
在部署方式方面,本次部署选择了Docker容器化技术。这主要得益于Docker能够标准化应用发布、节省部署时间、方便快速启动以及降低犯错概率等优点。同时,团队对Docker技术较为熟悉,这也为部署工作的顺利进行提供了有力保障。
在部署准备阶段,首先进行了环境准备。这包括机器准备和解决方案构成两部分。机器准备方面,根据华为云官网的配置建议,准备了相应的服务器资源。解决方案构成方面,则涵盖了弹性云服务器ECS、弹性负载均衡ELB、云数据库RDS for MySQL、分布式缓存服务Redis版、云日志服务LTS、DDoS防护AAD以及弹性公网IP EIP等一系列云服务。
接下来是镜像准备阶段。镜像的准备包括打包、推送到私有仓库以及可能的手动命令操作。为了方便传输和部署,还将镜像导出为压缩包形式。
在部署脚本方面,准备了相应的启动脚本,并注明了在正式环境部署时需要根据实际情况动态调整环境变量。
还特别注意了Gate服务器需要开通公网IP、Excel配置文件需要提前规划并在Docker脚本中挂载、Docker挂载的数据目录和日志目录需要提前规划、每个服务器内部的端口映射需要提前规划以及环境变量需要在脚本中修改等事项。
在正式部署阶段,首先对游戏痛点进行了调研。新游首发时海量玩家在线导致的高并发访问扩容不及时、网络时延高导致的游戏卡顿和玩家掉线以及自建周期长成本高无法弹性伸缩等问题是游戏服务器面临的主要挑战。因此,在选择云厂商时,资源扩容能力、计算能力、安全防御、简化云上运维工作以及资费等方面都是需要考虑的关键因素。
华为云在游戏云端部署解决方案方面展现出了显著优势。其覆盖全球的云基础设施能够支撑千万级玩家同时在线稳定运行;资源扩容能力强,能够及时根据需求灵活购买资源并实现动态扩展;计算能力卓越,同类型ECS高于友商15%,容器快速发放且性能对比开源高20%;安全防御方面提供了单线路T级DDoS高防IP服务以及百万QPS级CC防护等AI能力保障游戏长期安全运行;同时,华为云还提供7x24小时服务、专项保障及专家支持等极简运维服务确保重大活动业务稳定。
在机器环境准备阶段,首先远程登录到机器并切换到root用户执行Docker环境安装命令。然后拷贝镜像文件、配置文件以及启动脚本到目标机器,并在规划的目录下创建并修改启动脚本设置相应的参数。最后执行启动脚本并验证服务器是否正常工作。
经过一系列严谨而细致的准备工作和部署流程后,游戏服务器终于成功上线并稳定运行。这一过程中,华为云的游戏云端部署解决方案发挥了至关重要的作用。其强大的云基础设施和丰富的云服务为游戏的稳定运行提供了有力保障。