Zookeeper简介、应用和实践

Zookeeper 协议

简介:分布式协调服务,提供诸如统一命名、配置管理等基础服务
越来越多的分布式应用面临数据一致性问题,Zookeeper的设计目标是将那些复杂且容易出错的分布式一致服务封装起来,构建一个高效可靠的原语集,并以一系列简单可用的接口提供给用户使用

设计目标:

  • 简单的数据模型
  • 可构建集群
  • 顺序访问
  • 高性能

基础概念:

  • 集群
  • 会话
  • Znode
  • 版本
  • Watcher
  • ACL create read write delete admin

Zookeeper简单应用场景

  • redis 服务发现和治理
    在redis实际应用中,一般会有一个主节点redis,几个从属节点redis。
    主节点处理用户写请求,从节点向主节点同步数据,处理用户读的请求。

当主节点故障的时候,从节点会通过raft算法选举出新的主节点处理用户写请求。

问题产生:如何在主服务器变更后,更新项目redis读写配置?

原始做法: 修改项目代码里面的redis地址和端口,然后上传代码,再重新部署

Zookeeper解决方法:通过zookeeper监控主从服务器变动,在项目里面引入zookeeper客户端,当主服务器变更的时候,zookeeper客户端会收到通知,在通知回调里,我们可以收到新的主节点地址和端口,根据他写一段redis重启代码,这样就避免了服务器重启

Zookeeper 使用和API

创建 create(final String path, byte data, List<ACL> acl, CraeteMode createMode)
读取 getChildren(path, watcher, watch, cb, ctx, stat) getData(path, watcher, stat, watch, cb, ctx)
更新 setData(path, data, version)
删除 delete (path ,version)
判断节点是否存在 exists(path, watcher)

ZAB协议

ZAB协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议
ZAB不像Paxos算法那样是一种通用的分布式一直算法,他是一种特别为Zookeeper设计的崩溃可恢复的原子广播算法

  • 主备模式,单一主进程处理事务
  • 全局的变更时序,也就是说如果一个状态更新已经发生了,那么所有其依赖的状态变更都应该被提前处理了
  • 支持崩溃恢复

Zookeeper两种基本模式,崩溃恢复和消息广播,还有一种数据恢复模式
Leader服务器收到事务,转化成Proposal,Follow服务器收到事务,转发给Leader

消息广播

类似二阶段提交
区别在于移除了中断逻辑,所有的Follower要么正常反馈Leader提出的事务Proposal,要么抛弃Leader服务器。所以这意味着

  • Leader收到过半的Ack就可以Commit了,不需要等所有的回复
  • 无法处理Leader奔溃退出带来的数据不一致

基于TCP协议,可以做到FIFO
Leader会为每个Proposal分配一个ZXID

Leader为每一个Follower保存一个队列,发送Proposal,然后Follow保存事务日志到磁盘,然后回复ACK,Leader收到过半ACK后广播Commit,然后Follow提交Commit

崩溃恢复

ZAB保证如果一个事务的Proposal在一台机器上被处理成功,那么应该在所有的机器上都处理成功,两种特征

  • ZAB协议需要确保已经在Leader服务器上确认的事务最终被所有的服务器都提交
  • ZAB协议需要确保丢弃那些只在Leader服务器上被提出的事务

谁是Leader:让所有机器中拥有最高的Proposal ZXID的Follower做Leader
步骤分成三步:发现、同步、广播

  • 步骤 F.1.1 Follower F 将自己最后接受的事务Proposal的epoch值CEPOCH(Fp)发送给准Leader L
  • 步骤 L.1.1 当接受到来自过半Follower发送的CEPOCH值后,准Leader发送NEWEPOCH(e’)给过半的Follower
  • 步骤 F.1.2 赋值并且发送ACK(当前Follower的事务集合)
  • Leader选出一个覆盖最全面的Proposal组合

同步阶段

  • 将最全面的Proposal组合同步给所有的Follower
    广播阶段

e为主进程序列号也是主进程周期

Zookeeper 应用场景

数据发布、订阅

  • 实现配置信息的集中式管理和数据的动态更新
  • 应用:数据库、机器列表、选项开关
    负载均衡 DDNS
  • 本地host
  • 全自动的dns,消费者和服务者、注册中心、检测中心
    命名服务
  • 全局唯一ID,mysq auto increment 单机有效,UUID太长、含义不明
  • 用创建顺序节点的方式实现
    分布式协调通知
  • 任务调度
    Master选举
    分布式锁
    分布式队列

在我们系统中的应用

数据库等信息的配置
服务地址的配置
分布式锁

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

推荐阅读更多精彩内容

  • 一个真正的写数据流程是怎么样的?一个真正的读数据流程是怎么样的?一个真正的同步数据流程是怎么样的?从哪里到哪里?什...
    时待吾阅读 4,004评论 0 14
  • Apache Zookeeper是由Apache Hadoop的子项目发展而来,于2010年11月正式成为Apac...
    olostin阅读 6,099评论 2 9
  • ZooKeeper为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如tong'yi统一命名服务、配置管理和分...
    端木轩阅读 2,066评论 2 12
  • 浅谈分布式服务协调技术 Zookeeper Google的三篇论文影响了很多很多人,也影响了很多很多系统。这三篇论...
    algernoon阅读 1,579评论 1 12
  • 文/江一单 温度突然就降低了,早上醒来,肚子很痛,或许,就像昨晚突然疼痛起来,寝室里三个人都睡了,手机关着机,捂着...
    江一单阅读 208评论 0 0