谈话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服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...
随机推荐
- siwft初学(一)
今天刚開始学习swift语言.首先须要下载xcode6 beta版本号.正式版本号然后会公布.自己学习总结一下,假设有误.请大家指出. 创建project的时候.language选择swift语言. ...
- android 编译调用C代码
博客地址:www.zalezone.cn 前言 需求来源 这几天帮别人做一个简单的androidclient,也没什么功能,主要就是调用C代码来对手机的Wifi网络进行设置.于是也就引出了技术难点所在 ...
- LoadRunner获取一个独特的价值在执行的场景
/* * * 笔者:古柏涛 * 迄今:2015-2-26 * E-mail:gubotao@foxmail.com * * 内容概要: * 本代码产生一个从1970年1月1日0时開始累计以毫秒为单位的 ...
- CentOS 6.3 安装 samba 共享(转)
PHP环境在linux下,但是开发的时候用的是windows,于是我用了samba将linux的一个目录共享,然后在windows上做映射,这样就可以直接在windows下编辑linux上的文件了 首 ...
- js实现文字逐个显示
先把代码摆上了吧: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtm ...
- IMP-00013 目前只有 DBA 其他导入能力 DBA 导出的文件
--实例演示 ---system用户导出 C:\Users\ZML>exp system/zml file='D:\zml.dmp' log = 'D:\zml.log' tables = (z ...
- Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x
诡谲的江湖,易变. 花花世界,车来人往. 最终确定.安家,将Cocos2d-x3.0final相关技术精加工的版本.并推出了博客文章, 不为他人,只为自己. 学习交流QQ群:301954471 --- ...
- Principle使用教程
本次分享主要有以下几点内容: 1.初识界面2.两个关键操作3.案例一:滑动4.案例二:点击跳转 5.案例三:跟随动画(抽屉效果) 1初识界面Principle的界面与Sketch基本一致,如下图: a ...
- Myeclipse 10/2014 配置插件(svn、maven、properties、velocity)方法
一.构造SVN具体说明 什么是SVN? 管理软件开发过程中的版本控制工具. 以下会以两种方式来介绍怎么安装svn,myeclipse安装SVN插件步骤.以myeclipse 2014为例,第一种是最常 ...
- 【YouVersion】 The Bible 圣经App
[YouVersion] The Bible 圣经 App 今天向大家郑重推荐一款非常棒的圣经App : <The Bible> YouVersion 团队开发的全球下载量和安装数目第 ...