-
一件事一致 :一件事,一个结论
-
已达成一致的结论,不可推翻
有哪些分布式共识算法?
-
Paxos:被认为是分布式共识算法的根本,其他都是其变种,但是 Paxos 论文中只给出了单个提案的过程,并没有给出复制状态机中需要的 multi-paxos 的相关细节的描述,实现 Paxos 具有很高的工程复杂度(如多点可写,允许日志空洞等)。
-
Zab:被应用在 Zookeeper 中,业界使用广泛,但没有抽象成通用的 library。
-
Raft:以容易理解著称,业界也涌现出很多 Raft 实现,比如大名鼎鼎的 etcd, braft, tikv 等。
什么是 Raft?
Raft 是一种更易于理解的分布式共识算法,核心协议本质上还是师承 Paxos 的精髓,不同的是依靠 Raft 模块化的拆分以及更加简化的设计,Raft 协议相对更容易实现。
https://raft.github.io/
模块化的拆分主要体现在:Raft 把一致性协议划分为 Leader 选举、MemberShip 变更、日志复制、Snapshot 等几个几乎完全解耦的模块。
更加简化的设计则体现在:Raft 不允许类似 Paxos 中的乱序提交、简化系统中的角色状态(只有 Leader、Follower、Candidate 三种角色)、限制仅 Leader 可写入、使用随机化的超时时间来设计 Leader Election 等等。
特点:Strong Leader
-
系统中必须存在且同一时刻只能有一个 Leader,只有 Leader 可以接受 Clients 发过来的请求;
-
Leader 负责主动与所有 Followers 通信,负责将“提案”发送给所有 Followers,同时收集多数派的 Followers 应答;
-
Leader 还需向所有 Followers 主动发送心跳维持领导地位(保持存在感)。
一句话总结 Strong Leader: "你们不要 BB! 按我说的做,做完了向我汇报!"。
另外,身为 Leader 必须保持一直 BB(heartbeat) 的状态,否则就会有别人跳出来想要

(编辑:黄山站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|