谈话ZooKeeper(一个)分析ZooKeeper的Quorums机制--预防Split-Brain问题
使用ZooKeeper学生们应该看到一个参数。它是ZooKeeper超过一半的群集必须节点(Majority)可用的。外来人才在整个集群中可用。在大多数情况下,这种说法是正确的。
谈论这篇文章背后的原因。
实际上ZooKeeper提供了几种方式来认定整个集群是否可用,Majority仅仅是当中的一种。 http://zookeeper.apache.org/doc/r3.3.5/zookeeperInternals.html
1. Majority Quorums
2. Weight
3. Hierarchy of groups
所谓整个集群是否可用。隐含的一个意思就是整个集群还可以选举出一个"Leader"。ZooKeeper默认设置的是採用Majority Qunroms的方式来支持Leader选举。在ZooKeeper中Quorums有2个作用:
1. 集群中最少的节点数用来选举Leader保证集群可用
2. 通知client数据已经安全保存前集群中最少数量的节点数已经保存了该数据。
一旦这些节点保存了该数据。client将被通知已经安全保存了。能够继续其它任务。而集群中剩余的节点将会终于也保存了该数据
採用Quoroms投票的方式来选举Leader主要是为了解决“Split-Brain”问题。 http://linux-ha.org/wiki/Split_Brain
Split-Brain问题说的是1个集群假设发生了网络故障。非常可能出现1个集群分成了两部分。而这两个部分都不知道对方是否存活。不知道究竟是网络问题还是直接机器down了,所以这两部分都要选举1个Leader,而一旦两部分都选出了Leader, 而且网络又恢复了,那么就会出现两个Brain的情况,整个集群的行为不一致了。
所以集群要防止出现Split-Brain的问题出现,Quoroms是一种方式,即仅仅有集群中超过半数节点投票才干选举出Leader。ZooKeeper默认採用了这样的方式。
更广义地解决Split-Brain的问题,一般有3种方式
1. Quorums
2. 採用Redundant communications。冗余通信的方式,集群中採用多种通信方式,防止一种通信方式失效导致集群中的节点无法通信。
3. Fencing, 共享资源的方式,比方能看到共享资源就表示在集群中,可以获得共享资源的锁的就是Leader。看不到共享资源的,就不在集群中
理解了Quorums就不难理解为什么集群中的节点数一般配置为奇数。节点数配置成奇数的集群的容忍度更高。
比方3个节点的集群。Quorums = 2, 也就是说集群能够容忍1个节点失效。这时候还能选举出1个lead,集群还可用
比方4个节点的集群,它的Quorums = 3。Quorums要超过3,相当于集群的容忍度还是1。假设2个节点失效。那么整个集群还是无效的
所以4个节点的集群的容忍度 = 3个节点的集群的容忍度。可是4个节点的集群多了1个节点,相当于浪费了资源。
更极端的样例是100个节点的集群,假设网络问题导致分为两个部分。50个节点和50个节点,这样整个集群还是不可用的,由于依照Quorums的方式必须51个节点才干保证选出1个Leader。这时候能够採用Weight加权的方式。有些节点的权值高,有些节点的权值低,最后计算权值。仅仅要权值过半,也能选出1个Leader
版权声明:本文博客原创文章。博客,未经同意,不得转载。
谈话ZooKeeper(一个)分析ZooKeeper的Quorums机制--预防Split-Brain问题的更多相关文章
- 161209、简要分析ZooKeeper基本原理及安装部署
一.ZooKeeper 基本概念 1.ZooKeeper 是什么? Zookeeper官网地址: http://zookeeper.apache.org/ Zookeeper官网文档地址:http:/ ...
- [转]分析zookeeper能做什么
Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zo ...
- zookeeper的下载安装和选举机制(zookeeper一)
1. 简要概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的框架.Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架它负责存储和管理大家都关心的 ...
- 【Zookeeper系列】ZooKeeper机制架构(转)
原文链接:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...
- Zookeeper原理分析之存储结构Snapshot
Zookeeper内存结构 Zookeeper数据在内存中的结构类似于linux的目录结构,DataTree代表这个目录结构, DataNode代表一个节点.DataTree默认初始化三个目录:&qu ...
- java架构之路-(分布式zookeeper)zookeeper集群配置和选举机制详解
上次博客我们说了一下zookeeper的配置文件,以及命令的使用https://www.cnblogs.com/cxiaocai/p/11597465.html.我们这次来说一下我们的zookeepe ...
- Kafka源码系列之源码分析zookeeper在kafka的作用
浪尖的kafka源码系列以kafka0.8.2.2源码为例给大家进行讲解的.纯属个人爱好,希望大家对不足之处批评指正. 一,zookeeper在分布式集群的作用 1,数据发布与订阅(配置中心) 发布与 ...
- 从头开始搭建一个dubbo+zookeeper平台
本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...
- 搭建一个dubbo+zookeeper平台
本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...
随机推荐
- Windows Phone开发(8):关于导航的小技巧
原文:Windows Phone开发(8):关于导航的小技巧 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还 ...
- HDU 4337 King Arthur's Knights 它输出一个哈密顿电路
n积分m文章无向边 它输出一个哈密顿电路 #include <cstdio> #include <cstring> #include <iostream> usin ...
- WPF 3D:MeshGeometry3D的定义和光照
原文 WPF 3D:MeshGeometry3D的定义和光照 由于WPF计算光照会根据整个平面的方向向量,所以如果在不同面上使用同一个点可能会达到不同的光照效果.让我们用不同的定义Mesh的方法来演示 ...
- Hbase结构简单、作法
Hbase架构简单介绍.实践 版权声明:本文博主原创文章,博客,未经同意不得转载.
- Java Swing TextArea 滚动条和获得焦点
JTextArea text=new JTextArea(); text.setLineWrap(true);//设置自己主动换行,之后则不须要设置水平滚动栏 JScrollPane scroll=n ...
- 两个堆叠fragment,上层fragment响应于降低fragment的button点击事件补救措施
加入onViewCreated的Touch事件监听, 以解决叠在一起的fragment上层响应下层的button点击事件解决方法 @Override public void onViewCreated ...
- 关于委托:异常{ 无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型 }
异常{ 无法将 匿名方法 转换为类型"System.Delegate",因为它不是委托类型 } 委托实际上是把方法名作为参数,但是若有好多个方法时,就要指明是哪个参数 查看如下代 ...
- 截图工具 Snagit
相对于其他截图工具方面,Snagit 一个主要特点是: 滚动截图. 另:同样基于手工绘制的形状截图, 有可能截取文本(测试只 windows在窗口内的目录 要么 文件名 实用). 不管是 web页,是 ...
- Android学习路径(两)项目文件本身使用场景和文件演示
ios讨论群1群:135718460 1.src文件:java源码存放文件夹 2.gen 文件:自己主动生成全部由android开发工具自己主动生成的文件,文件夹中最重要的就是R.java文件,这个 ...
- 输出A打头的字符串
题目描述 输出n个字符串,把其中以字母A打头的字符串输出. 输入 第一行 n 第二行到第n+1行,每行一个字符串 输出 A打头的字符串 样例输入 3 Ada Bob Alice 样例输出 Ada Al ...