Zookeeper简单认识
Zookeeper简单认识
什么是Zookeeper?
ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
Zookeeper的角色
- Leader:领导者,核心,事务请求的唯一调度者保证事务集群处理的顺序性,集群内各个服务的调度者
- Follower:跟随着,处理客户的非事务请求,事务请求则交给领导者处理,参与领导选举投票
- Observer:观察者,观察Zookeeper的状态,能够独立处理非事务请求,不参与领导选举投票
Zookeeper的特性
- 全局数据的一致:每个 server 保存一份相同的数据副本,client 无论链接到哪个 server,展示的数据都是一致的
- 可靠性
- 顺序性
- 数据更新原子性
- 实时性:ZooKeeper 保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息
Zookeeper的好处
- 简单的分布式协调过程
- 同步
- 有序的信息
- 序列化
- 可靠性
- 原子性
层次命名空间
ZooKeeper节点称为 znode 。每个znode由一个名称标识,并用路径(/)序列分隔
- 根节点下有两个逻辑命名空间config和workers
- config 命名空间用于集中式配置管理,workers 命名空间用于命名
- 在config命名空间下,每个znode最多可存储1MB的数据。这与UNIX文件系统相类似,除了父znode也可以存储数据。这种结构的主要目的是存储同步数据并描述znode的元数据。此结构称为ZooKeeper数据模型。
Znode兼具文件和目录两种特点。既像文件一样维护着数据长度、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个Znode由三个部分组成:
- stat:此为状态信息,描述该Znode版本、权限等信息。
- data:与该Znode关联的数据
- children:该Znode下的节点
Znode的其它信息:
- 版本号: 每个znode都有版本号,这意味着每当与znode相关联的数据发生变化时,其对应的版本号也会增加。当多个zookeeper客户端尝试在同一znode上执行操作时,版本号的使用就很重要。
- 操作控制列表(ACL):ACL基本上是访问znode的认证机制。它管理所有znode读取和写入操作。
- 时间戳:时间戳表示创建和修改znode所经过的时间。它通常以毫秒为单位。ZooKeeper从“事务ID”(zxid)标识znode的每个更改。Zxid 是唯一的,并且为每个事务保留时间,以便你可以轻松地确定从一个请求到另一个请求所经过的时间。
- 数据长度:存储在znode中的数据总量是数据长度。你最多可以存储1MB的数据。
Znode的类型
Znode被分为持久(persistent)节点,顺序(sequential)节点和临时(ephemeral)节点。
- 持久节点:即使在创建该特定znode的客户端断开连接后,持久节点仍然存在。默认情况下,除非另有说明,否则所有znode都是持久的。
- 临时节点:客户端活跃时,临时节点就是有效的
- 顺序节点:顺序节点可以是持久的或临时的
参考:https://www.w3cschool.cn/zookeeper/zookeeper_overview.html
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我做梦的博客!
评论

