运⾏时状态分析
在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. Django框架搭建web项目(二)

    1.在路径XXXXX\mydjango\mydjango\mydjango下新建views.py(在浏览器中url请求后所展示的内容设置) from django.http import HttpRe ...

  2. Jmeter六、采样器解析

    一.HTTP request sampler 默认端口:80 协议protocol:http,https,file 参数中有特殊字符,勾选编码encode send files with reques ...

  3. 英国延长 UKCA 标记截止日期

    政府于 2022 年 11 月 14 日宣布,企业将有 2 年的时间来应用新的 UKCA 产品标记.在 2024 年 12 月 31 日之前,企业可以选择使用 UKCA 或 CE 标志,之后企业只能使 ...

  4. FII-PRX100-D开发板FPGA的烧录和RISC-V 软件代码下载

    1. 生成*.bit文件之前先RESET结果 首先,打开Vivado FII_RISCV_V2.01工程(这里以V2.01版本为例),如图1所示. 图1 FII_RISCV_V2.01工程 要生成相应 ...

  5. github使用流程

    前期硬件准备工作(电脑相关配置): 1.下载git软件,傻瓜式安装 https://git-scm.com/download/win 2.设置你的用户名称与邮件地址 git config --glob ...

  6. Typora 基本功能

    Typora 基本功能 typora 下载官网:https://www.typora.io/       "安装到C盘" 基本使用 1.该文件后缀 .md2.六级标题 :ctrl+ ...

  7. oracle从1到10生成顺序号

    oracle从1到10生成顺序号,脚本案例如下: select 'ABAB'|| lpad(level,5,0) as serial_no from dual connect by level< ...

  8. 掷骰子【普通线性DP】【转移方程可以优化为矩阵快速幂】

    掷骰子 思路 可以先定义一个状态f[i] [j]: 前i个骰子,最后一个面是j的方法数, 肯定超时,然鹅可以混一些分,代码如下 for(int i=1;i<=6;i++) f[0][i]=1; ...

  9. 如何优化MySQL

    1.MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率.b. 选择合适的表字段数据类型和存储 ...

  10. canal对接阿里云kafka

    一.前提条件 已经有mysql实例 自建或者云上都可以 已经在阿里云的kakfa创建topic 默认不自动创建topic 二.配置要监控的instance 先修改example的配置文件 conf/e ...