栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

zookeeper

zookeeper

文章目录
  • ZAB协议(zookeeper atomic broadcast)
  • zookeeper是什么
  • zookeeper 文件系统
  • ZooKeeper命令行
  • Zookeeper Watcher 机制-数据变更通知
  • 服务器角色

ZAB协议(zookeeper atomic broadcast)

所有的写数据操作都由Leader完成,然后同步到Follower,如果写请求发送到了Follower, Follower 会将请求转发到Leader处理。

Leader收到客户端的请求后,会将请求封装成一个事务,然后分配给这个事务一个ID(ZXID),ZAB协议要保证事务的顺序,因此需要将事务按照ZXID排序然后处理,这里主要是通过消息队列实现。

ZXID AtomicLong 高32位记录选举周期 低32位记录实际ID。

ZAB Leader 选举

针对每一个投票,服务器都需要将别人的投票和自己的投票进行 PK,PK 规则如下

  1. 优先检查 ZXID。ZXID 比较大的服务器优先作为Leader
    如果 leader 选举算法能够保证新选举出来的 Leader 服务器拥有集群中所有机器最高编号(ZXID 最大)的事务Proposal,那么就可以保证这个新选举出来的 Leader 一定具有已经提交的提案。因为所有提案被 COMMIT 之前必须有超过半数的 follower ACK,即必须有超过半数节点的服务器的事务日志上有该提案的 proposal,因此,只要有合法数量的节点正常工作,就必然有一个节点保存了所有被 COMMIT 消息的 proposal 状态

  2. 如果 ZXID 相同,那么就比较 myid。myid 较大的服务器作为 Leader 服务器。

Raft Leader 选举

  1. 每个服务器在一个任期内只能投一票,并且使先到者先得(即投票给自己收到的第一个请求投票的,满足要求的服务器的请求)
  2. 请求投票的消息中需要带有请求者所处的当前任期号。
  3. 投票者只会投票给任期号大于等于自己当前任期号的服务器。
zookeeper是什么

zookeeper 是一个开源的分布式的协调服务
Zookeeper保证了如下分布式移植性:

  1. 顺序一致性
  2. 原子性
  3. 单一试图
  4. 可靠性
  5. 最终一致性
    客户端的读请求可以被集群中的任意一台机器处理,如果请求在节点上注册了监听器,这个监听器也是由所连接的zookeeper机器来处理。对写请求,这些请求会同时发给其他zookeeper机器来处理,对于写请求,这些请求会同时发给其他zookeeper机器并且达成一致后请求才会返回成功。
    因此,随着zookeeper的集群机器增多,读请求的吞吐会提高,但是写请求的吞吐量会下降。

有序性:所有的更新都是全局有序的,每个更新都有一个唯一的时间戳,这个时间戳称为zxid。而请求只会对于更新有序,也就是读请求的返回结果找那个会带有这个zookeeper的zxid。

zookeeper 文件系统

zookeeper提供了一个多层级的节点命名空间(znode),与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统有文件节点可以存放数据而目录节点不行。

ZooKeeper命令行

在安装目录bin下,执行zkcli.cmd 或zkcli.sh。然后输入命令。
常用命令:
(1)查看数据:ls, ls2
(2)获取数据:get

Zookeeper Watcher 机制-数据变更通知

Zookeeper允许客户端像某个服务端的某个Znode注册一个Watcher箭筒,当服务端的一些指定事件触发了这个Watcher,服务端会向客户端发送一个事件通知,然后客户端根据Watcher通知状态和时间类型做出业务上的改变。
工作机制:
1)客户端注册 watcher
2)服务端处理 watcher
3)客户端回调 watcher

服务器角色

Leader
Follower
Observer

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号