raft算法的自我理解

1、raft算法是什么? 答:共识算法

2、raft算法有什么用? 答:维持不同机器的强一致性

3、raft算法通过什么方式来维持不同机器的强一致性? 答:传递log日志 ,按照官方的说法日志里面包含命令,每台机器执行相同的命令,结果应该是一样的

4、raft算法如何传递日志? 答:Raft算法通过Leader节点来传递日志。当一个客户端发送一条请求给Leader节点时,Leader节点会将该请求作为一条日志条目添加到自己的日志中,并将该日志条目复制到其他节点的日志中。接收到日志条目的节点会对其进行持久化,并向Leader节点发送确认消息(心跳)。一旦Leader节点收到大多数(超过半数)节点的确认消息,该日志条目就被认为是已提交的,然后Leader节点会将该日志条目应用到状态机,并将执行结果返回给客户端。

5、raft算法是如何选举leader的? 答:vote 出来的,每个机器都可以接受投票,也可以投对面,但是每台机器只有一张票,奇数的机器的大多数获得票的人会成为leader ,其他机器称为follower,在投票的时候,被投的机器叫做候选人 比如说7台机器 只要有一台候选人拿到了4票,则那个候选人则为leader 如果是偶数的机器,候选人的票数一样,则会等时间,时间一过继续举行投票,直到选出leader为止 。

6、假如有五台机器,选leader的时候,如果两台和另外三台因为网络等原因断开了,该是什么样的情况?

答:这种情况下,会从两台和三台中各选一名leader ,因为这两坨断开了,所以并不知道对面都存在了一名leader,两台中会按照leader来传送日志,三台中会按照另一个leader来传送日志,同样它们的follower也会发送心跳来告诉leader,这种情况下会有两个client客户端,一个leader对应一个client客户端,这个时候他们都不会真正的提交,等网络重连之后,会按照优先级也就是票数,两台的leader会主动放弃,这个时候,两台机器都会回滚到网络刚断开的时候,然后由真正的leader领导,继续发送日志给其他机器

本文仅个人理解,如若讲错,各位尽可评论

相关推荐
AlfredZhao1 天前
Oracle GDD 与 Raft:别把共识机制和数据主权混为一谈
raft·gdd
KaiwuDB6 天前
KaiwuDB 运维实战 03:双副本仲裁节点部署与高可用实践
运维·时序数据库·raft·kaiwudb·数据库运维·双副本高可用·仲裁节点
exarunner1 个月前
Raft 故障切换排障(下):Leader 已选出,为何仍不可用
raft
CodeStats1 个月前
《源纹天书》第一百九十一章至第一百九十五章:三界路由网络的部署、压力测试的模拟、混沌巨兽的苏醒、三界联合防御、背压的极限挑战!
java·raft·源纹天书
想你依然心痛2 个月前
分布式嵌入式系统——多节点协同与一致性协议
raft算法·分布式系统·软总线·一致性协议·状态同步·多节点协同·嵌入式简化
Solis程序员2 个月前
Raft:分布式系统的定海神针
java·分布式·kafka·rabbitmq·agent·raft
飞将3 个月前
从零实现Raft协议
raft
.魚肉3 个月前
Raft 共识算法 · 演示系统(多终端)
算法·go·raft·分布式系统
weisian1514 个月前
Java并发编程--45-分布式一致性协议入门:Raft、Paxos与ZAB的核心思想
java·分布式·raft·paxos·zab
源代码•宸7 个月前
分布式理论基础——Raft算法
经验分享·分布式·后端·算法·golang·集群·raft