浅谈分布式一致性协议 | 青训营笔记

138 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第7天

本节课学习一致性协议,了解它的工作原理以及之后的发展方向。

一、分布式一致性协议

1.分布式系统

随着数据规模增长、服务可用性要求的提高、快速迭代的业务要求我们从单系统向分布式系统发展,实现高性能、正确、可靠的系统。

然而,分布式系统存在CAP:

CAP是指在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。

所以,我们在此主要分析分布式系统的一致性。

2.协议类别

分布式一致性协议主要分为两大类,分别是单主协议和多主协议。

(1)单主协议

整个分布式系统就像一个单体系统,所有写操作都由主节点处理并且同步给其他副本。 协议:zab协议、Raft协议、Paxos协议

(2)多主协议

所有写操作可以由不同节点发起,并且同步给其他副本。 协议:Gossip协议、Pow协议

两者的核心区别是单主协议只允许主节点发起写操作,一致性更强,多主协议只能做到弱一致性。

3.共识算法

共识算法是当一个值被确定后所有人都认同。应用层面不同的一致性,都可以用共识协议来实现。

二、Raft案例

前面提到Paxos协议和Raft协议都是单主协议,Raft算法是对Paxos算法的简化和改进,是目前业界广泛使用的分布式一致性协议,用来实现分布式系统中的强一致性。

1.Raft原理

遵循Raft算法的分布式集群中每个节点扮演以下三种角色之一:

leader:领导者,其负责和客户端通信,接收来自客户端的命令并将其转发给follower

follower:跟随者,执行来自leader的命令

candidate:候选者,当follower长时间没收到 leader的消息就会成为候选者,抢夺成为leader的资格

360截图20220816215151624.jpg

系统中最多只有一个leader,如果在一段时间里发现没有leader,则大家通过选举-投票选出leader。leader会不停的给follower发心跳消息,表明自己的存活状态。如果leader故障,那么follower会转换成candidate,重新选出leader,任期在Raft中称为term。

选举过程如下:

  • 增加节点本地的 current term ,切换到candidate状态
  • 投自己一票
  • 并行给其他节点发送 RequestVote RPCs
  • 等待其他节点的回复

三、发展方向

1.一致性协议作为系统

分布式日志:暴露日志的接口提供给上层应用,提供灵活高可用的一致性服务

2.高性能一致性协议

低延时:结合 RDMA 网络以及可编程交换机,实现 us 级别操作。

LeaderLess:节点就地提交,降低 WAN 网络下 RTT 开销

3.Paxos和Raft相互关联