一文了解 EPaxos 核心协议流程

引言

EPaxos(Egalitarian Paxos)作为工业界备受瞩目的下一代分布式一致性算法,具有广阔的应用前景。但纵观业内,至今仍未出现一个EPaxos的工程实现,甚至都没看到一篇能把EPaxos讲得通俗一点的文章。EPaxos算法理论虽好,但由于其实在晦涩难懂,工程实现上也有很多挑战,实际应用落地尚未成熟。

本文旨在通俗易懂地介绍EPaxos算法,由浅入深、一步一步的让只有Paxos或Raft等分布式一致性算法基础的同学都能轻易看懂EPaxos,真正将晦涩难懂的EPaxos,变的平易近人,带入千万家。

在《一文了解分布式一致性算法EPaxos》中,从Paxos的问题引出EPaxos,介绍了EPaxos的基本概念与直观理解,相信读者已经对EPaxos有了整体的印象。

本文将从Paxos与EPaxos对比的角度,介绍EPaxos核心协议流程。上一篇文章最后留下的思考题,相信在阅读完本文后,都能找到答案。阅读本文需要一些Paxos或Raft等分布式一致性算法背景。

一 EPaxos基本思想

EPaxos是一个Leaderless的一致性算法,无需选举Leader,任意副本均可发起提议。

Leaderless也可以看作每个副本都是Leader,从Multi-Paxos或Raft的角度看,如果使用多Group,将每个Leader划分到不同的Group,每个副本担任一个Group的Leader,同时担任其它所有Group的Follower,好像也可以做到类似Leaderless的效果。

使用多Group实现的Leaderless,每个Group独立的对一系列Instance达成一致,每个Group产生一条Instance序列,不同Group产生的Instance彼此独立,不能确定先后顺序。因此跨Group的一致性是一大问题,在一致性层面无法解决,往往需要在上层使用分布式事务来解决。

EPaxos解决了这个问题,实现了真正的Leaderless。EPaxos通过跟踪Instance之间的依赖关系,确定不同Group产生的Instance的相对顺序,然后通过排序将多Group产生的多条Instance序列合并成一条全局的Instance序列,实现了跨Group的一致性,也即实现了真正的Leaderless。

EPaxos先运行共识协议,使各副本对Instance的值和Instance依赖的相对顺序达成一致,随后运行排序算法,基于前面已经达成共识的Instance的相对顺序,对Instance进行全局排序,最终得到一致的全局Instance序列。

以上是站在Multi-Paxos或Raft使用多Group实现Leaderless的角度引出EPaxos的基本思想,实际Group是一致性算法之外的概念,这里引入Group只是为了方便介绍,实际EPaxos中并没有Group的概念,但与Paxos或Raft类似,可以在EPaxos之上实现多Group。

二 EPaxos的Instance

EPaxos的Instance与Paxos有所不同,Paxos的Instance事先分配序号,但EPaxos的Instance不事先分配序号,各副本可以并发的乱序提交,但跟踪记录Instance之间的依赖关系,最后根据依赖关系排序。这里先总结一下不同点:

EPaxos的Instance与Paxos的不同点

Paxos的Instance由全局连续递增的InstanceID标识,InstanceID也是Instance的序号,全局唯一,连续递增。

EPaxos的Instance空间是二维的,每个副本拥有其中一行,因此由二维的R.i标识,其中R为副本标识,i为副本内连续递增的整数,每开始一个新的Instance就加一。副本R拥有的Instance序列为R.1,R.2,R.3,...... R.i,......

EPaxos的Instance相对Paxos还有一些额外的属性:

  • state标识Instance当前的状态&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值