Zookeeper

ZooKeeper 是一个由Apache软件基金会开发的开源分布式协调和配置服务。它主要用于大型分布式系统中,用来解决诸如配置管理、服务发现、同步服务等分布式系统常见问题。允许分布式进程通过共享的层次名字空间,这是一组以目录树方式组织的数据注册引用,共同协调信息。

特点

最终一致性:客户端看到的数据最终是一致的。
可靠性:服务器保存了消息,那么它就一直都存在。
实时性:ZooKeeper 不能保证两个客户端同时得到刚更新的数据。
独立性(等待无关):不同客户端直接互不影响。
原子性:更新要不成功要不失败,没有第三个状态。

核心功能

1. 配置管理

允许分布式应用程序从中央存储库读取应用程序设置和配置信息,当配置信息更新时可以即时通知到各个应用实例。

2. 名称服务

提供了一个全局唯一的命名空间,用于解决名字到系统资源或服务的映射问题。

3. 分布式锁

可以提供跨多个节点的分布式锁服务,确保在分布式环境中只有一个进程能执行关键代码段。

4. 选举机制

对于需要选出一个主节点(Leader)的分布式系统,ZooKeeper 是一个理想的解决方案,它可以协助进行 Leader 选举。

5. 队列管理

可以实现分布式队列,确保任务的安全执行并保证任务不会被重复执行。

6. 节点和数据模型

架构是树形结构,每个节点称为 Znode,既可以用于存储数据,也可以用于监控子节点的变化。

7. 通知机制

提供了一个基于推送的通知机制,客户端可以在znode发生变化时获得通知,从而更新本地数据或执行相关操作。

8. 可靠性和顺序性

保证了一个客户端请求的串行执行,并为服务中的每个更新都分配一个全局唯一的递增编号,保证了顺序性和一致性。

9. 多客户端协调

支持从多个客户端并发访问,而且保证客户端间的逻辑一致性。

10. 持久性和临时性节点

zookeeper中的节点可以是持久化的也可以是临时的。持久化节点在创建后会一直存在,直到显式删除;临时节点在创建它的客户端会话结束时自动删除。

Znode

类型

持久 Znode(Persistent Znode)

它们在创建后会一直存在于 ZooKeeper 中,直到明确删除。

持久znode可以有子节点,子节点也可以是持久的。

临时 Znode(Ephemeral Znode)

它们的生命周期绑定到创建znode的客户端会话。当会话结束时,临时znode会被自动删除。

临时znode不可以有子节点。

顺序 Znode(Sequential Znode)

在创建时,ZooKeeper 会自动在znode名称后附加一个单调递增的计数器作为后缀,这保证了节点名称的唯一性。临时和持久节点都可以是顺序的。

特性

路径:每个znode都由一个路径标识,这个路径是绝对路径,类似于文件系统中的路径,以斜杠(/)为开始。

序列化节点:znode可以被设置为顺序性的,即当它们被创建时,ZooKeeper会自动在名称后附加一个递增的计数器。这对于实现一些复杂的协调机制,如分布式队列、锁等非常有用。

数据和版本号:每个znode保存的数据可以有大小限制,并可以更改。每次数据被更改,ZooKeeper都会增加该

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值