zookeeper集群的特点:
- 一个leader,多个follower组成集群
- 全局数据一致性:每一个server都保存一份相同的数据副本,client无论连接哪台server都可以获取到数据
- 分布式读写,更新请求,转发给leader,由leader来实施更新操作,然后再数据同步到其他节点上
- 更新请求顺序进行,来自同一个client的更新请求都是按照发送的顺序依次执行 更新的原子性,要不全部更新成功,要么就失败
- 实时性,在一定的时间范围内,client能读取到最新的数据
zookeeper的功能:
- 为用户提供数据的注册查询功能
- 为用户提供数据监听服务
- 通过心跳感知用户状态
应用场景
服务器动态上下线感知
主从协调
配置管理
分布式共享锁
选举机制
1、初始化过程中的选举(选出已经启动的节点中的Id大的那个为老大)
先开启第一台机器,发出投票,总结出自己1张票,集群处于looking状态
开启第2台机器,发出投票,两台机器各一票,重新投,投票结果Id大的胜出。
2号是leader。
开启第3台机器,直接置为follower状态
2、运行过程中的选举
数据version、逻辑时钟、Id大的
数据版本大的,如果逻辑时钟小,则忽略该次选举结果,同步逻辑时钟,再重新选举