Zookeeper 与 Kafka (3) : Zookeeper

0. Chubby 协议

  • 面向松耦合分布式系统的锁服务, 解决分布式中的一致性问题.
  • 锁服务:
    • 粗粒度的锁服务: 客户端会长时间持有锁.
    • 锁在分布式系统中的用途:
      • 允许客户端进程同步彼此的操作, 并对当前所处环境的基本信息达成一致.
  • 通过"文件"实现锁:
    • 首先, Chubby 是一个分布式文件系统, 对其而言: 锁就是文件.
    • 创建文件就是进行"加锁"操作, 而成功创建文件的服务器就抢占到了"锁".
    • 用户通过打开, 关闭, 读取文件获取共享锁或者独占锁.
    • 文件有更新时, 会通知相关的用户.
  • 系统架构图


    • 分为两个部分: 服务器称为Chubby cell;�每个client都有一个Chubby library。
      • 两端使用RPC 进行通信.
      • 客户端通过Chubby library 的接口调用, 在 Chubby cell 上创建文件来获取锁.
  • 优势
    • 开发人员对基于锁的接口更为熟悉, 远比一致性协议的库更为友好.
    • 对上层应用程序的侵入性更小, 易于保持系统已有的程序结构和网络通信模式.
    • 便于提供数据的发布与订阅, 以让客户端实时地感知到Master 的变化.
    • 允许客户端在�服务器上进行小文件的读写操作.
    • 更便捷地构建更可靠的服务. 需要Quorum 机制进行数据项值的选定.
  • Master 服务器
    • master lease
      • mater在运行过程中,不断续租来延长lease.
    • 客户端向记录有服务器机器列表的DNS来请求所有的服务器,然后逐个询问是否为Master
      • 非Master会将当前Master表示回馈给客户端, 达到了非常快的定位.
    • 若集群中服务器崩溃且无法恢复, 则需要加入新机器, 并更新DNS 列表(启动服务端程序,更新DNS 上的机器列表).
      • Master会周期性轮训DNS 列表, 并很快感知到服务器地址的变更, 然后通知集群.

1. Ensemble

为了达到高可用性, 会同时运行多个Zookeeper 服务器, 称为ensemble.

zookeeper_ensemble.png
  • 复制服务.
    • 需要服务器集中中大多数机器正常工作, 才能提供服务.
    • 崩溃掉的服务器, 可以使用crash-recovery 协议来恢复并重新进入到ensemble.
  • primary 服务器接收并执行所有的请求, 然后传播执行结果.
    • 当primary 崩溃掉后, 执行恢复协议来统一一致性状态, 并建立新的primary.
    • 所有读操作都是in-memory 的, 拥有很高的速度.
  • 每个服务器会在内存中维持一个(代表ensemble 节点组成的)分布式文件系统的副本.
  • 每个client 一个到服务器的session. 并由ensemble 提供以下特性:
    • 自动且透明化的故障转移.
    • 自动化的keep-alive.
    • 客户请求超时.

2. 数据一致性

  • 最终一致性(Eventual Consistency)
    • followers may lag(迟于) leader.
  • 顺序的一致性(Sequential Consistency)
    • 客户端的更新请求, 会以请求发送的顺序来被应用.

3. �节点

  • 临时的(Ephemeral)节点
    • 会话过期时消亡.
    • 由其生命周期决定, 并不会有子节点.
    • 使用场景: 组成员, leader 选举.
  • 持久化的(Persistent)节点可以含有子节点, 类似于目录.
  • 节点的用途:
    • 节点可以持有(小于1M的)数据, 类似于文件.
    • 提供像 创建,删除, 检查存在性的基本节点操作.
  • 由节点构成Group Membership
    • 提供事件驱动模型, 客户端可以监听特定节点的变化.
    • 对外暴露的是文件系统模型, 有层级的命名空间.

4. Replication

  • 复制是以软件手段来增加数据的可用性.
  • 常用于数据库和分布式系统中, 提供合理的性能, 并维持数据一致性.
  • 在数据库中,使用延迟(deferred)更新模型.
    • 事务由本地的服务器(replica manager)处理, 并在提交时, 转发给其它服务器.
    • 与之相对的是立即更新模型, 它会在所有的服务器间同步事务.
  • 复制数据库模型


    • 由一系列运行在不同处理器上的process 组成.
    • 每个process 都有数据库的一个副本, 被称为replica manager.
    • 每个process 有两种状态: Up && Down.
  • 终止协议(Termination Protocol).


    • 向其它process 提交事务, 并确认该动作.
    • 在CS 分布式系统中, 使用原子广播(atomic broadcast).
    • 可以向多个process 发送同一消息, 并且保证消息顺序为发送顺序.
    • certifier 向Data Manager 询问已提交事务的信息, 如果该事务已经被验证通过, 它的写操作会被提交给Lock Manager.

5. Zookeeper 的典型应用场景

5.1 配置中心: 数据的发布/订阅

  • 推拉结合的方式:
    • 客户端注册的关注节点发送数据变更时, 会向客户端发送watch 事件通知.
    • 客户端在接收到通知后, 需要主动向服务索取最新数据.
  • 将配置信息放到Zookeeper上进行集中管理,
    • 应用在启动时主动向Zookeeper 服务器索取配置, 同时监听配置的变化.
    • 典型场景: 全局配置信息
      • 包含: 机器列表, 运行时开关配置, 数据库配置.
      • 特性: 数据量小; 运行时动态变化; 各机器共享; 配置一致.

5.2 负载均衡

  • 动态DNS服务. 超大规模的分布式(域名到IP的)映射表.
    • 使用本地host 绑定可以实现域名解析.
      • 但是当主机规模庞大, 或需要更新域名时,有致命缺陷.
    • Dynamic DNS. 创建一个节点进行域名配置.
      • 域名解析过程�需要每个应用自己负责.

5.3 命名服务.

  • 资源定位不是真正的实体资源.
  • 分布式全局唯一ID的分配机制.
    • UUID的缺陷:长度过长,含义不明.
  • 通过调用Zookeeper节点创建API可以创建顺序节点, 并在API返回值中会返回这个节点的完整名字.
    • 创建顺序子节点时, 自动以后缀形式在子节点上添加序号.

5.4 分布式协调/通知

  • MySQL数据复制总线. Mysql_Replicator.
    • 在不同MySQL 实例间进行异步数据复制和数据变化通知.
    • 让不同的机器都在Zookeeper 的�指定节点下创建临时节点, 不同机器间根据这个临时节点判断对应的客户端机器是否存活.
      • 解耦了检测和被检测系统.
      • 同时可实时地将自己任务执行进度写入临时节点.

5.5 集群管理

  • 集群监控(运行时状态的收集)和集群控制(上下线操作).
  • 基于Agent 体系的集群管理:
    • 每台机器上的Agent 主动向指定的监控中心系统汇报状态.
    • 当集群规模变大后会造成问题:
      • 大规模升级困难; 统一的agent无法满足定制需求; 编程语言多样性.
  • 特性:
    • 当客户端对数据节点注册watcher 监听后, 当数据节点的内容或子节点列表发生变更时,会收到通知.
    • 临时节点会在客户端与服务器的会话失效后,被自动清除.
  • 分布式日志收集系统.
    • 把所有需要收集的日志机器分为多个组, 每个组对应一个后台机器作为收集器.
    • �特性: 变化的日志源机器, 变化的收集器机器.�达到了快速合理动态地为每个收集器分配对应的日志源机器..
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容