ZooKeeper 教程
什么是分布式系统?
分布式应用程序是一种可以在网络中的多个系统上运行的应用程序。它通过协调自身来完成某项任务,从而同时运行。任何非分布式应用程序可能需要花费大量时间才能完成这些任务。
什么是 Zookeeper?
阿帕奇动物园管理员 是一种开源分布式协调服务,可帮助管理大量主机。分布式环境中的管理和协调非常棘手。Zookeeper 可自动执行此过程,让开发人员专注于构建软件功能,而不必担心其分布式特性。
Zookeeper 可帮助您维护分布式应用程序的配置信息、命名和组服务。它在集群上实现不同的协议,因此应用程序不必自行实现。它提供了多台机器的单一一致视图。
为什么选择 Apache Zookeeper?
以下是 Zookeeper 受欢迎的重要原因:
- 允许服务器进程之间的相互排斥和合作
- 它确保您的应用程序持续运行。
- 交易过程永远不会部分完成。它要么被赋予成功状态,要么被赋予失败状态。分布式状态可以被阻止,但永远不会出错
- 无论连接到哪个服务器,客户端都能够看到相同的服务视图
- 帮助您按照特定的规则对数据进行编码
- 它有助于维护类似于文件和目录的标准分层命名空间
- 计算机作为单一系统运行,可以本地或地理上连接
- 它允许实时加入/离开集群中的节点和节点状态
- 您可以通过部署更多机器来提高性能
- 它允许您选举一个节点作为领导者,以实现更好的协调
- ZooKeeper 可以快速处理读取数据比写入数据更常见的工作负载
动物园管理员 Archi结构:它是如何工作的?
以下是关于 阿帕奇 Zookeeper 架构:
- Zookeeper 遵循客户端-服务器 Archi质地
- 所有系统都存储数据的副本
- 领导者在创业时选举产生
服务器: 当任何客户端连接时,服务器都会发送确认。如果连接的服务器没有响应,客户端会自动将消息重定向到另一个服务器。
客户:客户端是分布式应用程序集群中的节点之一。它可以帮助您从服务器访问信息。每个客户端都会定期向服务器发送一条消息,帮助服务器了解客户端是否处于活动状态。
负责人: 其中一台服务器被指定为 Leader。它向客户端提供所有信息以及服务器处于活动状态的确认。如果任何连接的节点发生故障,它将执行自动恢复。
追随者: 遵循领导者指令的服务器节点称为追随者。
- 客户端读取请求由相应连接的 Zookeeper 服务器处理
- 客户端写入请求由 Zookeeper 领导处理。
合奏/Cluster: Zookeeper 服务器组,也称为集合或 Cluster。您可以在集群模式下使用 ZooKeeper 基础架构,以使系统在运行 Apache 时处于最佳值。
ZooKeeper Web用户界面: 如果你想使用 ZooKeeper 资源管理,那么你需要使用 WebUI中。它允许使用 Web 用户界面(而不是使用命令行)使用 ZooKeeper。它提供与 ZooKeeper 应用程序的快速有效通信。
Zookeeper 数据模型 (ZDM)
现在,在本 ZooKeeper 教程中,让我们了解 Zookeeper 数据模型。下图解释了 Apache Zookeeper 数据模型:
- zookeeper 数据模型遵循分层命名空间,其中每个节点称为 ZNode。节点是集群运行的系统。
- 每个 ZNode 都有数据。它可能有或没有子节点
- ZNode 路径:
- 规范、斜线分隔和绝对
- 不使用任何相对引用
- 名称可能包含 Unicode 字符
- ZNode 维护数据变化的统计结构和版本号。
Zookeeper 节点的类型
Znode 有三种类型:
坚持 znode:即使创建该特定 znode 的客户端断开连接,此类型的 znode 仍处于活动状态。默认情况下,在 zookeeper 中,如果未指定,则所有节点都是持久的。
短暂的 znode:这种类型的 zookeeper znode 一直处于活动状态,直到客户端活动为止。因此,当客户端与 zookeeper 断开连接时,它也将被删除。此外,临时节点不允许有子节点。
顺序 znode:顺序 znode 可以是临时的,也可以是持久的。因此,当新 znode 被创建为顺序 znode 时,您可以通过在原始名称后附加一个 10 位序列号来指定 znode 的路径。
ZDM-手表
Zookeeper,监视事件是一次性触发器,它会发送给设置监视的客户端。当监视的数据发生变化时,就会发生这种情况。ZDM 监视允许客户端在 znode 发生变化时收到通知。ZDM 读取操作(如 getData()、getChidleren())可以选择设置监视。
监视是有序的,监视事件的顺序与更新的顺序相对应。客户端将能够在看到与该 znode 对应的新数据之前看到 znode 的监视事件。
ZDM——访问控制列表
Zookeeper 使用 ACL 来控制对其 znode 的访问。ACL 由一对 (Scheme: id, permission) 组成
建立 ACL 方案:
世界:有一个 ID,任何人
auth:不使用任何id,它代表任何经过身份验证的用户
摘要:使用用户名:密码
host:允许你使用客户端的主机名作为 ACL id 身份
IP:使用客户端主机IP地址作为ACL id标识
ACL 权限:
- CREATE
- 读
- 您是我们的客人?
- 删除
- ADMIN
例(IP:192.168.0.0/16,已读)
ZKS – 会话状态和生命周期
- 在执行任何请求之前,客户端必须与服务建立会话,这一点很重要
- 客户端发送到服务的所有操作都会自动与会话关联
- 客户端可以连接到集群中的任何服务器。但它只会连接到一台服务器
- 会话提供“顺序保证”。会话中的请求按 FIFO 顺序执行
- 会话的主要状态是 1) 连接中,2) 已连接 3) 关闭 4) 未连接。
如何安装ZooKeeper
步骤1) 点击继续订阅
去这个 链接 并点击“继续订阅”
步骤2) 接受条款和条件
在下一页上,接受许可协议
步骤3) 显示感谢信息
您将看到以下消息
步骤4) 单击继续配置
5分钟后刷新页面并继续配置
步骤5) 点击“继续启动”
在下一个屏幕中,启动 ZooKeeper
步骤6) 祝贺您!
你完成了!
Apache ZooKeeper 应用程序
Apache Zookeeper 用于以下目的:
- 管理配置
- 命名服务
- 选择领导者
- 将消息排队
- 管理通知系统
- Sync汉化
- 分布式 Cluster 管理团队
使用 Zookeeper 的公司
- 雅虎
- 易趣
- Netflix
- Zynga的
- Nutanix
使用 Zookeeper 的缺点
- 如果添加新的 Zookeeper 服务器,可能会发生数据丢失
- 不允许用户迁移
- 不提供对机架放置和意识的支持
- Zookeeper 不允许您减少 pod 数量,以防止意外数据丢失
- 当服务部署在虚拟网络上时,如果不完全重新安装,则无法将服务切换到主机网络
- 初始部署结束后,服务不支持更改卷要求
- 由于涉及大量节点,因此可能存在多个故障点
- 信息可能会在通信网络中丢失,需要特殊软件才能恢复
结语
- 分布式应用程序是可以在网络中的多个系统上运行的应用程序
- Apache Zookeeper 是一种开源分布式协调服务,可帮助您管理大量主机
- 允许服务器进程之间的相互排斥和合作
- 服务器、客户端、领导者、追随者、集体/Cluster、ZooKeeper WebUI 是重要的 zookeeper 组件
- Znode 有三种类型:持久性、临时性和连续性
- ZDM 监视是一次性触发器,它会发送到设置监视的客户端。当该监视中的数据发生更改时,就会触发该触发器
- Zookeeper Hadoop 使用 ACL 来控制对其 znode 的访问
- 管理配置、命名服务、选择领导者、排队消息、管理通知系统、 Sync同步化、分布式 Cluster 管理等
- 雅虎、Facebook、eBay、Twitter、 Netflix 一些知名的公司正在使用 zookeeper
- 该工具的主要缺点是,如果添加新的 Zookeeper 服务器,可能会发生丢失