开发学院

您的位置:首页>教程>正文

教程正文

Zookeeper 概览

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

  ZooKeeper框架最初是在“Yahoo!”用于以简单和健壮的方式访问他们的应用程序。后来,Apache ZooKeeper成为Hadoop、HBase和其他分布式框架使用的有组织服务的标准。例如,Apache HBase使用ZooKeeper来跟踪分布式数据的状态。

  进一步讨论之前,了解一两件关于分布式应用程序的概念是很重要的。因此,让我们从分布式应用程序的快速概述开始讨论。

分布式应用程序

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

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

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

distributed_application.jpg

分布式应用程序的优势

  •   可靠性:一个或几个系统的故障不会使整个系统发生故障。

  •   可伸缩性-通过添加更多的机器,只需对应用程序的配置进行细微的更改,无需停机,即可随时提高性能。

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

分布式应用的挑战

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

  •   死锁:两个或多个操作无限期等待对方完成。

  •   不一致:数据部分失败。

Apache ZooKeeper意味着什么?

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

  Apache ZooKeeper提供的共同服务如下

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

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

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

  •   领导者选举-为协调目的选举一个节点作为领导者。

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

  •   高度可靠的数据注册表—即使一个或几个节点出现故障,数据仍然可用。

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

Apache ZooKeeper的好处

  以下是使用Apache ZooKeeper的好处

  •   简单的分布式协调过程

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

  •   有序消息

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

  •   可靠性

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

  •