1.Zookeeper 是什么?能做什么?
Zookeeper 是一个开源的,是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务。

可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

Zookeeper 最常用的一个使用场景就是作为注册中心,生产者将自己提供的服务注册到 Zookeeper,然后消费者从 Zookeeper 中拿到生产者的服务列表信息,然后再去调用生产者的内容数据,比如 Dubbo,Kafka 都是使用 Zookeeper 作为注册中心的。
2.说说 Zookeeper 的数据结构吧

ZooKeeper 提供的名称空间与标准文件系统的名称空间非常相似。名称是由斜杠(“ /”)分隔的一系列路径元素。ZooKeeper 命名空间中的每个 znode 均由路径标识。每个 znode 都有一个父对象,其路径是 znode 的前缀,元素少一个;此规则的例外是 root(“ /”),它没有父项。此外,与标准文件系统完全一样,如果 znode 有子节点,则无法删除它。
ZooKeeper 与标准文件系统之间的主要区别在于,每个 znode 都可以具有与之关联的数据(每个文件也可以是目录,反之亦然),并且 znode 限于它们可以拥有的数据量。ZooKeeper 旨在存储协调数据:状态信息,配置,位置信息等。这种元信息通常以千字节(如果不是字节)来度量。ZooKeeper 具有1M的内置完整性检查,以防止将其用作大型数据存储,但是通常,它用于存储小得多的数据。

Znode的三种类型:
- 持久节点(persistent node)节点会被持久
- 临时节点(ephemeral node),客户端断开连接后,ZooKeeper 会自动删除临时节点
- 顺序节点(sequential node),每次创建顺序节点时,ZooKeeper
都会在路径后面自动添加上10位的数字,从1开始,最大是2147483647 (2^32-1)

Znode的四种形式:
- 持久节点:如 create /test/a “hello”,通过 create参数指定为持久节点
- 持久顺序节点:通过 create -s参数指定为顺序节点
- 临时节点:通过 create -e参数指定为顺序节点
- 临时顺序节点:通过 create -s -e参数指定为临时及顺序节点
3.Znode里面都存储了什么?
Znode包含了存储数据(data)、访问权限(acl)、子节点引用(child)、节点状态信息(stat)

本文详细探讨了Zookeeper的各个方面,包括它的作用、数据结构、Znode存储内容、系统架构、ZAB协议、Leader选举以及数据一致性问题。Zookeeper作为一个分布式协调服务,用于数据发布/订阅、命名服务、分布式同步等。其数据结构类似文件系统,支持持久化和临时节点,每个Znode存储数据、访问权限和子节点引用。在系统架构中,Zookeeper包含Leader、Follower和Observer节点,确保集群高可用。ZAB协议确保数据一致性,而选举过程涉及投票和状态切换。虽然Zookeeper设计了严格的机制,但仍然可能存在短暂的数据不一致情况。
最低0.47元/天 解锁文章
1272

被折叠的 条评论
为什么被折叠?



