公司内部资料!游戏上线前部署准备,就这新手都行

news2024/11/25 18:47:17

前言

游戏做的差不多了,是时候准备上线测试部署了,选一个靠谱的云服务器厂商还是很重要,这次准备尝试用下华为云的服务,为了在上线前做足准备,先做一次预演,省得到时候手忙脚乱。也给其他的同事做一个文档记录。

1、游戏架构介绍

1.1 服务器架构

不同的公司有不同的游戏服务器架构,所以部署的具体细节大多不相同,但是基本的部署准备还是一样的,先看下我们的游戏架构,方便读者朋友了解后续的准备工作。

1.1.1 服务器角色具体介绍下

  • client:游戏客户端。
  • gate:网关服,这里不承载游戏的链接,仅仅做游戏服务器的地址发放,玩家从gate服获取正式游戏服的ip和端口。
  • game:玩家主要在的游戏服务器,只有一个。
  • room:房间服,玩家匹配进入战斗后将进入战斗服,如果战斗多可以做动态扩展。
  • Gm:后台管理服务器,可以做活动的发布或者管理玩家数据。
  • redis: 这里主要用来做缓存,避免数据库的频繁访问压力。
  • mysql: 主要用来做数据的持久化。

1.1.2 玩家数据流

  1. 玩家(client)通过http方式访问gate服务器,获取game服务的ip和端口。
  2. client通过拿到的ip和端口直连game服务器,这样玩家就登录进了服务器。
  3. 当玩家操作角色进行匹配战斗的时候,匹配成功后会将需要的数据传入room服务器,所有的战斗指令也会被传入room服务。
  4. 当玩家需要查询数据时,比如想获得背包,game服会先像redis查询,如果数据不存在,则像mysql查询,查询到数据后会存入缓存。
  5. 当玩家角色数据发生变化时,比如获得了新的道具,这个时候需要操作数据库,game服务器会先更新数据库然后更新缓存。
  6. 当发布活动和修改玩家数据的时候使用gm,通过发布指令到game服。

1.1.3 服务间交互协议

  • http协议:主要发生在访问场景比较少的地方,client 和gate,game和Gm之间。
  • dubbo协议:主要使用在内部服务器之间交互数据,好处是简单直接,像操作本地方法一样。
  • webscoket:主要用在client和game之间,因为这是一个网页游戏的服务器,所以使用了websocket。

1.2 部署方式

这里使用docker的方式,原因有几点:

  1. 标准化应用发布,避免环境带来的问题。
  2. 节约时间,方便快速部署和启动。
  3. 团队同学比较熟悉,降低犯错的可能性。

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 注意点

  1. gate服务器需要开通公网ip。
  2. excel配置文件要提前规划,在docker脚本中挂载
  3. docker 挂载的数据目录和日志目录需要提前规划。
  4. 每个服务器内部的端口映射要提前规划
  5. 环境变量需要在脚本中修改,包括mysql 和redis 数据库地址,需要链接的服务器ip和端口,以及相关的服务器配置等。

3、正式部署

3.1 环境调研

游戏的痛点:

新游首发、海量玩家在线,高并发访问扩容不及时;

网络时延高,游戏卡顿、玩家掉线;自建周期长成本高,无法弹性伸缩。

大多游戏服务器属于计算密集型的,所以游戏服务器云厂商选择核心点有以下几条:

  1. 资源扩容能力,能及时扩容,根据需求灵活购买资源,实现动态扩展、成本优化,支持游戏开服、扩服、并服等场景的业务运行。
  2. 稳定的带宽,华为云内网带宽转发效率高,ELB亿级并发,动态自动优化网络结构,网络持续、稳定、高效、低时延。
  3. 安全防御,华为云提供了单线路T级DDoS高防IP服务以及百万QPS级CC防护,基于黑客攻击机器学习、业务风控大数据智能隔离等AI能力,保障中手游游戏长期安全运行。
  4. 资费,好用且便宜是每个公司的追求,降本增效,多种计费模式,起步预算低,按需使用,用多少付多少,有效缓解企业初创资金压力,更省钱。

总结:华为云游戏云端部署解决方案,提供覆盖全球的云基础设施,支撑千万级玩家同时在线稳定运行,助力游戏企业打造精品化游戏,保障游戏弹性部署和无忧运维。

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 拷贝文件到目标机器

文件列表如下:

  1. 镜像文件,根据2.2 中相关命令,拷贝到本地,如果用私有仓库,则不需要执行此步骤。
  2. 拷贝配置文件到机器,将所有的excel配置文件拷贝到机器,并在启动脚本中配置挂载
  3. 启动脚本,在规划的目录下创建并修改启动脚本,设置相应的参数。

