Zookeeper - 概述



ZooKeeper 是一种分布式协调服务,用于管理大量主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决此问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而无需担心应用程序的分布式特性。

ZooKeeper 框架最初是在“雅虎!”中构建的,用于以简单而强大的方式访问其应用程序。后来,Apache ZooKeeper 成为 Hadoop、HBase 和其他分布式框架使用的标准化服务。例如,Apache HBase 使用 ZooKeeper 来跟踪分布式数据的状态。

在继续之前,了解一些有关分布式应用程序的信息非常重要。因此,让我们从分布式应用程序的快速概述开始讨论。

分布式应用程序

分布式应用程序可以在网络中的多个系统上同时运行,并相互协调以快速有效地完成特定任务。通常,对于非分布式应用程序(在单个系统中运行)可能需要数小时才能完成的复杂且耗时的任务,可以通过分布式应用程序在几分钟内完成,因为它利用了所有涉及的系统的计算能力。

通过将分布式应用程序配置为在更多系统上运行,可以进一步缩短完成任务的时间。运行分布式应用程序的一组系统称为集群,集群中运行的每台机器称为节点

分布式应用程序有两个部分:服务器客户端应用程序。服务器应用程序实际上是分布式的,并且具有公共接口,以便客户端可以连接到集群中的任何服务器并获得相同的结果。客户端应用程序是与分布式应用程序交互的工具。

Distributed Application

分布式应用程序的优势

  • 可靠性 - 单个或几个系统的故障不会导致整个系统故障。

  • 可扩展性 - 可以根据需要通过添加更多机器来提高性能,只需对应用程序配置进行少量更改即可,并且不会出现停机时间。

  • 透明性 - 隐藏系统的复杂性,并将其显示为单个实体/应用程序。

分布式应用程序的挑战

  • 竞争条件 - 两台或多台机器尝试执行特定任务,而该任务实际上在任何给定时间只需要由一台机器执行。例如,共享资源在任何给定时间只能由一台机器修改。

  • 死锁 - 两个或多个操作无限期地等待彼此完成。

  • 不一致性 - 数据的部分故障。

Apache ZooKeeper 的用途是什么?

Apache ZooKeeper 是一种由集群(节点组)使用的服务,用于在其之间进行协调并使用强大的同步技术维护共享数据。ZooKeeper 本身是一个分布式应用程序,提供用于编写分布式应用程序的服务。

ZooKeeper 提供的常见服务如下:

  • 命名服务 - 通过名称识别集群中的节点。它类似于 DNS,但适用于节点。

  • 配置管理 - 用于加入节点的系统最新和最新的配置信息。

  • 集群管理 - 节点在集群中加入/离开以及节点的实时状态。

  • 主选举 - 选择一个节点作为协调目的的主节点。

  • 锁定和同步服务 - 在修改数据时锁定数据。此机制有助于在连接其他分布式应用程序(如 Apache HBase)时自动故障恢复。

  • 高度可靠的数据注册表 - 即使一个或几个节点出现故障,也能保证数据的可用性。

分布式应用程序提供了许多好处,但它们也带来了一些复杂且难以解决的挑战。ZooKeeper 框架提供了一种完整的机制来克服所有这些挑战。竞争条件和死锁是使用故障安全同步方法处理的。另一个主要缺点是数据不一致,ZooKeeper 通过原子性解决了这个问题。

ZooKeeper 的优势

以下是使用 ZooKeeper 的优势:

  • 简单的分布式协调过程

  • 同步 - 服务器进程之间的互斥和协作。此过程有助于 Apache HBase 进行配置管理。

  • 有序消息

  • 序列化 - 根据特定规则对数据进行编码。确保您的应用程序一致运行。此方法可用于 MapReduce 协调队列以执行正在运行的线程。

  • 可靠性

  • 原子性 - 数据传输要么完全成功,要么完全失败,但没有部分事务。

广告