大数据最全大数据分布式系统中的脑裂,你懂吗?_分布式系统脑裂(2),2024年最新华为大神花费5个月打造的这份714页学习笔记系列

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

第三方机构一般叫协调者,最出名且使用最广泛的就是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的集群节点数量建议为奇数的原因。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值