如何进行Raft协议实践中的SOFAJRaft剖析

发布时间:2021-12-28 14:00:40 作者:柒染
来源:亿速云 阅读:195

今天就跟大家聊聊有关如何进行Raft协议实践中的SOFAJRaft剖析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

-     SOFAJRaft 概述    -

从通过SOFAJRaft 框架的核心流程剖析加深对Raft协议的理解。SOFAJRaft 是一个纯 Java 的 Raft 算法实现库, 基于百度 braft 实现而来, 使用 Java 重写了所有功能, 支持:

额外扩展了一些功能:

整体项目如下:

如何进行Raft协议实践中的SOFAJRaft剖析

如何进行Raft协议实践中的SOFAJRaft剖析

-     领袖选举    -

SOFAJRaft 的选举主要通过判单两个属性:LogIndex 和 Term;Term 即任期,LogIndex即提交到 raft group 中的任务都将序列化为一条日志存储下来,每条日志一个编号,在整个 raft group 内单调递增并复制到每个 raft 节点。可以理解为事务id。投票处理的逻辑主要在 com.alipay.sofa.jraft.core.NodeImpl中,主要有四个函数:

整体流程如下:

如何进行Raft协议实践中的SOFAJRaft剖析

使用预投票可以防止网络抖动等特殊原因引起的瞬时失联节点无故捣乱:候选者在发起投票之前,先发起预投票,如果没有得到半数以上节点的反馈,则候选者就会识趣的放弃参选,也就不会抬升全局的 Term。

投票源码:

如何进行Raft协议实践中的SOFAJRaft剖析

预投票源码:

如何进行Raft协议实践中的SOFAJRaft剖析

-     存储机制    -

SOFAJRaft 存储模块分为:

如何进行Raft协议实践中的SOFAJRaft剖析

LogManager 调用日志存储 LogStorage 实现逻辑:

如何进行Raft协议实践中的SOFAJRaft剖析

SnapshotExecutor 状态机快照和远程安装镜像实现逻辑:

如何进行Raft协议实践中的SOFAJRaft剖析

-     一致性状态机    -

通过存储的设计,在引入状态机机制,就可以完成一致性状态机。SOFAJRaft状态机组成有:

SOFAJRaft Node节点利用日志复制完成数据同步,主要组成有:

下面通过简单介绍了下SOFAJRaft的选举实现、存储机制、状态机和日志复制四个方面。基本上完成了Raft实现的核心实现。但SOFAJRaft还有更多核心及优化,因为篇幅原因没有进入细细剖析。如果咱们自实现Raft协议,基本上也是实现这几个主流程即可完成简版Raft了。关于Raft协议暂时先告一段路,接下去准备开写ZAB协议。

看完上述内容,你们对如何进行Raft协议实践中的SOFAJRaft剖析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 深度剖析:HTTP协议
  2. etcd协调服务、raft协议、GRPC协议的原理是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

raft sofajraft

上一篇:基于ClickHouse的用户行为分析实践是怎样的

下一篇:web安全中色情勒索病毒和信息窃取木马的新套路是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》