一、zookeeper的节点类型:
persist(永久) | ephemeral(临时) ## ephemeral节点会随着session的结束或者crash而被删除, persist需要被手动删除
sequence | non—sequence(非序列化节点) ## 多个客户端创建non-sequence节点,只有一个能创建成功 多个用户同时创建sequence节点,都能成功,但是会加上10位数字的编号
二、zookeeper的选举:(myid) ,以3台机器为例
#非公平性选举 (效率高,拓展性不强)
1.选举过程 # 3台机器同时向zkroot注册zkleader/的non-sequence节点,先到先得,其他失败的都是 follower
2.放弃leader # 只需要删除zkleader节点就行,如果是ephemeral类型会随着session的结束自动删除
3.follower感知放弃leader # 每个follower会watch leader状态,leader一旦下线,所有follower 都收到通知,重新选举
4.重新选举 # 与之前的选举模式一样,重新选举
#公平性选举(逻辑复杂,但是拓展性高 ,其实都是利用了分布式锁的可重入的特性)
1.选举过程 # 3台机器同时创建non-sequence节点,节点序列最小的为leader
2.放弃leader # delete zkleader/节点
3.follower感知放弃leader # 每个follower只会监听比自己序列id小的节点,当leader下线后,只有监 听leader的节点会收到通知
4.重新选举 # 然后followr判断自己序列id是否最小,如果最小直接选举为leader