游戏服务端避免不了在线情况下,需要临时修改配置数据。那么如何动态去更新在运行中的数据资源呢。
a. 如果数据是文件配置:
思路: 最简单的是监控目录变更,执行内部重载资源接口。也可以写shell脚本执行服务端程序对外接口。目的主要是触发执行重载接口。
监控代码思路参考之前文章:目录监控
b. 如果是数据库配置 :
思路: 后台web或者脚本shell或其他由外部触发服务器接口进行更新。
c. 其他。
不管方式方法各种各样,唯一目的执行重载接口。个人认为目录监控静态数据最方便。只需要把数据文件更新到每个服务器即可。
另外注意的是程序代码中使用配置文件数据不能临时存储,必须集中管理。什么意思呢。
例如:
private Map<Integer, Res> res; // 全局静态资源引用
如果在某个地方有除了上面的引用外,还有如下临时引用。
private Res res; // 临时
如果这时候要更新资源数据的话,就必须更新这2部分引用。显然是比较麻烦。