公司内部资料!游戏上线前部署准备,就这新手都行
前言
游戏做的差不多了,是时候准备上线测试部署了,选一个靠谱的云服务器厂商还是很重要,这次准备尝试用下华为云的服务,为了在上线前做足准备,先做一次预演,省得到时候手忙脚乱。也给其他的同事做一个文档记录。
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 机器准备
对服务器的配置做了一个表统计,准备好服务器就好,下表是参考华为云官网。
购买链接地址:https://www.huaweicloud.com/solution/gamehosting/
注:具体价格以实际官网价为准,华为云618营销季(6月1日-6月30日)期间有优惠
服务器 |
服务器配置 |
gate |
X86计算 | 通用计算增强型 | c7.xlarge.2 | 4核 | 8GB; CentOS | CentOS 7.x 64bit; 通用型SSD | 40GB; 通用型SSD | 100GB; |
gm |
X86计算 | 通用计算增强型 | c7.xlarge.2 | 4核 | 8GB; CentOS | CentOS 7.x 64bit; 通用型SSD | 40GB; 通用型SSD | 100GB; |
game_游戏服 |
X86计算 | 通用计算增强型 | c7.2xlarge.2 | 8核 | 16GB; CentOS | CentOS 8.2 64bit; 通用型SSD | 40GB; 通用型SSD | 100GB; |
room—战斗计算逻辑服 |
X86计算 | 通用计算增强型 | c7.2xlarge.2 | 8核 | 16GB; CentOS | CentOS 8.2 64bit; 通用型SSD | 40GB; 通用型SSD | 100GB; |
公网IP |
独享 | 全动态BGP | 按流量计费 |
redis |
基础版 | 5.0 | 主备 | X86 | DRAM | 2副本 | 8 GB; |
游戏数据库 |
社区版 | 副本集 | 三节点 | 通用型 | 4核8GB; 超高IO | 100GB; |
游戏数据库 |
MySQL | 8.0 | 主备 | 独享型 | 4核8GBSSD云盘 | 100GB |
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服务
yum -y install docker
service docker start
2.2.2 打包镜像
将jar包拷贝到和dockerfile相同目录下,执行下面命令,打包镜像。
docker build -t ImageName:TagName dir
2.2.3 将镜像打包为本地文件
镜像导出为压缩包,方便传输。
docker save 镜像id > 文件名.tar
2.2.4 解包镜像
登录到服务器之后,将上面的文件拷贝到本机,使用下面的命令将镜像导入到当前机器:
docker load < 文件名.tar
2.3 部署脚本
docker run -itd \-e ENV=dev \-e serverId=8818 \-p 9223:9222 \--name game8818 \-v /home/docker/8818:/app/log \-v /etc/timezone:/etc/timezone:ro \-v /etc/localtime:/etc/localtime:ro \--restart=always harborserver.pdool.com/pdool/game:0.0.37-SNAPSHOT
注:上述是开发环境,环境变量在有些是默认,在正式环境部署时候需要动态调整
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环境
yum -y install docker
3.4.2 拷贝文件到目标机器
文件列表如下:
- 镜像文件,根据2.2 中相关命令,拷贝到本地,如果用私有仓库,则不需要执行此步骤。
- 拷贝配置文件到机器,将所有的excel配置文件拷贝到机器,并在启动脚本中配置挂载
- 启动脚本,在规划的目录下创建并修改启动脚本,设置相应的参数。
3.4.3 脚本执行
在所有的文件都准备好之后,切换到脚本所在目录,可以直接启动脚本,下面以game为例
sh start_game.sh
3.4.4 验证服务器正常
首先查看所有服务器的日志是否有报错异常,然后使用特殊账号进行登录,验证服务器功能正常
验证点:
- 可以正常登录
- 可以匹配战斗
- http接口正常
- 服务器操作正常
- 主要业务逻辑正常。
验证以上逻辑后通知测试同学进行功能测试。
3.4.5 开服
待测试同学测试通过后,通过gm设置服务器状态为开服状态,部署流程结束。
4、总结
- 不打无准备之仗,方能立于不败之地,临门一脚,提前准备,考虑周全。
- 九层之台,起于垒土,好的云服务厂商可以让事情更简单,更容易,华为云值得作为首选。
华为云游戏云端部署解决方案,提供覆盖全球的云基础设施,支撑百万级玩家同时在线稳定运行,结合云上运维运营,助力游戏企业实现业务的快速上线和弹性扩展,有效应对游戏的突发性需求和游戏企业出海发展需求。
公司内部资料!游戏上线前部署准备,就这新手都行相关推荐
- 游戏上线前服务器压力测试应该怎么做
伴随手游上线推广,玩家爆发式增长非常常见,不少开发者都遇到过玩家冲爆服务器的情况.因此降低服务器崩溃的风险就显得非常重要.游戏上线前如果做了服务器压力测试帮助会很大.今天就来说说压力测试. 编写脚本机 ...
- 游戏上线日程序员锁死服务器是怎么回事
程序员锁死服务器导致什么后果?程序员为什么要锁死网站服务器?近日深圳某互联网游戏公司程序员燕某在游戏上线测试当天锁死服务器与电脑,并恶意失踪,致公司损失惨重的事在网上曝光并引起热议.现在该公司已解散, ...
- 什么仇什么怨?游戏上线日程序员“锁库跑路”,致公司破产解散
这到底是什么仇什么怨呢? 程序员在游戏上线当天锁死服务器! 项目失败,创始人负债打工! 近日,深圳市螃蟹网络科技有限公司创始人尹柏霖发文控诉,前员工燕某在游戏上线测试当天(2017年12月15日),锁 ...
- [vue] vue部署上线前需要做哪些准备工作?
[vue] vue部署上线前需要做哪些准备工作? router 是不是hash 是否需要配置nginx , publicPath , 是不是要配置cdn 个人简介 我是歌谣,欢迎和大家一起交流前后端知 ...
- 关于xcode6打包以及上线前企业部署测试的说明 --转自张诚教授微博
xcode6如何打包 首先clean然后点击归档 点击打包 之后保存 点选第一个以后检查相关证书签名 那么我们开发完以后,在上线前如何给别人测试 有2种方法 1.使用299美金的企业开发者账号搭建企业 ...
- 2020 年,云游戏将爆发?各大科技公司云游戏布局大曝光!
作者 | 年素清 责编 | 伍杏玲 出品 | CSDN云计算(ID:CSDNcloud) 伴随5G技术加速落地,云游戏作为5G应用落地的最佳场景,已经成为全球游戏厂商和云服务厂商布局的重要战场.根据艾 ...
- 大公司里怎样开发和部署前端代码?
这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中. 在我的印象中,facebook是这个领域的鼻祖,有兴趣.有梯子的同 ...
- 上线前checklist
上线的checklist可简要分为以下3个部分: 一.准备阶段 1. 上线前培训 上线前给相关人员进行培训. 首先:需要给客户进行培训,让客户提前了解改动的功能点.避免出现功能上线后,客户并不知情,一 ...
- 嗯?上线前用LeakCanary检测了啊,怎么线上还有OOM?
/ 前言 / 性能优化是一个老生常谈的问题,也一直是Android中高级攻城狮进阶和深入的方向. 在性能优化的各种问题中,内存泄漏一直占有较重要的地位. 内存泄漏的积累会造成内存溢出,进而导致 ...
最新文章
- 前百度主任架构师创业,两年融资千万美元,他说AI新药研发将迎来黄金十年...
- 未来计算机能帮人们做什么,未来的计算机阅读答案
- ubuntu卸载vsftpd出错
- 计算机电路基础学什么,"计算机电路基础"学习辅导.doc
- springmvc拦截器对请求参数解密_SpringMVC拦截器如何修改请求参数
- linux脚本base64加密当时,【加密算法】Base64
- 思必驰十年创业,(现在)是一家怎样的公司?
- 如何解决Backup Exec Remote Agent推送安装失败的问题
- [LAMP]——mod_security和mod_evasive模块的安装
- tinymce 编辑器 上传图片
- 线性电阻软件的伏安特性曲线测试,线性电阻和非线性电阻的伏安特性曲线
- 金蝶K3CLOUD7.2内部培训PPT下载
- tas5424_TAS5424A 4 通道汽车数字放大器
- CUDA开源 轻松跑AMD GPU/Intel x86 CPU
- 阿尔伯塔大学知名计算机工程学教授,阿尔伯塔大学计算机工程硕士解析
- 云杰恒指:8.27恒指期货实盘指导交易复盘
- hexo 实现主页每日一言功能
- HTTP的SSL 证书安装
- 免费在线http代理
- sublime3 text 文件名称中文显示成框框
热门文章
- 敏捷项目管理-如何破解敏捷实践中的三大难题
- 微信 理财通 进不去怎么办?
- Python 随机种子介绍,PyTorch 中随机种子的设置与应用
- 快速多目标检测——YOLO9000
- App Store Connect Operation Error
- 手机端html展示pdf
- 为什么数据透视表不能分组_问题分组数据透视表项
- 网页文件被加入恶意百度跳转代码\x64\x6f\x63\x75\x6d\x65\x6e\x74 【解密】
- android x86玩和平精英,这几款安卓手机玩和平精英,让体验与操作更好,关键它们还便宜...
- 利用Bmob快速实现安卓的简单登陆注册功能Bmobsdk3.6.9版本亲测可用(详细图文攻略附带处理小bug)