Zookeeper-分布式协调服务

分布式协调服务的角色

担任协调者
  • leader选举
  • 负载均衡
  • 服务发现
将多级协调的职责从服务中分离出来
  • 比如kafka 中的各个角色在zk中注册 producer需要知道有几个broker,需要从zk中读取

zookeeper 在百科中的应用

  • leader的选举(避免单点故障,hdfs,yarn,mepreduce等)
  • 命名(dubbo)
  • 分布式的锁
  • 发布订阅
  • 负载均衡(kafka)
  • 配置管理
  • zk 还可以存储元数据,作为多副本的服务,数据都是动态的

zookeeper 的数据模型、整体架构

  • 层级化的内存命名空间
  • 类似于文件储存系统
  • 每个几点称为znode
  • 每个znode拥有data,type,version,children和acl等属性
  • 数据访问具有原子性
数据模型
znode
  • znode的四种类型:persistent (一旦创建就不会删除), ephemeral (临时节点), persistent-sequential ,ephemeral_sequential
watcher
  • 发布订阅机制,意思就是向一个znode的注册监听,当他变化时,它会向client发送消息
  • 可通过一系列的操作设置watcher
  • 客户收到的消息有很多种
  • 一点触发监听就没有了(watcher一旦监听之后就被下线了)
session
  • client和zookeeper建立连接的通道
  • 客户端随机选择一个节点连接session,
  • session具有容错性(连接的zookeeper宕机了,client就会连接其他)
  • session 有其他事件(syncConnection exprired)
基本语法操作
image.png

zookeeper内部实现

  • 集群必须是奇数个
  • 分为leader 和 follower
  • 连接的都是client
  • 每个zk的保存的数据都是一样的
  • leader的选择用的是选举模式(paxos协议)
  • client可以访问任何一个zk节点

zookeeper 读写操作

  • 读操作在任意一个节点都是一样的,因为在任何一个节点都是一样的
  • 如果是写操作的时候,client连接的zk节点会向leader发送请求,然后leader向其他follower发送广播,然后大家一起进行写操作

zookeeper 的observer

  • 这个不参与选举
  • 只是从leader 同步数据到本地
  • observer 和 follower也被称为learner
    原因:
    1、在不要求选举的时候扩展集群
    2、部署多个zk节点

zookeeper的选举

  • zab 协议(选举的协议)

zookeeper 的leader 的工作原理

  • 如果client发送了一个更新请求,reader会先去征求follower的意见,如果大部分同意,就去操作client请求

zookeeper 的本地储存

  • zookeeper 会将操作日志存在本地磁盘(是追加写的)

zookeeper的典型应用案例

  • leader的选举(hdfs,hbase,yarn等)
    如果你的有多个服务,必须选举出一个leader,
    或者选举出了之后当有一天leader挂了,则需要用它来选举follower出另一个leader
    如果手动实现的话,将需要进行选举的服务分别创建一个等父节点的znode,谁创建的chidren的znode的编号最小 谁是leader
  • 集中式配置管理
    利用znode可以储存数据来存取配置信息,配合watcher应用更好
  • 分布式队列
  • 负载均衡
    只要应用于kafka(也是kafka依赖的主要原因)

关键问题

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

推荐阅读更多精彩内容