运⾏时状态分析
在ZAB协议的设计中,每个进程都有可能处于如下三种状态之⼀
  · LOOKING:Leader选举阶段。
  · FOLLOWING:Follower服务器和Leader服务器保持同步状态。
  · LEADING:Leader服务器作为主进程领导状态。
 
服务器⻆⾊
Leader
Leader服务器是Zookeeper集群⼯作的核⼼,其主要⼯作有以下两个:
  (1) 事务请求的唯⼀调度和处理者,保证集群事务处理的顺序性。
  (2) 集群内部各服务器的调度者。
 

Follower
Follower服务器是Zookeeper集群状态中的跟随者,其主要⼯作有以下三个:
  (1) 处理客户端⾮事务性请求(读取数据),转发事务请求给Leader服务器。
  (2) 参与事务请求Proposal的投票。
  (3) 参与Leader选举投票。
请求链路图

Observer基本和follower类似

SyncRequestProcessor处理器也组装上去,但是在实际运⾏过程中,Leader服务器不会将事务请求的
投票发送给Observer服务器
 
服务器启动
    1. 配置⽂件解析
  2. 初始化数据管理器
  3. 初始化⽹络I/O管理器
  4. 数据恢复
  5. 对外服务
启动流程图


 leader选举
Zookeeper集群中的⼀台服务器出现以下两种情况之⼀时,需要进⼊Leader选举。
  (1) 服务器初始化启动。
  (2) 服务器运⾏期间⽆法和Leader保持连接。
 
由于是初始情况,Server1(假设myid为1)和Server2假设myid为2)都会将⾃⼰作为Leader服务器来
进⾏投票,每次投票会包含所推举的服务器的myid和ZXID,使⽤(myid, ZXID)来表示,此时Server1的
投票为(1, 0),Server2的投票为(2, 0),然后各⾃将这个投票发给集群中其他机器
优先检查ZXID。ZXID⽐较⼤的服务器优先作为Leader。
如果ZXID相同,那么就⽐较myid。myid较⼤的服务器作为Leader服务器。
投票统计过半原则当选。

Zookeeper的深入分析的更多相关文章

  1. zookeeper(2) zookeeper的核心原理

    zookeeper 的前世今生 分布式系统的很多难题,都是由于缺少协调机制造成的.在分布式协调这块做得比较好的,有 Google 的 Chubby 以及 Apache 的 Zookeeper. Goo ...

  2. 深入分析Zookeeper的实现原理

    zookeeper 的由来 分布式系统的很多难题,都是由于缺少协调机制造成的.在分布式协调这块做得比较好的,有 Google 的 Chubby 以及 Apache 的 Zookeeper.Google ...

  3. 《从Paxos到Zookeeper:分布式一致性原理与实践》【PDF】下载

    内容简介 Paxos到Zookeeper分布式一致性原理与实践从分布式一致性的理论出发,向读者简要介绍几种典型的分布式一致性协议,以及解决分布式一致性问题的思路,其中重点讲解了Paxos和ZAB协议. ...

  4. Apache ZooKeeper 服务启动源码解释

    转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper-code/ 本文首先讲解了 Apache ZooKeeper 服 ...

  5. developerWorks 图书频道: 深入分析 Java Web 技术内幕,第 10 章

    developerWorks 图书频道: 深入分析 Java Web 技术内幕,第 10 章 深入理解 Session 与 Cookie Session 与 Cookie 不管是对 Java Web ...

  6. 从Paxos到Zookeeper 分布式一致性原理与实践读书心得

    一 本书作者介绍 此书名为从Paxos到ZooKeeper分布式一致性原理与实践,作者倪超,阿里巴巴集团高级研发工程师,国家认证系统分析师,毕业于杭州电子科技大学计算机系.2010年加入阿里巴巴中间件 ...

  7. Redis、Zookeeper实现分布式锁——原理与实践

    Redis与分布式锁的问题已经是老生常谈了,本文尝试总结一些Redis.Zookeeper实现分布式锁的常用方案,并提供一些比较好的实践思路(基于Java).不足之处,欢迎探讨. Redis分布式锁 ...

  8. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  9. [译]ZOOKEEPER RECIPES-Leader Election

    选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...

  10. zookeeper源码分析之六session机制

    zookeeper中session意味着一个物理连接,客户端连接服务器成功之后,会发送一个连接型请求,此时就会有session 产生. session由sessionTracker产生的,sessio ...

随机推荐

  1. nuxt中asyncData和fetch的区别

    asyncData作用于页面pages,在组件中不能使用,并且asyncData中没有this,如果想要给data中的数据赋值,要在asyncData函数中return出去 fetch 作用于组件中c ...

  2. C# POST multipart/form-data 方式提交数据

    一.提交方法 /// <summary> /// MultipartFormData Post方式提交 /// </summary> /// <param name=&q ...

  3. heimaJava-网络编程

    Java 网络编程 概念 网络编程可以让程序与网络上的其他设备中的程序进行数据交互 网络通信基本模式 常见的通信模式有如下两种形式,Client-Server(CS),Browser/Server(B ...

  4. JAVA 在开发中如何选择集合实现类

    先判断存储地类型(一组对象[单列]或者键值对[多列]) 一组对象:Collection接口 允许重复:list 增删多:LinkedList[底层维护了一个双向链表] 改查多;ArratList[底层 ...

  5. 用JS实现一个简单的购物车小案例

    该案例主要是实现的功能有:添加商品功能,将商品添加到购物车的功能还有将商品删除功能,还有就是移出购物车的功能 该案例实现的难点是将商品添加到购物车列表的时候 数量的增加,当购物车有该商品的时候就进行累 ...

  6. 2.Vue模板语法

    1.模板语法的概述 (1)如何理解前端渲染 将数据填充到HTML标签中,生成静态的HTML内容 2.前端渲染方式 (1)原生JS拼接字符串 (2)使用前端模板引擎 (3)使用Vue特有的模板语法 3. ...

  7. docker中的gitlab数据备份、迁移和升级

    前期准备 数据备份 记录gitlab运行命令: docker run -itd --name gitlab \ --hostname gitlab.suniot.cn \ -p 443:443 -p ...

  8. 整数划分问题(Java递归)

    整数划分问题(Java递归) 文章目录 整数划分问题(Java递归) 0. 问题描述 1.递归式 2.代码 3.参考 0. 问题描述 整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+- ...

  9. keycloak(转载)

    # 生成KEYSTORE.JKS keytool -genkeypair -alias keycloak.me -keyalg RSA -keystore keycloak.jks -validity ...

  10. Unity检测鼠标是否与UI交互

    在Unity项目中,假设在鼠标按键时会触发游戏内的操作,但是在鼠标与UI进行交互时我们希望停止游戏中的操作,这是需要使用EventSystem中的方法来检测鼠标是否正在与UI交互 private bo ...