文档章节

服务器灰度更新

梦想游戏人
 梦想游戏人
发布于 11/08 22:44
字数 691
阅读 35
收藏 0

灰度更新的思想是,

例如:

    在服务器组A,B,C 情况下 全部引流到A 等到玩家引流的差不多之后(这个过程短则几分钟长则几小时)在对服务器组BC进行更新(重启等操作),完成后再把玩家引流到BC,组A玩家迁徙完成后在进行组A的更新(重启的等操作)组A完成后再起来,至此整个更新流程完成。

这个过程有一些注意事项:

            1.新进的客户端会触发客户端更新流程 因此新进的玩家是新版本的,对于新旧版本玩家还在旧的服务器,如果服务器内部没做版本兼容的话,那么就需要阻止不兼容的新旧版本的玩家之间的交互了。

            2.服务器内部的负载均衡算法能够具备屏蔽灰度区的服务器的功能,这样是为了避免服务器新进入的客户端连接到了旧版本的服务器。一般来说多级星形结构天然具备这种优势。新登录的玩家直接分配到新版本的服务器,旧服务器的玩家等自然下线即可。

            3.这个过程最好自动化处理,因为这个过程周期长,操作过程中对错误容忍度低。

 

对于玩家交互的解决方案:

        1.刺激战场的做法是直接屏蔽交互功能,比如组队邀请老版本的玩家直接提示版本过低无法邀请。

        2.服务器内部相互做兼容,这条实现难度非常大,可以不用考虑了。

        3.变相于方案1,改为被接收方(低版本)忽略邀请请求,一般这种都是服务器同时客户端,可以改用不同的消息名字来让低版本客户端忽略消息。

        4.  1和3是忽略处理 如果带有交互的话 比如弹窗告知原因那么就要考虑这种做法了,客户端登录时带上版本号 ,对于不同版本的特定需要屏蔽的RPC都单独进行拦截处理,这种的话方便简单就能处理这个关系了,这一切可以通过配表来处理。

 

TODO

 

© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 36
博文 433
码字总数 123540
作品 0
成都
私信 提问
攻克痛点:DevOps线上部署的最后一公里

本文根据DBAplus社群【运维技术月·第三周】分享整理而成,文末还有好书送哦~ 因为DevOps打通了开发和运维之间以前不可逾越的鸿沟,使得线上部署已经不再仅仅是运维部门的事情了,所以要保障...

杨彪
2017/12/05
0
0
使用shell脚本实现php应用的批量更新

拓扑: control_server 192.168.1.200 lb1 192.168.1.202 lamp1 192.168.1.101 lamp2 192.168.1.102 网站: www.aaa.com 注意点: 1.所有服务器之间通过hosts来解析主机名 2.control_server与......

362475097
2017/02/15
0
0
再流弊的技术,也抵不过一次事故:兼谈技术管理

2015年,业界已经连续出现了几起大的故障。究其根本原因,都是不应该的人为事故。本文从这些大故障说起,主要谈及运维管理相关的一些话题。本文的主要内容包括: 一、不太平的互联网 二、为什...

sima2004
2016/02/05
0
0
授之以渔-运维平台发布模块一(Jenkins篇)

本着步子迈得太大容易扯蛋的原则,平台设计初衷就是能调用开源产品肯定不自己做,这样平台只作为一个综合调度中心使用,无需考虑后面具体的功能实现逻辑。 使用Jenkins还是要追溯到很久很久之...

大Q的梦想
2017/06/10
0
0
基于 cookie 的 node 中间层灰度流程的一些思考

前言 关于灰度发布的介绍此处就不进行介绍了,不清楚的同学可以先读下这两篇文章 《微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布》 《灰度发布:灰度很简单,发布很复杂》 灰度方案...

zwwill木羽
10/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式锁的实现

redis实现分布式锁 方法1:普通实现方案 实现方式: 使用指令: set key 随机值 ex 5 nx.意思是当key不存在的时候设置key. 如果key存在返回OK,否则返回nil. 实现过程: 1.执行命令set key true ...

grace_233
20分钟前
1
0
解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题

关于解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题。 本文可能会对以下现象得以解决: 图片上传组件,没有 [上传] 选项卡。 资源无法加载 [imgupload] ( Uncaught E...

Eller
23分钟前
0
0
限制php解析、user_agent、php相关配置

11月20日任务 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php相关配置 11.28、限定某个目录禁止解析php 核心配置文件内容 <Directory /data/wwwroot/www.123.com/upl...

zgxlinux
28分钟前
1
0
博客园首页新随笔联系订阅管理 随笔

注解Annotation实现原理与自定义注解例子 什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的...

onedotdot
46分钟前
4
1
Spring boot + redis 用RedisTemlate实现简单的String key value 操作

springboot集成redis, 简单的key, value缓存操作. 1. application-local.properties # redis on local#spring.redis.port=6379#spring.redis.host=localhost#spring.redis.password=......

园领T
58分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部