3.4.3 脚本执行

在所有的文件都准备好之后,切换到脚本所在目录,可以直接启动脚本,下面以game为例

sh start_game.sh

3.4.4 验证服务器正常

首先查看所有服务器的日志是否有报错异常,然后使用特殊账号进行登录,验证服务器功能正常

验证点:

  1. 可以正常登录
  2. 可以匹配战斗
  3. http接口正常
  4. 服务器操作正常
  5. 主要业务逻辑正常。

验证以上逻辑后通知测试同学进行功能测试。

3.4.5 开服

待测试同学测试通过后,通过gm设置服务器状态为开服状态,部署流程结束。

4、总结

  • 不打无准备之仗,方能立于不败之地,临门一脚,提前准备,考虑周全。
  • 九层之台,起于垒土,好的云服务厂商可以让事情更简单,更容易,华为云值得作为首选。

华为云游戏云端部署解决方案,提供覆盖全球的云基础设施,支撑百万级玩家同时在线稳定运行,结合云上运维运营,助力游戏企业实现业务的快速上线和弹性扩展,有效应对游戏的突发性需求和游戏企业出海发展需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PRL:中国科大观测到单体量子系统中最强的量子互文性

近期&#xff0c;中国科学技术大学郭光灿院士团队在量子物理基本问题研究中取得重要进展。 ——该团队李传锋、许金时等与南开大学陈景灵教授、西班牙塞维利亚大学Adn Cabello教授等合作&#xff0c;实验研究了单体高维量子系统中对应于多体非定域性的量子关联&#xff0c;从而…

数据库管理-第八十三期 炒点冷饭(20230620)

数据库管理 2023-06-20 第八十三期 抄点冷饭1 ORA-040312 Shared Pool3 Library Cache4 Doc ID 2590172.15 Bug 34832725总结 第八十三期 抄点冷饭 上周&#xff0c;借着剩余的两天年假&#xff0c;又从300多个小时中拿了3天出来&#xff0c;加上前后两个周末&#xff0c;去泰…

结合符号性记忆,清华等提出ChatDB,提升大模型的复杂推理能力

结合符号性记忆&#xff0c;清华等提出ChatDB&#xff0c;提升大模型的复杂推理能力 随着大语言模型&#xff08;Large Language Models&#xff09;的爆火&#xff0c;例如 ChatGPT&#xff0c;GPT-4&#xff0c;PaLM&#xff0c;LLaMA 等&#xff0c;如何让大语言模型更好的…

自动化测试如何区分用例集合?你一定要知道

目录 前言 业务量和复杂度增长现状是什么&#xff1f; 如何区分自动化测试的用例集合&#xff1f; 区分用例集合的过程要注意什么&#xff1f; 总结&#xff1a; 前言 有同学在后台问到&#xff1a;业务比较复杂&#xff0c;有很多串行并行甚至组合的业务场景&#xff0c;执…

NeurIPS 2022|DeepMind最新研究:大模型背后的ICL可能与数据分布密切相关

NeurIPS 2022&#xff5c;DeepMind最新研究&#xff1a;大模型背后的ICL可能与数据分布密切相关 大模型自然语言处理机器学习 传统的文本语言模型倾向于两阶段的训练模式&#xff0c;即首先在大规模语料库上进行预训练&#xff0c;然后在目标下游任务上进行微调&#xff0c;这…

应届毕业生自荐信7篇

应届毕业生自荐信1 尊敬的贵公司领导&#xff1a; 您好&#xff01; 非常感谢您在百忙中抽空审阅我的自荐信&#xff0c;给予我毛遂自荐的机会。作为一名大专的应届毕业生&#xff0c;我热爱我的专业并为其投入了巨大的热情和精力。在几年的学习生活中&#xff0c;系统学习了物…

入行IC,优选哪些工作城市?

首先大家要知道大公司的一个布局&#xff0c;他们大都是在北上广深&#xff0c;一般他们都是总部&#xff0c;市场客户支持肯定是要放在这些地方&#xff0c;因为这些地方离客户比较近&#xff0c;ZF也能给予一些优惠政策。 国内优秀的IC设计公司主要分布在以下几个城市: 1.上…

创新项目,用心服务 | 凌恩客户亲述“我和凌恩的故事”

