教程 > ZooKeeper 阅读:65

ZooKeeper

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

ZooKeeper 框架最初是在“Yahoo!”上构建的。 以简单而可靠的方式访问他们的应用程序。 后来,Apache ZooKeeper 成为 Hadoop、HBase 和其他分布式框架使用的组织服务的标准。 例如,Apache HBase 使用 ZooKeeper 来跟踪分布式数据的状态。 本教程介绍了 ZooKeeper 的基础知识,如何在分布式环境中安装和部署 ZooKeeper 集群,最后以几个使用 Java 编程的示例和示例应用程序作为结尾。


分布式应用

分布式应用程序可以在给定时间(同时)在网络中的多个系统上运行,通过它们之间的协调以快速有效的方式完成特定任务。 通常情况下,非分布式应用程序(在单个系统中运行)需要数小时才能完成的复杂且耗时的任务可以由分布式应用程序通过使用所有相关系统的计算能力在几分钟内完成。

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

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

zookeeper 分布式应用
zookeeper 分布式应用

分布式应用程序的好处

  • 可靠性 - 单个或几个系统的故障不会使整个系统发生故障。
  • 可扩展性 - 可以在需要时通过添加更多机器来提高性能,只需对应用程序的配置进行微小更改而无需停机。
  • 透明度 - 隐藏系统的复杂性并将其自身显示为单个实体/应用程序。

分布式应用的挑战

  • Race condition - 两台或多台机器试图执行特定任务,实际上在任何给定时间只需要由一台机器完成。 例如,共享资源在任何给定时间只能由一台机器修改。
  • 死锁 - 两个或多个操作无限期地等待彼此完成。
  • 不一致 - 数据部分失败。

Apache ZooKeeper 的用途是什么?

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

ZooKeeper 提供的公共服务如下:

  • 命名服务 - 按名称识别集群中的节点。 它类似于 DNS,但用于节点。
  • 配置管理 - 加入节点的系统的最新和最新配置信息。
  • 集群管理 - 实时加入/离开集群中的节点和节点状态。
  • Leader election - 选择一个节点作为领导者以进行协调。
  • Locking and synchronization service - 在修改数据时锁定数据。 此机制可帮助您在连接其他分布式应用程序(如 Apache HBase)时进行自动故障恢复。
  • 高度可靠的数据注册 - 即使一个或几个节点出现故障,数据的可用性。

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


ZooKeeper的好处

以下是使用 ZooKeeper 的好处

  • 简单的分布式协调过程
  • 同步 - 服务器进程之间的相互排斥和合作。 此过程有助于在 Apache HBase 中进行配置管理。
  • 有序消息
  • Serialization - 根据特定规则对数据进行编码。 确保您的应用程序始终如一地运行。 这种方法可用于 MapReduce 以协调队列以执行正在运行的线程。
  • 可靠性
  • 原子性 - 数据传输要么成功要么完全失败,但没有事务是部分的。

阅读前需要准备的知识

本教程是为有志于使用 ZooKeeper 框架从事大数据分析工作的专业人士准备的。 它将让我们充分了解如何使用 ZooKeeper 创建分布式集群。

在继续本教程之前,大家必须对 Java 有很好的了解,因为 ZooKeeper 服务器运行在 JVM、分布式进程和 Linux 环境中。可以参考本站的 Java教程 或者 其他的Java相关的文章来进行深入的学习。

查看笔记

扫码一下
查看教程更方便