zookeeper 核心概念

zookeeper 核心概念

选举机制

image-20200921081203743

1.半数机制:zookeeper 集群只要有一半的机器保持存活状态。zookeeper 集群就处于可用状态,因此zookeeper 适合安装奇数台机器

2.zookeeper 虽然在配置中没有明确配置 master 和 slave 节点,但集群在运行时却在初始化运行时会根据选举机制选举出 leader 和 flower 机制。符合主从架构。

3.选举机制:半数以上机器选择(半数以上代表的是整个zookeeper 集群中机器的半数),优先选择编号高的,一旦确定leader不会轻易改变。

以5台机器的 zookeeper 集群为例,说明 zookeeper 选举机制。

假设这些机器都是最新启动,也没有历史数据。这些服务器编号myid 从 1 -5 。依照编号从 1- 5 启动。

1号机器启动,发出选举报文信息没有任何响应,所以选举状态一直处于 looking 状态。

2号机器启动,它与1号机器通信,由于 id 编号较大,在选举中胜出,但由于没有达到超过半数以上机器选举它,所以也没能成为 leader,也处于 looking 状态

3号机器启动,此时它与1号和2号机器通信,并且1号2号因为3号的id编号大,所以选择它作为leader,它自己也投了本身1票,超过了集群半数的要求,所以成为 zookeeper集群的leader。

4号机器启动,由于4号编号大,理论上应选择它为集群的leader,由于启动顺序晚于 3 号机,前2个机器已经选择 3 号机器作为leader,所以 4号只能当folwer

5号机器启动,由于5号编号大,理论上应选择它为集群的leader,由于启动顺序晚于 3 号机,前4个机器已经选择 3 号机器作为leader,所以 5号只能当folwer

注意,集群启动顺序不同,会产生不同的选举结果。由上面的选举机制可以看出集群只要有3台机器,这个zookeeper就可以正常对外提供服务。因此zookeeper 适合安装奇数机器。

文件结构与节点类型

image-20200921081255401

zookeeper 文件结构是一个类 unix 的文件树结构。每个文件目录中的节点,我们称之为 znode,zookeeper在 znode 上进行数据存储,znode 默认存储数据大小为 1M。

znode 节点可以分为 持久性节点和短暂性节点。

持久性节点创建后,客户端关闭不会被删除。

短暂性节点创建后,会在当前客户端存活是保存,当前客户端关闭,节点被删除。 create -e

上述两个节点又可以分为带序号节点和不带序号节点 。序号由上层父节点负责维护。在分布式系统中我们可以通过序号标识一个时间的时间顺序。

watch 监控机制

image-20200921081325402

1.首先客户端存在一个主线程 Main() 线程。

2.在主线程 Main 中创建 zookeeper 的客户端zkclient,此时 zkclient 会创建两个线程 connect 线程和 listener 线程

3.connect 线程负责注册监听事件到 zookeeper 服务端集群。并与客户端保持通信

4.zookeeper 服务端会把注册信息加入 注册监听器列表

5.zookeeper服务端 当监听发现到数据或路径改变时,就把改变的消息发送到 zkClient 的 listener 进程

6.listenter 内部调用 process()方法进行响应处理

常见的监听分为:

​ 监听节点数据发生的变化 znode

​ 监听节点增加删除(路径变化)

通过常见监听我们也可发现 zookeeper是一个基于观察者模式的文件目录树系统。

写数据流程

image-20200921081411007

zookeeper 集群中各个机器数据保持一致性。且实时同步。正式因为这一特性,zookeeper 才适合做统一信息,配置管理。zookeeper写数据采用了广播通信。

写数据流程:

​ 1.client 向 zookeeper 发送写数据请求。

​ 2.如果连接的zookeeper 节点不是 leader,flower节点会把请求转发到 leader机器。

​ 3.leader 把写请求通过广播机制,传递给各个 节点。节点接收到写请求,进行写数据。

​ 4.当 leader 收到半数以上机器的写成功响应,就会通知client连接的zookeeper 节点写成功

​ 5. client连接的zookeeper 节点通知zookeeper 客户端,写数据成功。

zookeeper的部署方式?集群角色?至少需要几台机器?

部署方式:单机部署,伪分布式:(通过启动不同配置文件,启动zookeeper在不同端口),分布式环境

集群角色: leader , folwer (主从架构)选举机制

至少需要机器数量: 3台,zookeeper 因为集群中有半数机器存活就可正常使用,所以适合配置奇数台机器。

zookeeper 常用命令

image-20200915204649309
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值