动物园管理员专家。
我要问的问题可能是您的基本知识,但我是ZK的新手,我还没有掌握该工具,所以请原谅我。考虑到这一点,这是我的问题。
假设我有一个由5台服务器组成的ZK群集,并且具有3个定额。现在,这保证了如果服务器位于两个物理上分开的DC或计算机中,它们就不会进入裂脑方案。
但是,我想知道的是,如果Quorum设置为3,则意味着Leader服务器将需要等待至少2个服务器复制写入的数据,总共3个复制数据。但是,如果客户端连接到不属于Quorum的服务器(两台服务器中的任何一台),那不是意味着它获取了旧数据吗?
最佳答案
首先,您不能“设置”仲裁。它是使用N/2+1
(大多数)从配置中自动计算的,其中N是Zookeeper服务器的数量*。
不属于Quorum的Zookeeper服务器将变得不可用,并且无法将数据存储到客户端,因此不会有看到旧数据的风险。