0. 说明

  记录 ZooKeeper 的读写操作和选举机制


1. ZooKeeper 的读写操作

  1. 读操作:所有 ZooKeeper 节点都可以提供读请求(包括 follower 和 leader )
  2. 写操作:需要先通过 leader 节点,leader 同意之后,可以向指定节点写入

2. ZooKeeper 的选举机制

  2.1 说明

  ZooKeeper 虽然在配置文件中并没有指定 master 和 slave,但是 ZooKeeper 工作时,只有一个节点为 leader,其他则为 follower

  Leader是通过内部的选举机制临时产生的

  1. Zxid: ZooKeeper 的事务 id,每次处理请求(读或写),此 id 会 +1
  2. myid: 在配置时指定的 Zookeeper id

  2.2 初始化选举
  3个节点组成的 ZooKeeper 集群,myid 分别为102、103、104

  1. 启动 s102 ,选举状态为 looking 状态,
  2. 启动 s103 ,和 s102 进行通信,交换选举结果,根据 myid 的大小确认 s103 为 leader
  3. 启动 s104 ,和 s102 、s103 进行通信,交换选举结果,虽然 s104的 myid 的大于 s103 ,但是 s103 获得了一半以上的选票,s103 还是 leader

  2.3 非全新集群选举机制

  适用于 ZooKeeper 节点故障之后的重新选举

  1. 先比较 Zxid ,Zxid 大的胜出
  2. Zxid 相同的情况下, myid 大的胜出

ZooKeeper 的读写操作 & 选举机制的更多相关文章

  1. zookeeper篇-zk的选举机制

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 说说zk的选举机制 基础概念 zxid=事务id=一个时间戳,代表当前事 ...

  2. zookeeper选举机制

    在上一篇文章中我们大致浏览了zookeeper的启动过程,并且提到在Zookeeper的启动过程中leader选举是非常重要而且最复杂的一个环节.那么什么是leader选举呢?zookeeper为什么 ...

  3. java架构之路-(分布式zookeeper)zookeeper集群配置和选举机制详解

    上次博客我们说了一下zookeeper的配置文件,以及命令的使用https://www.cnblogs.com/cxiaocai/p/11597465.html.我们这次来说一下我们的zookeepe ...

  4. Zookeeper中的watcher监听和leader选举机制

    watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...

  5. 分布式协调组件Zookeeper之 选举机制与ZAB协议

    Zookeeper简介: Zookeeper是什么: Zookeeper 是⼀个分布式协调服务的开源框架. 主要⽤来解决分布式集群中应⽤系统的⼀致性问题, 例如怎样避免同时操作同⼀数据造成脏读的问题. ...

  6. 理解zookeeper选举机制

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  7. 学习笔记:Zookeeper选举机制

    1.Zookeeper选举机制 Zookeeper虽然在配置文件中并没有指定master和slave 但是,zookeeper工作时,是有一个节点为leader,其他则为follower Leader ...

  8. Zookeeper的概述、安装部署及选举机制

    一.Zookeeper概述 1.Zookeeper是Hadoop生态的管理者,它致力于开发和维护开源服务器,实现高度可靠的分布式协调. 2.Zookeeper的两大功能: (1)存储数据 (2)监听 ...

  9. zookeeper leader选举机制

    最近看了下zookeeper的源码,先整理下leader选举机制 先看几个关键数据结构和函数 服务可能处于的状态,从名字应该很好理解 public enum ServerState { LOOKING ...

随机推荐

  1. Entity Framework 6.x 学习之Database First

    一.单表操作 1. 建表 CREATE TABLE [Chapter1].[Customer] ( , ), ) COLLATE Chinese_PRC_CI_AS NOT NULL, ) COLLA ...

  2. Cglib invoke以及invokeSuper的一点区别

    简单记录下,解决的一个问题,Cglib的invoke和invokeSuper的区别: 简而言之,invoke方法调用的对象没有增强过,invokeSuper方法调用的对象已经是增强了的,所以会再走一遍 ...

  3. 基于Hadoop2.6.5(HA)的Hive1.2.1的MySQL方式配置

    1.Hive配置MySQL Hive只是一个工具,无需配置多台机器,我在CentOS7One机器上配置Hive /usr/local/hive/apache-hive-1.2.1-bin/conf c ...

  4. zoj 2744 Palindromes(计算回文子串个数的优化策略)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2744 题目描述: A regular palindrome i ...

  5. 我的菜单在母版页,如何更改菜单点击后的效果 Ver2

    很久之前,Insus.NET使用ASP.NET实现一个功能,非javascript.<我的菜单在母版页,如何更改菜单点击后的效果>http://www.cnblogs.com/insus/ ...

  6. HTML 【表单】

    表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签. 表单域.表单按钮. 表单标签 < form  action = " "  method = &q ...

  7. thinkphp save() 跟新失败

    一.失败案例 $data = I(); $rs = $this->typeModel->data($data)->save(); 二.正确案例 正确一 $rs=$this->t ...

  8. Java - Thread 和 Runnable实现多线程

    Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式 概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过jav ...

  9. 教你用Cordova打包Vue项目

    现在国内越来越多的开发者使用Vue开发混合app,但是当大家开发完成过后才发现不知道该怎么将Vue项目打包成app. 据我现在的了解打包Vue项目目前流行的就是使用weex和cordova.weex是 ...

  10. CodeForces822A

    A. I'm bored with life time limit per test 1 second memory limit per test 256 megabytes input standa ...