https://blog.csdn.net/weijifeng_/article/details/79775738
介绍
是一个分布式协正常调服务,就是为用户的分布式应用程序提供协调服务
A:zookeeper是为别的分布式程序服务的
B:zookeeper本身就是一个分布式程序(只要有半数以上的节点存活,就能正常服务)
C:zookeeper所提供的服务涵盖,主从协调,服务器节点动态上下线 ,统一配置管理,分布式共享锁,统一名称服务。。。
D:虽然说可以提供各种服务,但zookeeper在底层其实只提供了两种服务
管理(存储,读)用户提交的数据
并为数据提供监听服务
应用场景,不适合要求数据安全非常严格,因为当集群数量比较大,选举leader的时间会较长,这段时间的数据可能丢失。
一致性
- 强一致性 当一台机器修改后,另一台一定会读到最新的修改信息
- 弱一致性 当一台机器修改后,另一台可能会读到最新的修改信息
- 最终一致性
数据格式
1:层次化的目录结构,命名符合常规文件系统规范(见下图)
2:每个节点在zookeeper中叫做znode,并且有唯一的路径标识
3:节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点)
4:客户端应用可以在节点上设置监听器。
分布式的CAP理论
- Consistency:一致性(强一致性)
- Availability:可用性
- Partition Tolerance:分区容错性
钱财安全(CP),用户体验(AP)
集群写一致性(同步)过程
1:领导
2:两阶段提交 1)leader向follower预提交 2)follower向leader返回ack(响应) 3)过半响应则证明可以执行请求 commit进行写请求
3:过半回复
多台机器同时写操作
有个单线程的queue(队列),确保顺序,即zxid。
lead选举机制
1:zxid最大的(即最新的)。
2:如果zxid一致则选择id最大的。
最后选择票数最多的
A(id=1;zxid=10) B(id=2;zxid=10) C()
第一次 [a(1,10)] [b(2,10)]
同步 [a(1,10),b[2,10]] [b(2,10),a(1,10)]
第二次对比 [b(2,10),b[2,10]] [b(2,10)]
同步 [b(2,10),b[2,10]] [b(2,10),b[2,10]]
3台机器有两个都选的B,B成为领导者。