Zookeeper - 概述

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

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

在进一步研究之前,重要的是我们对分布式应用程序了解一两件事.因此,让我们通过对分布式应用程序的快速概述开始讨论.

分布式应用程序

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

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

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

分布式应用程序

分布式应用程序的好处

  • 可靠性 : 单个或几个系统的故障不会导致整个系统失败.

  • 可扩展性 : 通过添加更多机器,在不停机的情况下对应用程序的配置进行微小更改,可以增加性能.

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

分布式应用程序的挑战

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

  • 死锁 : 两个或多个操作等待彼此无限期完成.

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

什么是Apache ZooKeeper Meant For?

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

ZooKeeper提供的常用服务如下 :

  • 命名服务 : 按名称标识集群中的节点.它类似于DNS,但适用于节点.

  • 配置管理 : 加入节点系统的最新和最新配置信息.

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

  • 领导者选举 : 选择一个节点作为协调目的的领导者.

  • 锁定和同步服务 : 在修改数据时锁定数据.此机制可帮助您在连接其他分布式应用程序(如Apache HBase)时自动进行故障恢复.

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

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

ZooKeeper的好处

以下是好处使用ZooKeeper :

  • 简单分布式协调流程

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

  • 有序消息

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

  • 可靠性

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