关于实现sharedata配置与hotfix同步更新
前言
skynet_fly有3种热更。
make/script/check_reload.sh
检测可热更服务新服替代旧服。可以认为是进程内灰度更新。make/script/check_hotfix.sh
检测可热更服务可热更脚本更新,不会刷旧服务,可以认为是刷脚本。make/script/upsharedata.sh
检测配置更新,可以认为是更新配置。
之前3种更新方式,可以说是完全独立,互不影响的。但是有更新配置的存在,会有一个隐患。
旧服务新配置
例如初始脚本功能如下(真正代码的配置不是这样的,这里只是举个简单例子):
1 |
|
以前的方式,直接更新配置如下:
1 |
|
把b删掉了,功能代码还是旧的,此时代码肯定会报错了。
因为之前调用upsharedata.sh
,监听cfg
配置的服务接收到配置版本更新,会立马切换到新配置,就会存在以上的隐患,配置和功能代码没有同步修改。
通常我们修改功能一般会配置和代码同步修改,保证同步更新就不会有问题,比如如下这样,配置和功能代码一起更新。
1 |
|
更新行为变更
make/script/check_reload.sh
行为没有修改。make/script/check_hotfix.sh
更新脚本前先切换可能更新的新配置。加了切换配置后,更新行为不可逆,需要确保代码不出错。注意 脚本中的hotfix
方法不要有异步,否则异步的脚本后面未更新的脚本就不是同步更新了。make/script/upsharedata.sh
更新配置后,各服务接收到版本更新后,不会立马切换到新版本,而是获取到新版本的配置,暂存,等待hotfix.sh
触发再切换到新版本。
关于实现sharedata配置与hotfix同步更新
https://huahua132.github.io/2025/08/16/skynet_fly_ss/sharedata_hotfix/