zk分布式实现理论,Paxos算法,ZAB协议,2024年最新java队列实现原理

Paxos算法流程

(1)Prepare: Proposer生成全局唯一且递增的Proposal ID,向所有Acceptor发送Propose请求,这里无需携带提案内容,只携 带Proposal ID即可。

(2)Promise: Acceptor收到Propose请求后,做出“两个承诺,一个应答”。

➢ 不再接受Proposal ID小于等于(注意:这里是<= )当前请求的Propose请求。

➢ 不再接受Proposal ID小于(注意:这里是< )当前请求的Accept请求。

➢ 不违背以前做出的承诺下,回复已经Accept过的提案中Proposal ID最大的那个提案的Value和Proposal ID,没有则 返回空值。

(3)Propose: Proposer收到多数Acceptor的Promise应答后,从应答中选择Proposal ID最大的提案的Value,作为本次要发起的 提案。如果所有应答的提案Value均为空值,则可以自己随意决定提案Value。然后携带当前Proposal ID,向所有Acceptor发送 Propose请求。

(4)Accept: Acceptor收到Propose请求后,在不违背自己之前做出的承诺下,接受并持久化当前Proposal ID和提案Value。

(5)Learn: Proposer收到多数Acceptor的Accept后,决议形成,将形成的决议发送给所有Learner。

案例讲解

有ABCDE五人对公司问题进行决议

第一种情况:

A对其他人发起提议,问能不能接受自己的意见,没说具体内容

BCDE回应A表示同意

A在收到2份回复时就会告知其他人自己提议的具体内容

BCDE在回应A表示同意

此时A的提议就会通过

第二种情况:

A与E同时发起提议,问能不能接受自己的意见,没说具体内容,AE的序号分别为1,2

B回应A,D回应E,这时C成为关键

(1)C先收到A的消息,回应A

此时A就会表明具体意见

BC接受

之后C又收到E的消息,回应E

此时E也会表明具体意见

CD接受

这个时候AE会同时广播决议,因为E的id大,所以E会覆盖A的提议

第三种情况:

AE发起提议

B回应A,D回应E,这时C成为关键

C收到A的消息回复A,这时立刻收到E的消息,又回复E

这时A表明具体意见,C不会回复,没有足够响应

这时候A会从新发起提议,此时A的id会变为3,C又回复A

此时E表明具体意见,C不会回复,又会重新发起提议

这时候就会出现问题

ZAB协议

借鉴了Paxos算法,在Paxos基础上,zookeeper设计只有一台客户端(Leader)负责处理外部写事务的请求,在同步到其他节点,即只有一个Leader可以发起提案

消息广播

(1)客户端发起一个写操作请求。

(2)Leader服务器将客户端的请求转化为事务Proposal 提案,同时为每个Proposal 分配一个全局的ID,即zxid。

(3)Leader服务器为每个Follower服务器分配一个单独的队列,然后将需要广播的 Proposal依次放到队列中去,并且根据FIFO策略进行消息发送。

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

以下是部分内容截图
架构面试专题及架构学习笔记导图.png

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

内容截图
[外链图片转存中…(img-j2EXzTnk-1712783168831)]

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

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值