大数据分布式系统中的脑裂,你懂吗?_分布式系统脑裂

为什么会出现脑裂呢?分布式是大数据技术的核心思想,会出现还没等这个为主的领导挂掉,秘书就会搞一些小动作做一些类似夺权的行为,也开始对下面的小弟发号施令。

如何避免这种不合理的夺权行为发生呢?需要用可信任的第三方机构,由它来裁决谁是真正的领导,而谁只能暂时充当秘书,什么时候通过权力交接,都由第三方机构说了算。

第三方机构一般叫协调者,最出名且使用最广泛的就是zookeeper;如何预防分布式系统中的脑裂问题?想要公平公正的确定一个组织架构中谁才是符合要求的领导者,谁是秘书,协调者本身就必须得具备公平公正的条件;zookeeper有个强一致性算法也叫ZAB算法,给zookeeper提供了这种可信任的公平公正的基础;可分布式系统为了不让因为单个管理者挂掉而让整个系统陷入群龙无首的尴尬情况,于是会给分布式系统配置两个管理者,但是在集群正常运行时,只能一个为主另一个为辅,但在实际工作中如果大家都想当这个为主的领导;zookeeper有自己的默认策略就是比速度,看谁先向它提出当领导的申请,谁的速度快谁就暂时为主另一个当秘书。

具体的技术实现是两个预备领导都会向zookeeper的同一个地方写数据,但是因为ZAB算法的策略,限制了zookeeper在同一时间只能接受一个写请求,zookeeper的写请求处理方式是单线程的,这一点和redis很像,有一个先写进那就是领导,另一个就是秘书;如果某一刻这个领导挂了,zookeeper马上将秘书转成领导接任工作,技术实现就是在位的领导要把数据不间断的往某个地方写数据,zookeeper发现在位领导有段时间没往这个地方写数据了,就会取消当前的领导管理资格,将权力给秘书,并通知所有小弟系统进行了领导更换,让整个分布式系统处于一个持续可用的状态。

zookeeper集群自己选举master方式而保证不会脑裂的呢?zookeeper有自己的投票机制,其中的角色有三种,集群老大leader、以及集群小弟follower以及特殊的小弟叫observer。但是一般除开zookeeper的集群规模比较庞大之外,几乎用不到observer这个角色的。zookeeper对应的状态和角色一样,也有与之对应的leading、following以及observing,但多了一个looking状态,因为对于很多分布式系统来说老大和小弟的角色都是在集群启动之前在配置文件中指定的,zookeeper集群比较特殊,他的leader和follower角色是在集群启动的过程中通过节点间的投票来决定的,再投票结束前leader还没有被明确分配之前,此时的zookeeper中所有的节点它都是处于looking状态的,也就是等待leader被确定的状态,而且集群在运行过程中如果leader突然间挂了或者其他什么原因连接不上,那为了满足zookeeper自身的高可用,那么这个时候就需要重新进行投票来选择新的leader,而这个时候集群又会重新进入looking状态,而当投票完成之后各个zookeeper节点都被分配了对应的角色之后,那么各个节点就会进入对应的leading或者following状态。所以你会发现在整个zookeeper集群中,每个节点担任什么角色他都是动态决定的,老大和小弟都是随机的。

投票机制有两种编号一个叫myid,另一个叫zxid,前者是zookeeper在启动的时候就确定了的,它是一个固定的数字比如三个节点的zookeeper集群,那么这个myid的编号分别是1、2、3,而这个zxid则表示每个zookeeper节点所处理的事务编号,因为不同的节点接受的数据请求数量一般情况下是不一样的,因此这个zxid在不同节点间的编号会随着这个请求量一直在动态变化,那么在选举的时候呢?节点间会根据这两个编号来作为当选leader的依据,如果你的zxid比其他节点的要大,那你就是leader;而如果zxid相同的情况下,再比较myid谁大谁就是leader,而且在投票过程中为了提高投票效率,我们只需要遵循过半原则就可以,也就是集群中只要有超过一半人选了谁当leader,那这个leader的位置就确定了,后面的人就不用再继续投票了,自己的角色默认就是follower;因此这也是为什么zookeeper的集群节点数量建议为奇数的原因。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

转存中…(img-CRs2PaUH-1712889192785)]

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值