0

我想知道在以下情况下,zookeeper 是如何承诺客户端 FIFO 顺序的。

客户端向服务器发送三个操作,设置 a = 1,设置 b = 1,设置就绪 = true。

有没有可能这种情况set a = 1是leader处理的,那么这个tcp连接有问题,这个client重新连接一个新的tcp连接到leader,但是set b = 1操作正在进行中. 然后客户端将使用新的 tcp 连接发送 set ready = true 操作。所以设置 a = 1 被操作,设置 b = 1 不被操作,并且 set ready = true 也被操作。

问题是zab如何承诺客户端先进先出顺序?

zab 可以重新发送所有没有得到领导者回复的操作。那么在这种情况下,当客户端重新连接到leader时,它会重新发送操作set b = 1,set ready = true。

这是 zab 用来启动 FIFO 订单的方式吗?

谢谢你们

4

0 回答 0