zookeeper 的顺序一致性,当 client 连接到不同 server 的时候如何保证? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
cheesea
V2EX    程序员

zookeeper 的顺序一致性,当 client 连接到不同 server 的时候如何保证?

  •  
  •   cheesea 2020-09-11 01:20:17 +08:00 2374 次点击
    这是一个创建于 1858 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假如有两台 zk server 。

    client 先设置一个结点的值为 1,再更新为 2.

    client 先从 server1 读取到最新的值 2,然后断开和 server1 的连接,再重新连接到 server2 。这时候 server2 有可能还没更新到最新值 2(比如因为网络的原因,server1 已经接收到 leader 的 commit 消息,但是 server2 还没有收到),那不就不满足一致性了吗?

    7 条回复    2022-05-30 13:29:22 +08:00
    yeqizhang
        1
    yeqizhang  
       2020-09-11 08:28:11 +08:00 via Android
    不存在的,你更新 Server1 为 2 时,其它也要更新为 2,所有节点 ack 后才算更新成功。不然你读到的 Server1 还是 1
    yeqizhang
        2
    yeqizhang  
       2020-09-11 09:08:07 +08:00 via Android
    不好意思,我查了下,上面我是按我的记忆说的,事实不是如此。zk 不保证强一致性
    xx6412223
        3
    xx6412223  
       2020-09-11 09:42:49 +08:00
    保证不了
    aliwalker
        4
    aliwalker  
       2020-09-11 10:49:39 +08:00
    zk 只能保证 client 的 FIFO order,一个 client 发的所有请求会按照顺序执行,但并不是强一致性的,而是保证最终一致性。你说的这个情况是 zk 的读操作会读到 stale 值,需要通过 sync(path)一下才能保证最新值。
    cheesea
        5
    cheesea  
    OP
       2020-09-11 11:11:56 +08:00
    @aliwalker 你好,我翻了一下官方文档,发现里面有这么一句话,
    Single System Image : A client will see the same view of the service regardless of the server that it connects to.
    没理解错的话,似乎无论连接到哪台服务器,获取的值都是相同的 。但是按照 zk 的同步机制,确实又不是强一致性的。很奇怪。
    还有个问题请教下,假如有多个客户端并发写,zk 只能保证对每个客户端而言是有序的。比如 client1 写操作 A,B,client2 写 C,D,那最终写顺序可能是 A,C,B,D ?
    mitiskysean
        6
    mitiskysean  
       2020-09-11 14:37:55 +08:00
    ZK 确保达成一致后,不论你怎么读都是唯一且确定的,协议就是干这个事情的啊。至于你说的顺序,那不是 ZK 处理的范畴啊。对于 Value 设置成 A,然后改成 B,ZK 保证大家看到都是 B 。其它人又改成 C,那 ZK 只需确保都看到 C 仅此而已。这里的顺序是事件发生的顺序,zk 通过 FIFO 做到和事情发生顺序一即可。
    JasonLaw
        7
    JasonLaw  
       2022-05-30 13:29:22 +08:00
    @cheesea #5 如果 ZooKeeper 是先执行 set x = 1 ,然后执行 set x = 2 ,同一个 client 不会先看到 2 ,然后再看到 1 。

    看完
    &t=2315s 你就知道为什么了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2753 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:09 PVG 23:09 LAX 08:09 JFK 11:09
    Do have faith in what you're doing.
    ubao 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