zookeeper数据结构、节点、选主功能

简介

  • ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。

  • ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。

  • Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据。ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。

数据存储结构

image.png
Zookeeper 数据以树形式存储

  • 每个节点上可以存储数据,最大1M
  • 非临时节点可包含N个子节点
  • 每个节点有自己属性:版本号、时间戳、数据长度、ACL

监听

  • 根节点监听:监听整个树结构
  • 父节点监听:监听子节点变化
  • 数据监听:监听指定某一个节点数据变化

监听事件

  • 创建、修改、删除

实现方式

  • 循环监听
  • 回调

节点

节点属性

image.png

  • cZxid: 节点创建时事务id
  • mZxid: 数据节点最后一次更新时的事务ID
  • pZxid: 数据节点的子节点列表最后一次被修改事务ID(子节点列表变更,而非内容)
  • cversion: 子节点的版本号
  • dataVersion: 数据节点的版本号
  • aclVersion: 数据节点的ACL版本号
  • ephemeralOwner: 临时节点为会话id,非临时为0
  • datalengh: 数据内容的长度
  • numChildren: 数据节点当前的子节点个数

节点类型

  • persistent(持久节点)

在创建该特定znode的客户端断开连接后,持久节点仍然存在

  • sequential(顺序序列)

客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除,只有临时节点不允许有子节点

  • ephemeral(临时节点)

顺序节点可以是持久的或临时的。当一个新的znode被创建为一个顺序节点时,ZooKeeper通过将10位的序列号附加到原始名称来设置znode的路径

节点常用命令

创建持久节点(默认是持久节点)
 	create /persistent  persistent_data
创建顺序节点
 	create -s /sequential sequential_data
创建临时节点
	create -e /ephemeral ephemeral_data
节点查看
	ls /persistent  
节点值获取去
	get /persistent  
节点删除
	delete /persistent 
	deleteall /persistent  
 修改节点值
	set /persistent  new_persistent _data  

仲裁

在仲裁模式中,zookeeper 复制集群中所有数据。如果客户端需要等待每个服务器完成数据的保存后在继续,会出现延时的问题,延时在大流量的访问中,是不可接受的,为了尽可能降低延时,ZK采用法定人数思想,保证ZK正常工作的小集群数量。

选主

  • 那些情况下选主

集群中已存在leader,新节点加入
节点无法与leader 通信或主节点已崩溃

选主过程

image.png

  • 每个服务器彼此会接收到一张由选票voteId, zxid 组成唯一标识选票
  • 收方获取选票zxid 与自己选票(myNoteId, myZxid)比较,如果(zxid > myZxid)或者(zxid = myZxid 并且 voteId > myNoteId), 修改自己选票为对方选票标识,否则保留自己选票
  • 依次选举,经过仲裁机制,选出leader。 完成后每个节点与leader 同步状态

总结

以上是对zookeeper 简单介绍,springboot与zookeeper 集成请参考另一篇博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值