1:Zookeeper
zookeeper是一个分布式协调服务,为用户的分布式应用程序提供协调服务
zookeeper是为别的分布式程序服务的
zookeeper本身也是一个分布式程序
功能:
1:为用户提供数据的注册,查询功能
2:为用户提供注册监听功能
3,为用户保持心跳以动态感知用户的状态
2:选举机制
Leader:
zookeeper集群的工作核心。
集群内部所有服务的调度者
Follower:
处理客户端非事务请求,转发事务请求给Leader;
参与集群的选举投票。
如果访问量比较大的zookeeper集群,还可以新增观察者角色
Observer:
观察者角色,观察zookeeper集群的最新状态变化并将这些状态同步,其对于非事务请求可以进行独立处理,对于事物请求会转发给leader
zookeeper服务器有四种状态分别是
Looking,寻找Leader状态,处于该状态需要进入选举流程
Followering,跟随者状态,表示leader已经选举出来,当前节点是follower
Leading,领导者状态,处于该状态的节点说明已经是leader
Observering:表示现在是观察者
zookeeper工作选举机制:
原则上:
默认半数以上的机器同意,当前的节点就是leader
默认半数以上的机器存活,zookeeper集群就能对外提供服务
过程:
举例:有三台集群
启动第一台:looking follower
启动第二台 : leader
启动第三台: follower
当访问node1时,这是由于只有一个节点,所以没有follower和leader
访问node2时它会先比较node1和node2的version,选择version新的作为leader
version一样,再比较逻辑时钟,时钟大的为leader
如果逻辑时钟一致,再比较ID,ID大的为leader
如果version新,但是逻辑时钟小,先同步逻辑时钟,再重新选举,这时根据id,id大的是leader
所以因为zookeeper中一共三个节点,所以当访问node3时,node2已经有2票,node3的票数不会比他大,所以不再比较,直接将node3定位follower