Zookeeper详解-概述(一)

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

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

先来介绍一下分布式:服务器

分布式应用

分布式应用能够在给定时间(同时)在网络中的多个系统上运行,经过协调它们以快速有效的方式完成特定任务。一般来讲,对于复杂而耗时的任务,非分布式应用(运行在单个系统中)须要几个小时才能完成,而分布式应用经过使用全部系统涉及的计算能力能够在几分钟内完成。网络

经过将分布式应用配置为在更多系统上运行,能够进一步减小完成任务的时间。分布式应用正在运行的一组系统称为集群,而在集群中运行的每台机器被称为节点架构

分布式应用有两部分, Server(服务器)  Client(客户端) 应用程序。服务器应用程序其实是分布式的,并具备通用接口,以便客户端能够链接到集群中的任何服务器并得到相同的结果。 客户端应用程序是与分布式应用进行交互的工具。框架

分布式应用的优势

  • 可靠性 - 单个或几个系统的故障不会使整个系统出现故障。分布式

  • 可扩展性 - 能够在须要时增长性能,经过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。工具

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

分布式应用的挑战

  • 竞争条件 - 两个或多个机器尝试执行特定任务,实际上只需在任意给定时间由单个机器完成。例如,共享资源只能在任意给定时间由单个机器修改。性能

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

  • 不一致 - 数据的部分失败。

什么是Apache ZooKeeper?

Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并经过稳健的同步技术维护共享数据。ZooKeeper自己是一个分布式应用程序,为写入分布式应用程序提供服务。

分布式应用程序的协同服务

ZooKeeper提供的常见服务以下 :

  • 命名服务 - 按名称标识集群中的节点。它相似于DNS,但仅对于节点。

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

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

  • 选举算法 - 选举一个节点做为协调目的的leader。

  • 锁定和同步服务 - 在修改数据的同时锁定数据。此机制可帮助你在链接其余分布式应用程序(如Apache HBase)时进行自动故障恢复。

  • 高度可靠的数据注册表 - 即便在一个或几个节点关闭时也能够得到数据。

分布式应用程序提供了不少好处,但它们也抛出了一些复杂和难以解决的挑战。ZooKeeper框架提供了一个完整的机制来克服全部的挑战。竞争条件和死锁使用故障安全同步方法进行处理。另外一个主要缺点是数据的不一致性,ZooKeeper使用原子性解析。

ZooKeeper的好处

如下是使用ZooKeeper的好处:

  • 简单的分布式协调过程

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

  • 有序的消息

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

  • 可靠性

  • 原子性 - 数据转移彻底成功或彻底失败,但没有事务是部分的。

相关文章
相关标签/搜索