• 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领导,继续发送日志给其他机器

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

  • 相关阅读:
    我的 Kafka 旅程 - SASL+ACL 认证授权 · 配置 · 创建账号 · 用户授权 · .NET接入
    HotSpot VM垃圾收集器——Serial Parallel CMS G1垃圾收集器的JVM参数、使用说明、GC分析
    Android Studio实现简单的页面跳转(简单教程)
    open vswitch + veth 实验
    制造业小企业内部小程序简单设计
    ARM编程环境搭建教程
    AVR单片机在心电检测中的应用研究
    从页面 A 打开一个新页面 B,B 页面正常关闭或意外崩溃,A页面怎么更新B页面提交的参数并进行更新
    jwt_生成token
    学习笔记(1)
  • 原文地址:https://blog.csdn.net/m0_63251896/article/details/133688473