手游项目,策划会给过来很多张配置表(几十到一百不等),每张表的大小从几个字节到上百 KB 不等,数据格式是 json
现在想在设计上如何来存放这些数据:
1.rds+redis
这样做的好处是配置表可以通过 GM 后台随时修改,做负载均衡也比较容易,缺点是大的配置表从 redis 读取出来再反序列化成对象性能上可能有问题(主要是数据量大的话比较耗时)
2.程序启动的时候将所有配置表读取出来挂载在一个全局的对象上
这样做性能上应该比 1 好,但是修改起来和做负载均衡的时候就比较麻烦了
这块应该如何做呢?
语言:golang
1
lihongjie0209 2019-06-04 15:51:08 +08:00
有几十万配置项? 为什么要考虑性能问题?
|
2
imherer OP @lihongjie0209 有啊
好多地方都要读取配置表里的数据做一些业务上的操作啊 |
3
gaius 2019-06-04 16:13:19 +08:00
即时加载,方便暗改吗
|
4
snappyone 2019-06-04 16:14:21 +08:00
结合下不就可以了吗,本地一份缓存,数据库修改后推送到本地缓存
|
5
SakuraSa 2019-06-04 16:23:09 +08:00
可能 启动时加载+变更推送 会好一点,配置可以实时生效,反序列化也仅在数据变动的时候
|
6
SakuraSa 2019-06-04 16:23:52 +08:00
可以用 zookeeper 或者 consul 之类的系统实现配置变动通知
|
7
peyppicp 2019-06-04 16:39:16 +08:00
1+2 结合,服务端定时从 redis 拉取配置
后台修改完数据后,直接干掉 redis 对应的缓存项就完毕了,之后定时任务拉取的时候在重新放回 redis 里 |