Zookeeper简介

image.png

Zookeeper系列文章

1.Zookeeper简介
2.Zookeeper集群安装
3.原生API操作Zookeeper
4.zkClient框架操作Zookeeper
5.Curator框架操作Zookeeper

1. 什么是 Zookeeper?

  • Zookeeper是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置管理/同步控制/群组服务等。我们可以使用ZK来实现比如达成共识/集群管理/leader选举等

  • Zookeeper 是一个高可用的分布式管理与协调框架,基于 ZAB 算法(原子消息广播协议)的实现。该框架能够很好地保证分布式环境中数据的一一致性。也正是基于这样的特性,使得 Zookeeper 成为了解决分布式一致性问题的利器。

    zookeeper五个特性

    • 顺序一致性:从一个客户端发起的事务请求,最终将会严格地按照其发起的顺序被应用到 zookeeper 中去。

    • 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群所有的机器都成功应用了某一事务,要么都没有应用,一定不会出现部分机器应用了该事务,而另一部分没有应用的情况。

    • 单一视图:无论客户端连接的是哪一个 zookeeper 服务器,其看到的服务器端数据模型都是一致的。

    • 可靠性:一旦服务器成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务器端状态将会被一致保留下来。除非有另外一个事务对其更改。

    • 实时性:通常所说的实时性就是指一旦事务被成功应用,那么客户端就能立刻从服务器上获取变更后的新数据,zookeeper 仅仅能保证在一段时间内,客户端最终一定能从服务幕端读敢最新的数据状态。

2. Zookeeper设计目标

  • 目标 1: 简单的数据结构。zookeeper 就是以简单的树形结构来进行相互协调的(也叫树形名字空间)。

  • 目标 2: 可以构建集群。一般 zookeeper 集群通常由一组机器构成,一般 3~5 台机器就可以组成一个 zookeeper 集群了。只要集群中超过半数以上的机器能够正常工作,那么整个集群就能够正常对外提供服务。

  • 目标 3: 顺序访问。对于来自每一个客户端的每一个请求,zookeeper 都会分配一个全局唯一的递增编号,这个编号反应了所有事务操作的先后顺序,应用程序可以使用 zookeeper 的这个特性来实现更高层次的同步。

  • 目标 4: 高性能。由于 zookeeper 将全量数据存储在内存中,并直接服务与所有的非事务请求,因此尤其是在读操作为主的场景下性能非常突出。在 JMater 压力测试下(100%读请求场景下),其结果大约在 12* ~13 W 的 QPS.

3. Zookeeper的结构

  • Zookeeper会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统.


    image.png

4. Zookeeper的数据模型

  • 1、每个子目录项如 NameService 都被称作为 znode,这个 znode 是被它所在的路 径唯一标识,如Server1这个znode的标识为/NameService/Server1

  • 2、znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL类型的目录节点不能有子节点目录

  • 3、Znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据

  • 4、znode 可以是临时节点,一旦创建这个 znode。的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了.(利用zookeeper实现分布式锁使用的就是此特性)

  • 5、znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2

  • 6、znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的,后面在典型的应用场景中会有实例介绍

5. Zookeeper集群组成

  • ZK server 根据其身份特性分为三种:leader, Follower, Observer,其中 Follower 和 Observer 又统称 Learner(学习者)
    • Leader:负责客户端的 writer 类型请求
    • Follower:负责客户端的 reader 类型请求,参与 leader 选举等。
    • Observer:特殊的“Follower“,其可以接受客户端 reader 请求,但不参与选举。(扩容系统支撑能力,提高了读取速度。因为它不接受任何同步的写入请求,只负责与 leader 同步数据)

6. Zookeeper应用场景

  • 配置管理:配置的管理在分布式应用环境中很常见,比如我们在平常的应用系统中,经常会碰到这样的需求:如机器的配置列表、运行时的开关配置、数据库配置信息等。这些全局配置信息通常具备以下 3 个特性:

    • 1 数据量比较小。
    • 2 数据内容在运行时动态发生变化。
    • 3 集群中各个节点共享信息,配置一致。
  • 集群管理:Zookeeper 不仅能够帮你维护当前的集群中机器的服务状态,而且能够帮你选出一个“总管”,让这个总管来管理集群,这就是 Zookeeper 的另一个功能 Leader,并实现集群容错功能。

    • 1 希望知道当前集群中究竟有多少机器工作。
    • 2 对集群中每天集群的运行时状态进行数据收集。
    • 3 对集群中每台集群进行上下线操作。
  • 发布与订阅:Zookeeper 是一个典型的发布/订阅模式的分布式数控管理与协调框架,开发人员可以使用它来进行分布式数据的发布与订阅。

  • 数据库切换:比如我们初始化 zookeeper 的时候读取其节点上的数据库配置文件,当配置一旦发生变更时,zookeeper 就能帮助我们把变更的通知发送到各个客户端,每个了服务在接收到这个变更通知后,就可以从新进行最新数据的获取。

  • 分布式日志收集:我们可以做一个日志系统收集集群中所有的日志信息,进行统一管理。

下篇文章在这里 Zookeeper集群安装

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容