问:写数据,只要大多数节点写成功,则表示写成功,但是此时客户端读取数据时,如果是从那些没写成功的节点读取数据,则读取不到新写入的数据。。。这个能算是强一致性吗?
答:不算。zk的强一致性是通过写操作后的sync强制同步保证的,虽然会影响效率,但是强一致性就必须执行sync。否则也只能是最终一致性。也就是可能出现大多数节点都写成功,但在某个时间段内还是有少数节点没写成功,造成不同客户端查询数据不一致。。。但是在一定的时间范围内,会没写成功的节点写成功,就算写失败了,也会从leader重新同步数据。。确保最终所有节点的数据是一致的。
这篇文章说zookeeper是顺序一致性的,请看: