1. ZooKeeper是一个分布式协调服务,用于管理大量主机。
- 分布式应用程序并发的在网络中上运行,通过协调不同节点上进程以快速有效的方式完成特定任务。
- 分布式应用程序特点:
高可用,可扩展,透明 - 分布式程序缺点:
竞争条件,死锁,数据的不一致
2. zookeeper功能
功能 | 简介 |
---|---|
命名服务 | 按名称识别集群中的节点。它与DNS类似,但是用于节点。 |
配置管理 | 加入节点的系统配置信息的最新化。 |
群集管理 | 实时连接/离开群集中的节点和节点状态。 |
领导选举 | 选择节点作为协调目标的领导者。 |
锁定和同步服务 | 修改数据时锁定数据。此机制可帮助您在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。 |
高度可靠的数据注册表 | 数据即使在一个或几个节点关闭时的可用性 |
3. zookeeper优点
- 简单的分布式协调过程
- 同步 - 服务器进程之间的相互排斥和协作。此过程有助于Apache HBase进行配置管理。
- 有序消息
- 序列化 - 根据特定规则对数据进行编码。确保您的应用程序运行一致 这种方法可以用在MapReduce中来协调队列以执行正在运行的线程。
- 可靠性
- 原子性
4. zookeeper体系包含
- 客户端
- ZK服务器(ZK集群中节点)
- ZK集群(ZooKeeper服务器组。组成一个集合所需的最小节点数是3)分为Leader和follower
5. zookeeper数据模型
- ZooKeeper节点被称为znode,每个znode最多可以存储1MB的数据。
- ZK的树形结构的主要目的是存储同步数据并描述znode的元数据。这个结构被称为ZooKeeper数据模型。
- ZooKeeper数据模型中的每个znode都维护一个stat结构。统计信息只是提供znode的元数据。它由版本号,动作控制列表(ACL),时间戳和数据长度组成。
名称 | 含义 |
---|---|
版本号 | 每个znode都有一个版本号,这意味着每当与znode相关的数据发生变化时,其相应的版本号也会增加。当多个zookeeper客户端试图通过同一个znode执行操作时,使用版本号很重要。 |
动作控制列表(ACL) | ACL基本上是用于访问znode的认证机制。它管理所有的znode读写操作。 |
时间戳 | 时间戳表示从znode创建和修改过去的时间。它通常以毫秒表示。ZooKeeper从“事务ID”(zxid)中识别对znodes的每个更改。Zxid是唯一的,并为每个事务维护时间,以便您可以轻松识别从一个请求到另一个请求所用的时间。 |
数据长度 | 存储在znode中的数据总量是数据长度。您最多可以存储1MB的数据。 |
6. Znodes的类型
持久性,顺序性和短暂性。
类型 | 含义 |
---|---|
持久性znode | 即使在创建特定znode的客户端断开连接后,持久性znode仍处于活动状态。默认情况下,除非另有说明,否则所有znode都是永久的 |
短暂的znode | 临时的znode在客户活着之前一直处于活动状态。当客户端从ZooKeeper集成中断开连接时,会自动删除临时znode。短暂节点在leader选举中发挥重要作用 |
顺序znode | 顺序znode可以是持久性的也可以是短暂的。ZK创建Znode时通过将一个10位数的序列号附加到原始名称来设置znode的路径。顺序节点在锁定和同步中起着重要作用。 |
7. zookeeper会话机制
- 会话对于ZooKeeper的运行非常重要。
- 会话中的请求按先进先出顺序执行。
- 一旦客户端连接到服务器,会话将被建立并且会话ID被分配给客户端。
8. zookeeper观察机制
- 客户端获取有关ZooKeeper集群中更改的通知的简单机制。