分布式与并发【四】浅谈分布式一致性算法Raft

本文详细阐述了Raft一致性算法的工作原理,包括其在分布式系统中如何进行Leader选举、日志复制和日志压缩,以及如何通过快照提高效率。文章对比了Raft与Paxos算法的不同之处,强调了Raft的易理解和实施特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前简单介绍过Paxos算法,并且推导了整个算法的产生,说明了实现过程,但是显而易见Paxos算法非常难理解,并且更难以实现,Raft算法的出现用来代替Paxos算法,实现更加容易,由于本人水平有限,可能文中出现错误,还请大家指出。

基础概念介绍

Raft是一种用于管理复制日志的一种一致性算法,它将通过一些功能将一致性的一些问题分解,从而更方便理解。

一、Raft的重要功能

Leader选举、日志复制(数据同步)、日志压缩(数据快照)、安全性等等

二、Raft的角色

Raft算法中将服务节点分为了三种角色:

Leader(领导者): 主服务节点,用来处理客户端的请求,并且将数据同步到Follower节点,只有当大多数Follower节点复制成功后才算数据写入成功。
Follower(跟随者):从服务节点,用来保持和Leader的数据同步,并且接受Leader心跳,当超过一定时间没有收到心跳则发起选举流程。
Candidate(候选者):当选举阶段发生时,Follower发起选举并将自身更新为候选者的角色,该角色只在选举阶段出现。

三、Leader任期(Term)

Raft算法将整个服务的时间划分为一个个Term周期,每个Term周期也就是Leader所当选的任期,该任期通过一个连续的数字来表示,每个任期开始的时候都会选举一个新的Leader来带领其他Follower,如果一个新的任期没有选举出Leader则Term+1,开始下一个任期的选举,通常具有最新任期的节点视为拥有最全的数据。

Raft保证在一个任期期间,最多只有一个Leader。

简单来说就像是总统的选举,每个任期为5年,当出现一些情况时,会进行总统的重新选举,也自然到达一个新的任期。

四、服务通信

在Raft算法中,各个不同节点之间的通信使用的是RPC协议,在整个算法中的通信分为以下三种

  • RequestVote:选举投票请求,主要在Leader选举期间发生。
  • AppendEntries:Leader发起的心跳,并且也同时进行日志的复制。
  • InstallSnapshot:Leader向Follower同步日志快照信息,主要用来新加入的Follower节点和日志同步落后太多的节点与Leader同步数据。

Leader选举

一、什么是Leader的选举?

Raft算法规定了,只有Leader节点才能处理读写请求,Follower节点只进行数据的同步和Leader的选举。选举时采用RequestVote RPC通信

在服务器启动运行时刻,所有节点默认都为Follower角色,然后会等待一段时间没有收到Leader的心跳,则延迟随机时间来进行角色转化(Candidate)发起选举。
为什么需要延迟随机时间,这是为了多个Candidate节点同时发起选举,会造成选票分票导致无法选举成功,而延迟一段随机时间可以提高选举成功率。

在服务的运行当中,如果一个Followe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值