Raft分布式一致协议

Raft协议是一种分布式一致性算法,用于在集群中达成共识。该协议包含领导选举和日志复制两个核心部分。节点有三种角色:领导者、跟随者和候选人。领导者负责处理写请求和日志复制,跟随者接收并响应领导者的消息,候选人则在未收到领导者心跳时转换状态,发起选主。选主规则基于任期编号和日志编号。日志复制过程中,领导者接收客户端请求,将日志条目追加并同步给跟随者,当多数跟随者确认后,日志条目才会被提交。

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

目录

1.什么是Raft协议?

2.Raft协议每个节点有几个角色,每个角色的作用是什么?

3.Raft 怎么进行选主

4.Raft 怎么进行日志复制?

5.Follower选举的投票规则是什么?

参考


1.什么是Raft协议?

        raft协议是多个节点数据之间达成共识的协议,使用的场景是etcd,consul。

        raft包含两部分领导选举(leader election)和日志复制(log replication)

        包含两类消息:请求投票消息(request vote)和追加条目消息(append entry)

2.Raft协议每个节点有几个角色,每个角色的作用是什么?

       raft协议每个节点可能出现三个角色,分别是领导者,跟随者,候选人  

        1.领导者(leader) 三个功能:处理写请求,日志复制,给follower发送心跳

        2.跟随者(follower) 处理和响应leader发过来的日志复制消息

        3.候选人(candidate) follower节点长时间没有收到leader节点的心跳,切换状态为candidate,进行选主。向其他节点投票的rpc,进行选主。

3.Raft 怎么进行选主

        以三个节点为例,初始三个节点都处于follower状态,每个节点都会设置等待leader的的随机超时时间,如果超过随机超时时间,还是没有收到leader的心跳,自己的节点由follower转变为candicate,增加自己的任期编号,向其他节点发起rpc投票消息,如果有超过一半的节点的投票给自己,自己变为leader,向其他节点发送心跳。

4.Raft 怎么进行日志复制?

         Raft协议leader节点和follower节点之间的日志复制过程如下:   

        1.客户端发送写请求到leader节点

        2.leader节点接受写请求,leader将写请求追加到自己的日志log entry中,并发送日志同步消息到其他的follower节点。如果leader节点收到大多数的follower节点都写入了log entry.那么leader节点将log entry提交到状态机中,同时返回成功到客户端,否则返回错误信息给客户端。

        log entry的对象包含的内容:用户数据,索引编号,任期编号。

        索引编号和任期编号用于投票。

5.Follower选举的投票规则是什么?

        1.任期编号大的节点拒绝投票任期编号小的节点的消息

        2.最后一条日志编号大的拒绝投票给最后一条日志编号小的

        3.一个任期内只投出一张票

        4.先来先投票

参考

1.https://juejin.cn/post/6907151199141625870----- Raft协议

2.https://www.ofcoder.com/2020/10/31/theory/%E5%88%86%E5%B8%83%E5%BC%8F%E4%B8%80%E8%87%B4%E6%80%A7%E5%8D%8F%E8%AE%AE%20-%20Raft/------Raft协议 读N遍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值