当前位置: 代码网 > it编程>编程语言>Java > 每天进步“亿点点”,阿里云大师深入拆解Java虚拟机

每天进步“亿点点”,阿里云大师深入拆解Java虚拟机

2024年08月06日 Java 我要评论
(1)Zookeeper 选举会发生在服务器初始状态和运行状态下。(2)初始状态下会根据服务器sid的编号对比,编号越大权值越大,投票过半数即可选出Leader。(3)Leader 故障会触发新一轮选举,zxid 代表数据越新,权值也就越大。(4)在运行期选举还可能会遇到脑裂的情况,大家可以自行学习。本文来源:微信公众号作者:雷架丨爱笑的架构师小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

(3)服务器3启动

发起一次选举,服务器1、2、3先投自己一票,然后因为服务器3的id最大,两者更改选票投给为服务器3;

投票结果:服务器1为0票,服务器2为0票,服务器3为3票。此时服务器3的票数已经超过半数(3票),服务器3当选leader

服务器1,2更改状态为following,服务器3更改状态为leading。

(4)服务器4启动

发起一次选举,此时服务器1,2,3已经不是looking 状态,不会更改选票信息。交换选票信息结果:服务器3为3票,服务器4为1票。此时服务器4服从多数,更改选票信息为服务器3。

服务器4并更改状态为following。

(5)服务器5启动

与服务器4一样投票给3,此时服务器3一共5票,服务器5为0票。

服务器5并更改状态为following。

最终的结果

服务器3是 leader,状态为 leading;其余服务器是 follower,状态为 following。

运行时期的leader选举

在 zookeeper运行期间 leader 和 非 leader 各司其职,当有非 leader 服务器宕机或加入不会影响 leader,但是一旦 leader 服务器挂了,那么整个 zookeeper 集群将暂停对外服务,会触发新一轮的选举。

初始状态下服务器3当选为leader,假设现在服务器3故障宕机了,此时每个服务器上zxid可能都不一样,server1为99,server2为102,server4为100,server5为101

集群 leader 节点故障

运行期选举与初始状态投票过程基本类似,大致可以分为以下几个步骤:

(1)状态变更。leader 故障后,余下的非 observer 服务器都会将自己的服务器状态变更为looking,然后开始进入leader选举过程。

(2)每个server会发出投票。

(3)接收来自各个服务器的投票,如果其他服务器的数据比自己的新会改投票。

(4)处理和统计投票,每一轮投票结束后都会统计投票,超过半数即可当选。

(5)改变服务器的状态,宣布当选。

话不多说先来一张图:

运行器 leader 故障后选举流程

(1)第一次投票,每台机器都会将票投给自己。

(2)接着每台机器都会将自己的投票发给其他机器,如果发现其他机器的zxid比自己大,那么就需要改投票重新投一次。比如server1 收到了三张票,发现server2的xzid为102,pk一下发现自己输了,后面果断改投票选server2为老大。

选举机制中涉及到的核心概念

敲黑板了,这些概念是面试必考的。

(1)server id(或sid):服务器id

比如有三台服务器,编号分别是1,2,3。编号越大在选择算法中的权重越大,比如初始化启动时就是根据服务器id进行比较。

(2)zxid:事务id

服务器中存放的数据的事务id,值越大说明数据越新,在选举算法中数据越新权重越大。

(3)epoch:逻辑时钟

也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的,每投完一次票这个数据就会增加。

(4)server状态:选举状态

looking,竞选状态。

following,随从状态,同步leader状态,参与投票。

observing,观察状态,同步leader状态,不参与投票。

leading,领导者状态。

总结

(1)zookeeper 选举会发生在服务器初始状态和运行状态下。

(2)初始状态下会根据服务器sid的编号对比,编号越大权值越大,投票过半数即可选出leader。

(3)leader 故障会触发新一轮选举,zxid 代表数据越新,权值也就越大。

(4)在运行期选举还可能会遇到脑裂的情况,大家可以自行学习。

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

深知大多数初中级java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

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

如果你觉得这些内容对你有帮助,可以添加下面v无偿领取!(备注java)
img

总结

本文从基础到高级再到实战,由浅入深,把mysql讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关mysql的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

mysql50道高频面试题整理:

笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

mysql50道高频面试题整理:

[外链图片转存中…(img-8gqjrerc-1710426121909)]

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com