1.假设有两个客户端A和B,分别连接到zk集群的server1和server2上面,zk集群假设有五个节点,分别从server1到server5,A客户端执行更新某个目录下内容:假设把该目录下的内容设置为值Y,设置前目录的值为X,此时如果A通知B去获取说更新目录操作已经完成,那么此时B去获取server2获取目录的内容的值会是什么?答案是A或者B都有可能,原因是zk的数据一致性只是保证更新目录内容为Y时,有三个server服务器(比如server1,server4,server5)都进行了该目录的修改操作,那么就意味着更新完成,但是此时其实server2的值仍然可能为旧的X的值,这就是造成了数据不一致。
2.问题1的解决方法其实非常简单,B客户端注册监听目录的内容变更,这样只有server2的目录内容真正变化的时候才会通知客户端B,此时B客户端获取到的内容肯定是最新的内容值
zk的数据一致性问题
最新推荐文章于 2024-06-19 15:08:23 发布