主人公简介 武冲&#xff0c;山东省果树研究所草莓团队负责人&#xff0c;副研究员&#xff0c;主要从事草莓新品种选育、种苗繁育及栽培技术研究&#xff0c;主持省部级科研项目3项&#xff0c;以第一作者或通讯作者发表论文30余篇&#xff0c;其中SCI论文8篇&#xff0c;授权…

centos下的Nginx的安装

1.Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。其特点是占有内存少&#xff0c;并发能力强。 其他服务器介绍&#xff1a;Apache服务器、Tomcat服务器、Lighttpd服务器 2.nginx依赖安装 yum -y instal…

Ansible部署和常用模块

一、 ansible 的概述 1、ansible简介 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成&#xff0c;类似于saltstack和Puppet&#xff0c;但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 …

Codesys高速计数应用(ST功能块)

Codesys如何创建FB请参看下面文章链接: CODESYS增量式PID功能块(ST完整源代码)_RXXW_Dor的博客-CSDN博客增量式PID的详细算法公式和博途源代码,请参看下面的文章链接:博途1200/1500PLC增量式PID算法(详细SCL代码)_博图scl语言pid增量编码器_RXXW_Dor的博客-CSDN博客。http…

Doo Prime 德璞资本:期货开户条件大盘点,你知道几个?

期货交易作为国内投资交易市场中的一大板块&#xff0c;越来越受到广大投资者的关注&#xff0c;期货市场是一种特殊的金融市场&#xff0c;需要满足一定的条件才能开通期货账户&#xff0c;但是很多人想要进行期货交易&#xff0c;却不知道期货开户条件是什么&#xff1f;一般…

【TA100】3.6 纹理压缩

一、什么是纹理压缩 ● 纹理压缩是&#xff1a; ○ 为了解决内存、带宽问题&#xff0c;专为在计算机图形渲染系统中存储纹理而使用的图像压缩技术。 ● 区分图片格式和纹理压缩格式 ○ 概念上讲 ■ 图片格式&#xff1a;● 是图片文件的存储格式&#xff0c;通常在硬盘、…

Python之Flask Blueprint(蓝本)

文章目录 一、前言二、实例讲解2.1 蓝本创建2.2 导入蓝本2.3 蓝本注册 参考资料 一、前言 在进行Python Web开发时选择Flask框架。项目模块划分阶段&#xff0c;使用Blueprint(这里暂且称之为“蓝本”)。Blueprint通过把实现不同功能的module分开&#xff0c;从而把一个大的ap…

强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧&#xff08;调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍&#xff1a;【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧…

选择排序 - C语言实现

目录 &#x1f970;前言 ✅选择排序 &#x1f95d;基本思想 &#x1f95d;实现逻辑 &#x1f95d;动图演示 复杂度分析 &#x1f60d;代码实现 &#x1f6a9;优化改进-->二元选择排序 &#x1f60d; 改进代码 前言 &#x1f970;在学数据结构的第一节课就知道了数据结…

02. 青龙面板应用——安装依赖拉取仓库运行京东脚本(保姆级图文)

目录 1. 安装依赖1.1 常用依赖1.2 安装指定依赖 2. 定时规则3. 常用的仓库地址4. 添加订阅5. 运行订阅6. 获取京东手机版cookie7. 在青龙面板中添加京东cookie8. 测试任意一个京东的定时任务总结 欢迎关注 『青龙面板』 专栏&#xff0c;持续更新中 欢迎关注 『青龙面板』 专栏…

Linux基础服务1——Openssh

文章目录 一、基本简介二、登录示例2.1 当前用户登录2.2 指定用户登录 三、ssh主机密钥四、ssh免密登录五、服务端配置文件5.1 连接端口号5.2 限制只能使用普通用户登录5.3 密钥登录 六、SSH安全注意事项 一、基本简介 常见远程登录工具&#xff1a; telnet&#xff0c;认证明文…

Java 获取水库流域并判断雨量站是否在水库流域范围内或附近

获取水库流域并判断雨量站是否在水库流域范围内或附近 准备工作 水库流域区域的geojson文件雨量站的经纬度 工具类 这里有两个方法&#xff1a; isInsideBoundary&#xff1a;判断雨量站是否在流域范围内calculateNearestDistance&#xff1a;计算雨量站和流域边界点最近距…

100种思维模型之马斯洛需求层次理论-81

马斯洛需求层次理论是人本主义科学理论之一&#xff0c;由美国心理学家亚伯拉罕马斯洛在1943年在《人类激励理论》论文中所提出。 文中将人类需求像阶梯一样从低到高按层次分为五种&#xff0c;分别是&#xff1a;生理需求、安全需求、社交需求、尊重需求和自我实现需求。 一、…