Rust 实战 · 手写下一代云原生消息队列
15
15
1.0x
00:00/00:00
登录|注册

07|基于Raft协议构建分布式集群(一)

本课程为精品小课,不标配音频
你好,我是文强。
前面我们写完了单机存储层,为了提升数据的可靠性,现在我们需要将单点存储升级为分布式存储。从技术上看,实现分布式存储需要两步:
构建基于某个一致性协议的分布式集群。
在构建完成的分布式集群上存储数据。
所以接下来,我会在 7、8、9 三节课讲如何基于 Raft 协议构建多节点组成的分布式集群,在第 10 节课会讲如何基于构建完成的分布式集群完成数据的分布式多副本存储。
Tips:接下来我们主要从代码实现的角度讲解如何基于 Raft 协议构建集群。由于篇幅和 Raft 协议本身的复杂性,无法讲得特别细致,因此建议你去复习一下 Raft 协议的内容。如有更多问题,欢迎在留言区或者进交流群与我讨论。
如何选择合适的分布式一致性协议,这个理论基础我在之前的课程《深入拆解消息队列 47 讲》的《17|可靠性:分布式集群的数据一致性都有哪些实现方案?》中已经系统讲过了,这里不再重复。
从技术上来看,业界有 Raft、Paxos、Zab、ISR 等一致性协议的实现。虽然各种协议的理论和具体实现都不一样,但是从原理上看它们都具备在生产环境中使用的条件。那么我们为什么选择 Raft 协议,不选择其他的协议呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 构建分布式存储需要两步:构建基于某个一致性协议的分布式集群,以及在构建完成的分布式集群上存储数据。 2. 选择Raft协议的考虑:现成的合适的一致性协议、功能满足需求、Rust中有成熟的Raft协议库。 3. Raft协议的使用概述:Raft模型包含共识模块、Log、状态机、传输层四个部分,开发角度下的四个主要工作。 4. Raft协议的四个部分:共识模块、状态机、Log(存储层)、传输层。 5. 开发角度下基于raft-rs库构建集群的四个主要工作:构建存储层、构建网络层、构建单节点Raft状态机、整合状态机、存储层、网络层. 6. Raft Log的核心是Entry,每个Entry由Entry Type、Index、Term、Data四部分组成。 7. Raft Log存储在RocksDB中,通过RaftRocksDBStorage实现Storage Trait,提供了initial_state、entries、term、first_index、last_index、snapshot等方法来读写Raft的运行数据。 8. RaftRocksDBStorage基于RocksDB实现了Storage Trait的方法,用于Raft Node的初始化。 9. 构建分布式集群时需考虑选择合适的一致性协议,满足业务需求、语言有现成的实现、项目库的成熟度。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 实战 · 手写下一代云原生消息队列》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部