我对ZooKeeper的理解是客户端总是从ITS的角度以有序的方式执行请求。
因此,如果客户1发布:
但是如果客户端1在节点C上也有监视,并且客户端2写入该节点,那么在节点C上写入是否会影响/阻止来自客户端1的读取?
例如:
答案 0 :(得分:0)
但是如果客户端1在节点C上也有手表,而客户端2则写 该节点,是否在节点C上进行写入会影响/阻止从客户端读取数据 1个
它没有阻止从client1读取,因为(检查here):
创建ZooKeeper对象时,还将创建两个线程: IO线程和事件线程。所有IO发生在IO线程上 (使用Java NIO)。所有事件回调都在事件线程上发生。
但影响 client1并以此顺序查看事件(检查here):
客户端将看到之前正在监视的znode的监视事件 查看与该znode对应的新数据。
下一个问题是:
客户端1是否阻塞,直到C的手表被解雇?
否(请参阅上面的说明)。
如果此时客户端1尝试写入节点C怎么办?
它将覆盖client2的写操作,因为它会根据您的项目符号顺序在之后发生(ZooKeeper is ordered;也请检查here,以了解ZooKeeper如何实现订购)。 / p>