Zookeeper 中的 CAP

一致性 C: Zookeeper 是强一致性系统,为了保证较强的可用性,"一半以上成功即成功"的数据同步方式可能会导致部分节点的数据不一致。所以 Zookeeper 还提供了 sync() 操作来做所有节点的数据同步,这就关于 C 和 A 的选择问题交给了用户,因为使用 sync()势必会延长同步时间,可用性会有一些损失。

可用性 A: Zookeeper 数据存储在内存中,且各个节点都可以相应读请求,具有好的响应性能。Zookeeper 保证了数据总是可用的,没有锁。并且有一大半的节点所拥有的数据是最新的。

分区容忍性 P: Follower 节点过多会导致增大数据同步的延时(需要半数以上 follower 写完提交)。同时选举过程的收敛速度会变慢,可用性降低。Zookeeper 通过引入 observer 节点缓解了这个问题,增加 observer 节点后集群可接受 client 请求的节点多了,而且 observer 不参与投票,可以提高可用性和扩展性,但是节点多数据同步总归是个问题,所以一致性会有所降低。

相关推荐
小米里的大麦3 小时前
022 基础 IO —— 文件
linux
Xの哲學3 小时前
Perf使用详解
linux·网络·网络协议·算法·架构
门前灯3 小时前
Linux系统之iprconfig 命令详解
linux·运维·服务器·iprconfig
tb_first3 小时前
k8sday09
linux·云原生·容器·kubernetes
忧郁的橙子.3 小时前
三、k8s 1.29 之 安装2
linux·运维·服务器
huangyuchi.4 小时前
【Linux系统】动静态库的制作
linux·运维·服务器·动态库·静态库·库的简单制作
写bug写bug4 小时前
分布式锁的使用场景和常见实现(下)
分布式·后端·面试
jim写博客4 小时前
Linux进程概念(四)环境地址变量
linux·运维·服务器
稚辉君.MCA_P8_Java5 小时前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
Nie_Xun5 小时前
ubuntu网络共享
linux·运维·ubuntu