服务器灰度更新

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

灰度更新的思想是,

例如:

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

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

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

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

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

 

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

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

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

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

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

 

TODO

 

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看