蚂蚁金服开源 SOFAJRaft:生产级 Java Raft 算法库
副标题[/!--empirenews.page--]
什么是 SOFAJRaft? SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景。 使用 SOFAJRaft 你可以专注于自己的业务领域,由 SOFAJRaft 负责处理所有与 Raft 相关的技术难题,并且 SOFAJRaft 非常易于使用,你可以通过几个示例在很短的时间内掌握它。 https://raft.github.io SOFAJRaft 是从百度的 braft 移植而来,做了一些优化和改进,感谢百度 braft 团队开源了如此优秀的 C++ Raft 实现。 https://github.com/brpc/braft 基础知识:分布式共识算法 (Consensus Algorithm)如何理解分布式共识?
有哪些分布式共识算法?
Raft 是一种更易于理解的分布式共识算法,核心协议本质上还是师承 Paxos 的精髓,不同的是依靠 Raft 模块化的拆分以及更加简化的设计,Raft 协议相对更容易实现。 https://raft.github.io/ 模块化的拆分主要体现在:Raft 把一致性协议划分为 Leader 选举、MemberShip 变更、日志复制、Snapshot 等几个几乎完全解耦的模块。 更加简化的设计则体现在:Raft 不允许类似 Paxos 中的乱序提交、简化系统中的角色状态(只有 Leader、Follower、Candidate 三种角色)、限制仅 Leader 可写入、使用随机化的超时时间来设计 Leader Election 等等。 特点:Strong Leader
一句话总结 Strong Leader: "你们不要 BB! 按我说的做,做完了向我汇报!"。 另外,身为 Leader 必须保持一直 BB(heartbeat) 的状态,否则就会有别人跳出来想要 BB 。 Raft 中的基本概念 篇幅有限,这里只对 Raft 中的几个概念做一个简单介绍,详细请参考 Raft paper。 https://raft.github.io/raft.pdf Raft-node 的 3 种角色/状态
Message 的 3 种类型
任期逻辑时钟
本图出自《Raft: A Consensus Algorithm for Replicated Logs》 什么是 SOFAJRaft?SOFAJRaft 是一个基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景。 使用 SOFAJRaft 你可以专注于自己的业务领域,由 SOFAJRaft 负责处理所有与 Raft 相关的技术难题,并且 SOFAJRaft 非常易于使用,你可以通过几个示例在很短的时间内掌握它。 https://github.com/brpc/braft SOFAJRaft 是从百度的 braft 移植而来,做了一些优化和改进,感谢百度 braft 团队开源了如此优秀的 C++ Raft 实现。 SOFAJRaft 整体功能&性能优化功能支持 1.Leader election:Leader 选举,这个不多说,上面已介绍过 Raft 中的 Leader 机制。 2.Log replication and recovery:日志复制和日志恢复。 1)Log replication 就是要保证已经被 commit 的数据一定不会丢失,即一定要成功复制到多数派。 2)Log recovery 包含两个方面: 3)Current term 日志恢复:主要针对一些 Follower 节点重启加入集群或者是新增 Follower 节点后如何追日志; 4)Prev term 日志恢复:主要针对 Leader 切换前后的日志一致性。 (编辑:西双版纳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |