ZooKeeper是分布式应用程序的高性能协调服务。它是Apache Hadoop项目的一个子项目,主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等,它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分布式应用极大地降低了成本。

Apache Zookeeper官网地址:http://zookeeper.apache.org/

Apache Zookeeper Github地址:https://github.com/apache/zookeeper

欢迎使用Apache ZooKeeper

Apache ZooKeeper是开发和维护开源服务器的一个努力,可以实现高度可靠的分布式协调。

什么是ZooKeeper?

ZooKeeper是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务。 所有这些类型的服务以分布式应用程序以某种形式或另一种形式使用。 每次执行它们时,都会有很多工作用于修复不可避免的错误和竞争条件。 由于实施这些服务的困难,应用程序最初通常会吝啬,这使得它们在变化存在时变脆,难以管理。 即使正确完成,这些服务的不同实现也会导致应用程序部署时的管理复杂性。

在ZooKeeper Wiki上了解更多关于ZooKeeper的信息。

入门

首先将ZooKeeper安装在单个机器或非常小的集群上。

  1. 通过阅读文档了解 ZooKeeper。
  2. 从发行页面下载 ZooKeeper。

深入

Apache ZooKeeper是Apache Software Foundation下的一个开源志愿者项目。 我们鼓励您了解该项目并贡献您的专业知识。 这里有一些起始链接:

  1. 请参阅我们的如何贡献ZooKeeper页面。
  2. 给我们反馈 :我们能做些什么更好?
  3. 加入邮件列表 :认识社区。

场景

特点

Zookeeper可以保证如下的分布式特性:

  • 顺序一致性
  • 原子性
  • 单一视图
  • 可靠性
  • 实时性

设计目标

ZooKeeper是基于如下4个目标来进行权衡和设计的,我们从设计及其特性的角度来详细说明:

  • 简单

分布式应用中的各个进程可以通过ZooKeeper的命名空间(Namespace)来进行协调,这个命名空间是共享的、具有层次结构的,更重要的是它的结构足够简单,像我们平时接触到的文件系统的目录结构一样容易理解,如图所示:


 在ZooKeeper中每个命名空间(Namespace)被称为ZNode,你可以这样理解,每个ZNode包含一个路径和与之相关的元数据,以及继承自该节点的孩子列表。与传统文件系统不同的是,ZooKeeper中的数据保存在内存中,实现了分布式同步服务的高吞吐和低延迟。在上图示例的ZooKeeper的数据模型中,有如下要点:

  1. 每个节点(ZNode)中存储的是同步相关的数据(这是ZooKeeper设计的初衷,数据量很小,大概B到KB量级),例如状态信息、配置内容、位置信息等。
  2. 一个ZNode维护了一个状态结构,该结构包括:版本号、ACL变更、时间戳。每次ZNode数据发生变化,版本号都会递增,这样客户端的读请求可以基于版本号来检索状态相关数据。
  3. 每个ZNode都有一个ACL,用来限制是否可以访问该ZNode。
  4. 在一个命名空间中,对ZNode上存储的数据执行读和写请求操作都是原子的。
  5. 客户端可以在一个ZNode上设置一个监视器(Watch),如果该ZNode数据发生变更,ZooKeeper会通知客户端,从而触发监视器中实现的逻辑的执行。
  6. 每个客户端与ZooKeeper连接,便建立了一次会话(Session),会话过程中,可能发生CONNECTING、CONNECTED和CLOSED三种状态。
  7. ZooKeeper支持临时节点(Ephemeral Nodes)的概念,它是与ZooKeeper中的会话(Session)相关的,如果连接断开,则该节点被删除。
  • 冗余

    ZooKeeper被设计为复制集群架构,每个节点的数据都可以在集群中复制传播,使集群中的每个节点数据同步一致,从而达到服务的可靠性和可用性。前面说到,ZooKeeper将数据放在内存中来提高性能,为了避免发生单点故障(SPOF),支持数据的复制来达到冗余存储,这是必不可少的。

  • 有序

    ZooKeeper使用时间戳来记录导致状态变更的事务性操作,也就是说,一组事务通过时间戳来保证有序性。基于这一特性。ZooKeeper可以实现更加高级的抽象操作,如同步等。

  • 快速

    ZooKeeper包括读写两种操作,基于ZooKeeper的分布式应用,如果是读多写少的应用场景(读写比例大约是10:1),那么读性能更能够体现出高效。

注:如后续有时间更新会根据官方文档作深入研究。

参考文章

Apache zookeeper:http://zookeeper.apache.org/

zookeeper架构设计及其要点:http://shiyanjun.cn/archives/474.html

Zookeeper简介(一):http://blog.csdn.net/wo541075754/article/details/56335059

Apache Zookeeper基本介绍相关推荐

  1. 【zookeeper】Apache curator优点介绍

    文章目录 1. 简介 2. 项目组件 2.1 版本 2.2 项目组件 2.3 Maven依赖 3. 案例及功能说明 3.1 创建会话 3.1.1 重试策略 3.1.2 创建节点 3.1.3 删除节点 ...

  2. Apache ZooKeeper -从初始化到对外提供服务的过程解析( 集群模式 )

    文章目录 流程图 Pre 什么是集群模式? ZooKeeper 集群模式的特点 底层实现原理 程序启动 QuorumPeer 类 Leader 服务器启动过程 Follow 服务器启动过程 小结 流程 ...

  3. Apache ZooKeeper - Leader 选举 如何保证分布式数据的一致性

    文章目录 Pre 流程图 Leader 的协调过程 ZK 是如何实现的 广播模式 恢复模式 源码实现 小结 Pre Apache ZooKeeper - 选举Leader源码流程深度解析 在 ZooK ...

  4. 使用Apache Zookeeper进行协调和服务发现

    面向服务的设计已被证明是针对各种不同的分布式系统的成功解决方案. 如果使用得当,它会带来很多好处. 但是随着服务数量的增加,了解部署什么以及部署在何处变得更加困难. 而且,由于我们正在构建可靠且高度可 ...

  5. Zookeeper概念介绍

    zookeeper思维导图: zookeeper分布式协调框架 1.请简单介绍下Zookeeper?(重要) ​ZooKeeper是一个分布式的,开放源码的,用于分布式应用程序的协调服务.zookee ...

  6. JAVA EE Apache Zookeeper / Google Chubby

    s http://zookeeper.apache.org/ Apache ZooKeeper is an effort to develop and maintain an open-source ...

  7. Spring Cloud Discovery——Apache Zookeeper Discovery

    Apache Zookeeper Discovery 依赖说明:使用Apache Zookeeper进行服务发现. Zookeeper是一个高性能,分布式的,开源分布式应用协调服务.它提供了简单原始的 ...

  8. 三款zookeeper客户端介绍

    zookeeper客户端介绍 一.ZooInspector 分享一个zk浏览器工具,该工具除了能展示树形结构外,也能展示每个path的属性和数据,而且如果数据是文本的也可以进行编辑. 1.下载 htt ...

  9. 一篇文章粗浅了解Apache zookeeper

    一篇文章粗浅了解Apache zookeeper 前言 Zookeeper是一个分布式应用程序协调服务,提供了简单易用的接口和性能高效.功能稳定的系统让用户可以很轻松解决分布式应用程序下面的出现的协调 ...

最新文章

  1. 打造全球最大规模 Kafka 集群,Uber 的多区域灾备实践
  2. WinCE 和Win Mobile的关系
  3. Waymo自动驾驶报告:平均21万公里一次事故,严重事故都是人类司机的锅
  4. 老男孩教育Python 9期第一课练习题答案
  5. ad16怎么画弧线_如何告别“千人一面”?手把手教你抠细节,画不一样人脸
  6. LeetCode 24两两交换链表中的节点-中等
  7. JAVA JDBC连接mysql编程
  8. 好看的机器人飞船404网html源码
  9. python中的装饰器、装饰器模式_浅析Python装饰器以及装饰器模式
  10. hasLayout与Block formatting contexts的学习(上)
  11. C#.NET自定义报表数据打印
  12. 电力系统继电保护Matlab实验,电力系统继电保护原理及仿真
  13. php流量计算单位,数据流量单位换算(流量单位的读法和换算)
  14. viterbi 中文分词-超简单版
  15. 如何使用Photoshop将图片变小?
  16. 前端笔记-201808
  17. 什么产品适合做海外众筹
  18. 【20考研数学】整体难度如何,有什么特点?
  19. JNLP文件具体说明编辑
  20. 究竟什么是CRM(客户关系管理系统)呢?

热门文章

  1. 3.9 haas506 2.0开发教程-example-oled
  2. sql字符串和数字转换
  3. 深入浅出LSTM学习
  4. 个人信贷评估模型研究
  5. 一言 源码 android,[源码]纯净的一言API
  6. G001-181-08
  7. rk3568 android 11 默认壁纸
  8. 2022施工员-土建方向-通用基础(施工员)理论题库模拟考试平台操作
  9. 不明觉厉!用了近10年,才有人读懂这篇论文
  10. 2017年深圳初中终极排名(四大、八大、十大、公办率)