Zookeeper 简明教程
Zookeeper - Overview
ZooKeeper 是一种分布式协调服务,用于管理大量主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决此问题。ZooKeeper 使开发人员能够专注于核心应用程序逻辑,而不必担心应用程序的分布式性质。
ZooKeeper 框架最初是在“Yahoo!”构建的,目的是以一种简单而稳健的方式访问其应用程序。后来,Apache ZooKeeper 成为 Hadoop、HBase 和其他分布式框架使用的有组织服务的标准。例如,Apache HBase 使用 ZooKeeper 来跟踪分布式数据的状态。
在我们继续之前,了解分布式应用程序的一些内容非常重要。那么,让我们以分布式应用程序的快速概述开始讨论。
Distributed Application
分布式应用程序可以通过在它们之间进行协调来同时在网络中的多个系统上以快速高效的方式运行,以完成一项特定任务。通常,分布式应用程序可以通过使用所有涉及的系统的计算能力,在数分钟内完成一项复杂且耗时的任务,而一个非分布式应用程序(在一个系统中运行)完成该任务需要数小时。
通过配置分布式应用程序在更多系统上运行可以进一步缩短完成任务的时间。一个分布式应用程序正在运行的系统组称为 Cluster ,在集群中运行的每台机器称为 Node 。
一个分布式应用程序有两部分, Server 和 Client 应用程序。服务器应用程序实际上是分布式的,并具有一个共同的接口,以便客户端可以连接到集群中的任何一台服务器并获取相同的结果。客户端应用程序是与分布式应用程序进行交互的工具。
What is Apache ZooKeeper Meant For?
Apache ZooKeeper 是一项服务,由集群(节点组)使用,用于在它们之间进行协调,并以稳健的同步技术维护共享数据。ZooKeeper 本身是一个分布式应用程序,它提供编写分布式应用程序的服务。
ZooKeeper 提供的常见服务如下所示 -
-
Naming service − 按名称标识集群中的节点。它类似于 DNS,但适用于节点。
-
Configuration management − 最新且最新的系统配置信息,用于加入节点。
-
Cluster management − 加入/离开集群中的节点以及实时节点状态。
-
Leader election − 选举一个节点作为领导者,以进行协调。
-
Locking and synchronization service − 修改数据时锁定数据。此机制可帮助你在连接其他分布式应用程序(如 Apache HBase)时自动进行故障恢复。
-
Highly reliable data registry − 即使一到几个节点宕机,也可以获得数据。
分布式应用程序提供了很多好处,但也带来了一些复杂且难以破解的挑战。ZooKeeper 框架提供了一种完整的机制来克服所有挑战。竞态条件和死锁使用 fail-safe synchronization approach 处理。另一个主要缺点是数据不一致,ZooKeeper 使用 atomicity 解决此问题。