V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
imherer
V2EX  ›  程序员

关于配置表数据应该如何存放的问题

  •  
  •   imherer · 2019-06-04 15:45:59 +08:00 · 1240 次点击
    这是一个创建于 1998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    手游项目,策划会给过来很多张配置表(几十到一百不等),每张表的大小从几个字节到上百 KB 不等,数据格式是 json

    现在想在设计上如何来存放这些数据:

    1.rds+redis

    这样做的好处是配置表可以通过 GM 后台随时修改,做负载均衡也比较容易,缺点是大的配置表从 redis 读取出来再反序列化成对象性能上可能有问题(主要是数据量大的话比较耗时)

    2.程序启动的时候将所有配置表读取出来挂载在一个全局的对象上

    这样做性能上应该比 1 好,但是修改起来和做负载均衡的时候就比较麻烦了

    这块应该如何做呢?

    语言:golang

    7 条回复    2019-06-04 16:39:16 +08:00
    lihongjie0209
        1
    lihongjie0209  
       2019-06-04 15:51:08 +08:00
    有几十万配置项? 为什么要考虑性能问题?
    imherer
        2
    imherer  
    OP
       2019-06-04 15:55:53 +08:00
    @lihongjie0209 有啊
    好多地方都要读取配置表里的数据做一些业务上的操作啊
    gaius
        3
    gaius  
       2019-06-04 16:13:19 +08:00
    即时加载,方便暗改吗
    snappyone
        4
    snappyone  
       2019-06-04 16:14:21 +08:00
    结合下不就可以了吗,本地一份缓存,数据库修改后推送到本地缓存
    SakuraSa
        5
    SakuraSa  
       2019-06-04 16:23:09 +08:00
    可能 启动时加载+变更推送 会好一点,配置可以实时生效,反序列化也仅在数据变动的时候
    SakuraSa
        6
    SakuraSa  
       2019-06-04 16:23:52 +08:00
    可以用 zookeeper 或者 consul 之类的系统实现配置变动通知
    peyppicp
        7
    peyppicp  
       2019-06-04 16:39:16 +08:00
    1+2 结合,服务端定时从 redis 拉取配置
    后台修改完数据后,直接干掉 redis 对应的缓存项就完毕了,之后定时任务拉取的时候在重新放回 redis 里
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2734 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:30 · PVG 21:30 · LAX 05:30 · JFK 08:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.