请问这是不是 zookeeper 的乱用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrXiong
V2EX    Java

请问这是不是 zookeeper 的乱用

  •  
  •   MrXiong 2018-02-06 17:20:19 +08:00 6064 次点击
    这是一个创建于 2887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司的项目中,因为是需要部署多台服务,使用了 zookeeper 作为配置中心,但是吧所有的配置都放到 zk 中是不是对 zk 的乱用,如果是的话,那么能够介绍少下哪些数据适合放在 zk 当中,哪些不适合

    18 条回复    2018-02-14 16:05:32 +08:00
    yuchenyang1994
        1
    yuchenyang1994  
       2018-02-06 18:58:45 +08:00   1
    我觉得不是,本来就应该集中管理配置
    soli
        2
    soli  
       2018-02-06 19:05:33 +08:00
    你说乱用,那至少举个例子吧。

    我可以说个不适合的,那就是 zookeeper 节点的地址。
    这个要么写死在代码中,要么应该放到本地配置文件。
    whileFalse
        3
    whileFalse  
       2018-02-06 19:39:00 +08:00
    @soli #2 我司是:
    本地调试时,框架写死默认值,本地可以通过环境变量覆盖;
    线上部署时,框架默认值失效,通过环境变量传入。

    不过我们用的不是 zookeeper。
    NUT
        4
    NUT  
       2018-02-06 19:51:06 +08:00
    zk 我们通用的做法是在整个配置中心 作为 通知版本更新角色 。每一个配置的每一次修改都会产生一个版本号。而真正的版本是通过 http 请求的。 这样尽可能的避免 zk 的错误导致配置不用。 具体参考下 disconf。
    owenliang
        5
    owenliang  
       2018-02-06 20:14:15 +08:00 via Android
    读 zk 取配置肯定不是啥好事,毕竟业务 value 可能还挺大的。

    但是单纯作为通知机制,也需要考虑数据更新后,zk 触发动作失败,一般也只能靠客户端定时拉来补偿。
    Rickkkkkkk
        6
    Rickkkkkkk  
       2018-02-06 20:26:34 +08:00
    这是 zk 的典型应用啊...
    EmdeBoas
        7
    EmdeBoas  
       2018-02-06 21:00:30 +08:00
    ZAB 的论文里面提到了 znode 存储 meta 属性的大小对性能影响是很大的(印象里面是最大,第二是 watch 数),如果修改不频繁的话可能还好,毕竟本地 session 有缓存。但一般都不会把配置文件直接丢进 znode 吧.....
    xuxueli
        8
    xuxueli  
       2018-02-06 21:48:50 +08:00 via Android
    zk 来维护配置数据没问题的。
    1、数据体积:一个 node 维护一条配置,作为配置数据不会太大的,可以看下现有的 prop 文件。
    2、配置数量:单机 watch 节点三千,阿里的测试报告 tps 可以跑到八九千。可以用除法简单计算下可以支撑的机器数。而且,zk 可以很方便的做集群。

    http://www.xuxueli.com/xxl-conf/#/
    billlee
        9
    billlee  
       2018-02-06 22:03:19 +08:00
    没什么问题,kafka 0.9 以前还直接把 offset 往 zookeeper 里面存呢
    metrxqin
        10
    metrxqin  
       2018-02-06 23:46:31 +08:00 via Android
    zk metadata 最大 1M,建议放入少量数据,如果配置文件 URL 而不是完整配置信息。
    PureWhite
        11
    PureWhite  
       2018-02-06 23:49:02 +08:00
    没毛病,参考 k8s 和 etcd
    vebuqi
        12
    vebuqi  
       2018-02-07 00:01:25 +08:00
    见过把 zk 当数据库用的吗
    rrfeng
        13
    rrfeng  
       2018-02-07 08:36:05 +08:00 via Android
    没什么毛病,但是以后可能遇到问题。
    seancheer
        14
    seancheer  
       2018-02-07 10:00:42 +08:00
    zookeeper 适用于读多写少的场景,写都是通过 leader 往里面写,写多的话肯定效率很差,这么用应该也没问题,但是分布式有专门的分布式配置管理工具,没必要一定要用 zookeeper
    lybuestc
        15
    lybuestc  
       2018-02-07 15:44:56 +08:00
    配置要确保通知到,且要比较及时。同时要满足两者还是客户端长轮询拉取靠谱。量小怎么用都没事,支持的客户端多了就不能这样用了
    cominghome
        16
    cominghome  
       2018-02-07 16:34:09 +08:00
    @owenliang 不用实时更新到客户端,基本上启动的时候取一次就可以了,非要动态获取的话做个轮询,后端集群不太大情况下 ZK 还是没什么压力的
    linsage186
        17
    linsage186  
       2018-02-14 14:58:34 +08:00
    @xuxueli 已 star,1.3.1 版本有更新计划么,maven 还是 1.3.0 的,希望能支持 spring boot 结合
    xuxueli
        18
    xuxueli  
       2018-02-14 16:05:32 +08:00 via Android
    @linsage186 感谢关注哈。
    1.3.1 正在 master 分支进行迭代,这次将会迭代很多新特性,预计春节发布。
    springboot 预计会在 1.4 大版本引入啊。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2577 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:50 PVG 21:50 LAX 05:50 JFK 08:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86