Zookeeper的架构

1.Zookeeper的概述

Apache Zookeeper是一个可靠高效的分布式应用的协调服务系统,主要解决分布式系统存在的一些通用问题。比如分布式集群管理、集群选举、配置中心、统一命名服务、分布式锁(同步锁)等问题

2.Zookeeper架构

Zookeeper关键词:一致、有头、数据树

1.ZAB协议

ZAB( Zookeeper Atomic Broadcast)Zookeeper原子广播协议,Zookeeper是通过ZAB协议保证分布式事务的最终一致性。

1.Zab协议的特性

  1. Zab协议需要确保那些已经在Leader服务器上提交(Commit)的事务最终被所有的服务器提交。
  2. Zab协议需要确保丢弃那些只在Leader上提出而没有被提交的事务

在这里插入图片描述

2.Zab协议原理

Zab协议要求每个Leader都有经历三个阶段:发现、同步、广播。

  1. 发现: 要求Zookeeper集群必须选出一个Leader进程,同时Leader会维护一个Follower可用客户端列表。将来客户端可以和这些Follower节点进行通信。
  2. 同步:Leader要负责将本身的数据与Follower完成同步,做到多副本存储。这样也是提现了CAP中的高可用和分区容错。Follower将队列中未处理完的请求消费完成后,写入本地事务日志中。
  3. 广播:Leader 可以接受客户端新的事务Proposal请求,将新的Proposal请求广播给所有的 Follower。

3.Zab协议核心

Zab协议的核心:定义了事务请求的处理方式

  1. 所有的事务请求必须由一个全局唯一的服务器协调处理,这样的服务器称为Leader服务器。其他的服务器则是Follower服务器。
  2. Leader服务器 负责将一个客户端事务请求,转换成一个 事务Proposal(提案),并将该 Proposal 分发给集群中所有的 Follower 服务器,也就是向所有 Follower 节点发送数据广播请求(或数据复制)
  3. 分发之后Leader服务器需要等待所有Follower服务器的反馈(Ack请求),在Zab协议中,只要超过半数的Follower服务器进行了正确的反馈后(也就是收到半数以上的Follower的Ack请求),那么 Leader 就会再次向所有的 Follower服务器发送 Commit 消息,要求其将上一个 事务proposal 进行提交。
    在这里插入图片描述

2.Zookeeper架构图

在这里插入图片描述

1.客户端发送一个写操作请求
2.Leader服务器将客户端的request请求转化为事务proposal提案,同时为每个proposal分配一个全局唯一的ID,即ZXID。
3.Leader服务器与每个follower之间都有一个队列,leader将消息发送到该队列。
4.follower机器从队列中取出消息处理完(写入本地事务日志中)毕后,向leader服务器发送ACK确认。
5.leader服务器收到半数以上的follower的ACK后,即可认为可以发送commit.
6.leader向所有的follower服务器发送commit消息

3.ZNode的类型

  1. 永久节点(Persistent Node):当Zookeeper客户端在Zookeeper服务器写入(创建)一个永久节点,永久存在,只有当客户端再调用删除指令时,永久节点销毁。
  2. 临时节点(Ephemeral Node):实现集群监听的主要节点,临时节点的生命周期依赖于同它创建发会话(session),一旦创建zonde的客户端和服务器失去联系,这个znode的客户端和服务器失去联系,这个znode也将自动删除,注:临时节点下不允许有子节点
  3. 顺序节点(Sequential Node):不能单独使用,需要搭配永久或者临时节点使用。创建一个顺序节点的时候,Zookeeper自动的为节点后面加上一个10位的有序序号(原子递增)。如:创建一个永久顺序节点,节点名叫/app1,会自动添加有序的序号/app10000000000
  4. zonde 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的。

4.Watches

Watches是Zookeeper中非常重要的一个组件,称为监视器。

Watches可以监视ZNode的改变:

  1. 监视指定ZNode上的数据的改变。
  2. 监视指定ZNode子节点数量的改变。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值