Raft算法详解(一):介绍

发布时间:2024年01月21日

简单介绍

Raft是一种一致性算法,它包含了几个部分分别是领导者选举、日志复制、日志压缩和安全性。

角色

在Raft算法执行时存在着三种角色,分别是领导者(Leader)、追随者(Follower)以及竞选者(Candidate)

领导者:负责管理集群的其他节点和响应客户端请求。整个集群有且只有一个领导者。领导者会定期向集群其他节点发送心跳包,以表示领导者还活着。

追随者:负责同步领导者的日志。整个集群存在多个追随者。每个追随者都设置了一个超时定时器(超时时间随机),当追随者收到领导者的心跳包后,就会重置定时器并发回一个心跳包,表示自己还活着。

竞选者:当追随者超时未收到领导者的心跳包,则认为领导者已死。此时追随者转换为竞选者,开始新一轮的竞选。竞选者会向其他节点发送选票,收到选票的结点会发送支持票或反对票。

其中领导者和追随者是长期存在的角色,而竞选者是临时存在的角色。竞选者只会出现在领导者选举这个阶段,当领导者选举完成,未竞选成功的竞选者就会转换为追随者。

任期

Raft算法的执行是以任期为单位的。一个任期主要包含了选举领导者、日志管理两个过程。一轮投票未能选出领导者或者领导者宕机不能发送心跳包时,本次任期结束。

领导者选举

每个任期都是以领导者选举为起点的,只有选出了领导者才能继续后面的任务。

日志复制

日志复制是Raft算法的核心部分,领导者在接收客户端的请求后,会要求追随者复制领导者的日志,使整个集群的日志保持一致性。

安全性

Raft算法在领导者选举以及日志复制上做了一些限制,以确保算法的可靠性

参考文章

RAFT算法详解
raft共识算法 - 安全性safety

下一篇会讲解Raft的领导者选举过程

文章来源:https://blog.csdn.net/PYJTRK/article/details/135704359
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。