ZooKeeper架构及简介
2016-03-06 15:58
537 查看
ZooKeeper是一个分布式应用程序协调服务,是Google的Chubby一个开源的实现,是众多开源分布式应用的核心组件之一。架构图如下所示:
它为分布式应用提供配置维护、域名服务、分布式同步、分布式锁、服务注册等服务。ZooKeeper具备以下几个特性。
ZooKeeper以分布式方式协调各个应用程序,它提供一个共享的分级的命名空间,这个命名空间类似于一个标准的Linux文件系统。命名空间由称之为znode的数据注册者组成,它的语法与文件和目录的相似。不像为存储而设计的典型文件系统,ZooKeeper数据是保存在内存中,这样使得ZooKeeper能够实现高吞吐和低延迟。具体数据模型,见下图。
ZooKeeper分级命名空间
如ZooKeeper协助的分布式处理一样,它本身就是在一个被称为ensemble的集合主机之中进行重复的。那些组成ZooKeeper服务的服务器(Servers)必须彼此了解。就是这些服务器维持着内存的状态印象,伴随着事务日志和持久化存储的快照(Snapshots)。只要主要的服务器有效存在,ZooKeeper服务就会提供可能的服务。当客户端连接到一个单一的ZooKeeper服务器时,客户端维持着一个TCP连接。通过这个TCP连接,客户端可以发送请求,获得响应答复,得到观察者监听事件,发送心态状态信息。如果这个TCP连接中断,客户端将连接到不同的机器。
ZooKeeper以一个数字标记任何一次更新,这个数字反应了所有ZooKeeper事务的有序性。随后,操作能够使用这个有序性实现更高级的抽象,比如同步原生态操作。
在于只读的工作量中,ZooKeeper是特别高效的。ZooKeeper应用程序可以运行在成千上万的机器上,当一般的读大于写的操作时,ZooKeeper表现出最佳的性能,尤其是读写比例达到10:1.下面一个性能测试报告,见下图。
ZooKeeper支持失败容错,ZooKeeper集群是由一个leader和剩余的follower组成,一旦leader失效,follower会根据leader选举算法选举出新的leader。为了呈现ZooKeeper的可靠性,我们运行一个有7个节点组成的ZooKeeper服务。测试结果图如下所示:
从上图表可以知道,如果follower失效和快速恢复时,ZooKeeper能够维持一个高吞吐量。更重要的是,leader选择算法允许系统进快地复原,以便防止吞吐量致命地下降。从上图可知,ZooKeeper至少要200ms推举出一个新的leader。随着follower恢复正常状态,ZooKeeper不断提高它处理请求的能力。下图是应用程序进程、客户端库(Client
Library)与ZooKeeper Ensemble的交互模型。
ZooKeeper为协调分布式系统的实现了协调工作。下面让我们来看ZooKeeper为那些系统提供了核心服务。
1. Apache HBase
HBase是一个以Hadoop为基石的海量数据列存储系统。在HBase系统中,ZooKeeper用于选择一个集群的master,保持跟踪有效的主机服务器,维护集群的元数据(metadata)。
2. Apache Kafka
Kafka是一个发布/订阅的消息系统。它使用ZooKeeper侦测崩溃的节点,实现topic发现,为topic维护生产和消耗状态。
3. Apache Solr
Solr是一个企业级检索平台服务框架。它的分布式形式称为SolrCloud。它使用ZooKeeper来存储有关集群的元数据以及协调更新这些元数据。
总而言之,ZooKeeper可以实现下面几类服务。
l Master election:master节点给有效的worker节点分配任务。
l Crash detection:master节点必须侦测worker节点有效性,包括是节点down机,无法连接等问题。
l Group membership management:maste节点必须能够发现那些worker节点能够有效执行任务。
l Metadata management :master和worker节点必须具备存储分配的任务和执行的状态,并且保证此方法的可靠性。
欢迎关注我的微信公众号
它为分布式应用提供配置维护、域名服务、分布式同步、分布式锁、服务注册等服务。ZooKeeper具备以下几个特性。
1.1.1 简单易用
ZooKeeper以分布式方式协调各个应用程序,它提供一个共享的分级的命名空间,这个命名空间类似于一个标准的Linux文件系统。命名空间由称之为znode的数据注册者组成,它的语法与文件和目录的相似。不像为存储而设计的典型文件系统,ZooKeeper数据是保存在内存中,这样使得ZooKeeper能够实现高吞吐和低延迟。具体数据模型,见下图。ZooKeeper分级命名空间
1.1.2 重复性
如ZooKeeper协助的分布式处理一样,它本身就是在一个被称为ensemble的集合主机之中进行重复的。那些组成ZooKeeper服务的服务器(Servers)必须彼此了解。就是这些服务器维持着内存的状态印象,伴随着事务日志和持久化存储的快照(Snapshots)。只要主要的服务器有效存在,ZooKeeper服务就会提供可能的服务。当客户端连接到一个单一的ZooKeeper服务器时,客户端维持着一个TCP连接。通过这个TCP连接,客户端可以发送请求,获得响应答复,得到观察者监听事件,发送心态状态信息。如果这个TCP连接中断,客户端将连接到不同的机器。
1.1.3 有序性
ZooKeeper以一个数字标记任何一次更新,这个数字反应了所有ZooKeeper事务的有序性。随后,操作能够使用这个有序性实现更高级的抽象,比如同步原生态操作。
1.1.4 性能高效
在于只读的工作量中,ZooKeeper是特别高效的。ZooKeeper应用程序可以运行在成千上万的机器上,当一般的读大于写的操作时,ZooKeeper表现出最佳的性能,尤其是读写比例达到10:1.下面一个性能测试报告,见下图。
1.1.5 可靠性
ZooKeeper支持失败容错,ZooKeeper集群是由一个leader和剩余的follower组成,一旦leader失效,follower会根据leader选举算法选举出新的leader。为了呈现ZooKeeper的可靠性,我们运行一个有7个节点组成的ZooKeeper服务。测试结果图如下所示:从上图表可以知道,如果follower失效和快速恢复时,ZooKeeper能够维持一个高吞吐量。更重要的是,leader选择算法允许系统进快地复原,以便防止吞吐量致命地下降。从上图可知,ZooKeeper至少要200ms推举出一个新的leader。随着follower恢复正常状态,ZooKeeper不断提高它处理请求的能力。下图是应用程序进程、客户端库(Client
Library)与ZooKeeper Ensemble的交互模型。
2.1 Zookeeper使命
ZooKeeper为协调分布式系统的实现了协调工作。下面让我们来看ZooKeeper为那些系统提供了核心服务。1. Apache HBase
HBase是一个以Hadoop为基石的海量数据列存储系统。在HBase系统中,ZooKeeper用于选择一个集群的master,保持跟踪有效的主机服务器,维护集群的元数据(metadata)。
2. Apache Kafka
Kafka是一个发布/订阅的消息系统。它使用ZooKeeper侦测崩溃的节点,实现topic发现,为topic维护生产和消耗状态。
3. Apache Solr
Solr是一个企业级检索平台服务框架。它的分布式形式称为SolrCloud。它使用ZooKeeper来存储有关集群的元数据以及协调更新这些元数据。
总而言之,ZooKeeper可以实现下面几类服务。
l Master election:master节点给有效的worker节点分配任务。
l Crash detection:master节点必须侦测worker节点有效性,包括是节点down机,无法连接等问题。
l Group membership management:maste节点必须能够发现那些worker节点能够有效执行任务。
l Metadata management :master和worker节点必须具备存储分配的任务和执行的状态,并且保证此方法的可靠性。
欢迎关注我的微信公众号
相关文章推荐
- Shell脚本实现自动安装zookeeper
- 基于Zookeeper的使用详解
- mesos + marathon + docker部署
- 基于zk的配置管理
- 搭建分布式架构4--ZooKeeper注册中心安装
- 搭建分布式架构5--ZooKeeper 集群的安装 3ff0
- SolrCloud4.9+zookeeper在CentOS上的搭建与安装
- 基于外部ZooKeeper的GlusterFS作为分布式文件系统的完全分布式HBase集群安装指南
- Storm集群的搭建
- Zookeeper配置项说明
- redis集群搭建
- 使用 RMI + ZooKeeper 实现远程调用框架
- 轻量级分布式 RPC 框架
- 整合Kafka到Spark Streaming——代码示例和挑战
- HBase 系统架构
- 使用zookeeper实现分布式共享锁
- 将Zookeeper集成到你的应用中
- 基于zookeeper+leveldb搭建activemq集群
- Fourinone四合一分布式计算框架整体介绍
- windows 64位 安装zookeeper