ZooKeeper集群原理

本文详细介绍了ZooKeeper的底层数据结构,包括数据、ACL、元数据和子节点引用。还讨论了其通知机制(Watch),服务注册与发现功能,以及如何实现分布式锁。此外,阐述了ZooKeeper集群搭建的好处,如读写分离、容错和扩展性,并描述了Zookeeper的选举原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,底层数据结构

ZooKeeper维护类似一个文件系统的数据结构:

 树结构的文件系统。

每个节点有四部分组成:

  • data: Znode存储的数据信息
  • ACL:记录Znode的访问权限
  • stat:Znode的各种元数据,比如事务ID,版本号。
  • child: 当前节点的子节点引用

二,通知机制(Watch)

我们可以把Watch理解成是注册在特定的Znode上的触发器,当这个Znode发生改变,也就是调用create,delete,setData方法的时候,将会触发Znode上注册的对应事件。请求Watch的客户端会接收到异步通知。见下图:

 

三,服务注册与发现

 

 

 

四:分布式锁

  有了zookeeper的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。

        对于第一类,我们将zookeeper上的一个znode看作是一把锁ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值