对 Paxos算法 和 Raft算法 的简单理解

文章目录

  • 1 Paxos算法
    • 1.1 用途
    • 1.2 模型
      • 1.2.1 无主模型
      • 1.2.2 有主模型
  • 2 Raft 算法
    • 2.1 用途
    • 2.2 核心思想
    • 2.3 角色分配
    • 2.4 特点

1 Paxos算法

1.1 用途

Paxos算法是用于 解决分布式一致性问题的,即一个分布式系统中的各个进程 是如何就某个值达成一致的。

1.2 模型

	前提:
	    在一个小岛上,议员数量固定不可变。
		每一个提议都有固定编号,编号保持增长,且不可回退。
		每个议员只会同意大于自身记录的提议编号的新提议。

1.2.1 无主模型

	场景:某个议员收集到新提议,向所有议员发起投票,若投票过半,则通过。
	问题:
		(1)每个议员都有权利发起投票,同时发起的投票ID相同,会导致冲突。
		(2)若议员数量是偶数,容易发生“死锁”。
		(3)多议员之间的信息未必同步,相互同步次数不可预测。

1.2.2 有主模型

场景:选出一个Leader,负责发起投票 ,充当数据同步的样本。不仅解决了提议ID冲突的问题,也解决了数据同步问题。
选举规则
初次选举:根据设备ID选举。先启动的设备ID大,选取ID大的设备作为Leader。投票过半即可。
后续选举:根据事务ID和设备ID选举。给事务ID和设备ID 都比自己大的设备投票。
问题
(1)节点过多,虽然业务处理能力强,但选举效率低。 可限制参与选举和投票的节点数量。
(2)若同时存在多主,即发生“脑裂”。

2 Raft 算法

2.1 用途

用于 管理日志一致性的 算法。

2.2 核心思想

在分布式系统中,通过副本来实现数据的安全性。如何实现多个副本的一致性呢?
通过日志来实现,将相同的日志在不同的设备上执行,会得到相同的结果。

2.3 角色分配

Leader      领导者:负责与客户端的交互,日志复制。同一时刻只能存在一个。
Candidate	候选人:仅存在于选举阶段。跟随者想参与竞选,会转变为候选人。
Follower 	跟随者:普通节点。村民。

2.4 特点

(1)任期
每一届领导者会有唯一的任期标识。若选举失败,直接开始下一个任期和新一轮选举。
(2)日志复制
Leader 将所有操作记录到日志里,通过心跳机制转发给Follower ,从而实现最终结果一致性。

你可能感兴趣的:(大数据)