分布式CAP理论
Consistency 一致性
Availability 可用性
Partition tolerance 分区容错性
(ps:三者不可兼顾)
什么是raft算法?(AP)
Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比 Paxos 算法更易懂且更容易实现。
raft算法解决了什么问题?
Raft 是用来管理复制日志(replicated log)的一致性协议。它跟 multi-Paxos 作用相同,效率也相当,但是它的组织结构跟 Paxos 不同。这使得 Raft 比 Paxos 更容易理解并且更容易在工程实践中实现。为了使 Raft 协议更易懂,Raft将一致性的关键元素分开,如 leader 选举、日志复制和安全性,并且它实施更强的一致性以减少必须考虑的状态的数量。用户研究的结果表明,Raft 比 Paxos 更容易学习。 Raft 还包括一个用于变更集群成员的新机制,它使用重叠的大多数(overlapping majorities)来保证安全性。
简单来说就是解决了分布式集群下的高可用性和分区容错性!
基本概念
节点状态:
The Follower state(随从)
the Candidate state(候选)
the Leader state(领导)
选举机制:当前的 leader 宕机时,一个新的 leader 必须被选举出来。(只有候选者才可以发起选举投票)
These messages are sent in intervals specified by the heartbeat timeout
选举结束后通过Leader向随从节点发送心跳监听来确保节点的可用性
日志复制:Leader 必须从客户端接收日志条目然后复制到集群中的其他节点,并且强制要求其他节点的日志和自己的保持一致。
安全性:Raft 中安全性的关键是状态机的安全性:如果有任何的服务器节点已经应用了一个特定的日志条目到它的状态机中,那么其他服务器节点不能在同一个日志索引位置应用一条不同的指令。
算法动画:raft动态演示
参考:百度文库文献