基本原理
简介
ZooKeeper是一个分布式、高可用的协调服务器。在华为大数据产品中主要提供两个功能:
- 帮助系统避免单点故障,建立可靠的应用程序
- 提供分布式写作服务和维护配置信息
结构
Zookeeper集群中的节点分为三种角色:Leader、Follower和Observer,其结构和关系如图所示。通常来说,需要在集群中配置奇数个(2N+1)Zookeeper服务,至少(N+1)个投票才能成功的执行写操作。
名称 | 描述 |
---|---|
Leader | 在Zookeeper集群中只有一个节点作为集群的领导者,有Follower通过Zookeeper Atomic Broadcast(ZAB)协议选举产生,主要负责接收和协调所有写请求,并把写入的信息同步到Follower和Observer |
Follower | Follower的功能有两个:1每个Follower都作为Leader的储备,当Leader故障时重新选举Leader,避免单点故障。2处理读请求,并配合Leader一起进行写请求处理 |
Observer | Observer不参与选举和写请求的投票,只负责处理读请求,避免系统处理能力浪费。 |
Client | Zookeeper集群的客户端,对Zookeeper集群进行读写操作。例如HBase可以作为Zookeeper集群的客户端,利用Zookeeper集群的仲裁功能,控制其HAMaster的"Active"和"Standby"状态 |
如果集群启用了安全服务,在连接Zookeeper时需要进行身份认证,认证方式有以下两种:
- keytab方式:需要从管理员处获取一个"人机"用户,用于登录FushionInsight HD并通过认证,并且获取该用户的keytab文件。
- 票据方式:从管理员处获取一个"人机"用户,用于后续的安全登录,开启Kerberos服务的renewable和forwardable并且设置票据刷新周期,开启成功后重启kerveros及相关组件
原理
写请求
1.Follower或Observer接收到写请求后,转发给Leader。
2.Leader协调个Follower,通过投票机制决定是否接受该请求。
3.如果超过半数以上的Leader、Follower节点返回写入成功,那么Leader提交该请求并返回成功,否则返回失败。
4.Follower或Observer返回写请求处理结果。
只读请求
客户端直接向Leader、Follower或Observer读取数据
网友评论