zookeeper
zookeeper是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。
一、zookeeper的特点
1.也是一个分布式集群,一个领导者leader 。 多个跟随者 follower
2.集群只要又半数以上的节点存活,zookeeper集群就能正常服务
3.全局数据的一致性,每个server保存一份相同的数据副本,client无论到哪个server,数据都是一致的
4.更新请求按照顺序进行,来自同一个client的更新请求按其发送顺序依次执行
5.数据更新的原子性,一次数据的更新要么成功要么失败
6.数据的实时性:在一定时间范围内client能读到最新数据。
二、zookeeper的工作原理
2.1选举制度
- 1. 基于节点在半数以上才能正常服务的要求,Zookeeper适合装在奇数台机器。
- 2. Zookeeper没有在配置文件中指定leader和follower,而是使用算法(Paxos)在内部通过选举机制
来选择一个节点为leader,其他节点为follower。
/*选举制度中的四个概念*/
- serverid:服务器id
比如有三台服务器,编号分别为1,2,3。编号越大在选择算法中的权重越大
- zxid:数据id
服务器中存放的最大数据ID。值越大说明数据越新,在选举算法中的权重越大
- Epoch:逻辑时钟
也可以称之为每个服务器参加投票的次数。同一轮投票过程中的逻辑次数
优先级:Epoch > zxid >serverid
- Server状态:选举状态
• LOOKING:竞选状态
• FOLLOWING:随从状态,同步leader状态,参与选票
• OBSERVING:观察状态,同步leader状态,不参与选票
• LEADER:领导者状态
2.2 zookeeper写数据流程
1. Client向Zookeeper的server1上写数据,发送一个写请求
2. 如果server1不是leader,那么server1会把请求进一步转发给leader。
3. 这个leader会将写请求广播给所有server。
4. 各个Server写成功后就会通知leader。
5. 当leader收到半数以上的server写成功的通知,就说明数据写成功了。写成功后,leader会告诉server1数据写成功了。
6. server1会进一步通知Client数据写成功了。这时就认为整个写操作成功。
三、zookeeper的数据模型
zookeeper 的数据模型采用的与Unix文件系统封类似的层次化属性结构。可以理解为具有高可用特征的文件系统
/*
这个文件系统中没有文件和目录。而是同意采用“节点Node”概念,称之为znode。
znode既可以作为保存数据的容器,也可以作为保存其他zonde的容器,所有的zonde构成了一个层次化命名空间。
- 类unix的文件树形层的一个组织结构
- 只有一个根节点
- 节点称之为znode
- 每一个znode 都可以存储数据,最大1M。相当于文件存储系统的文件
- 每一个znode 都和一存储子znode 的名称,相当于文件存储系统的目录
*/
四、zookeeper的应用场景
-面试时至少说出四个
- 集群管理节点的管理 HA
- 服务节点的动态上下线感知
- 分布式队列
- 分布式锁
/*课后百度学习补充*/