etcd 实战课
唐聪
腾讯云资深工程师,etcd 活跃贡献者
28449 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 28 讲
开篇词 (1讲)
etcd 实战课
15
15
1.0x
00:00/00:00
登录|注册

18 | 实战:如何基于Raft从0到1构建一个支持多存储引擎分布式KV服务?

读流程
写流程
leveldb实现
boltdb实现
Raft Node API
Raft API
leveldb
boltdb
内存map
应用到状态机存储中
多数节点持久化日志条目
共识模块广播日志条目
server提交请求给共识模块
client发起写请求
逻辑层及存储层组成的状态机
Raft层的共识模块
接口幂等性
安全性
开发效率、跨平台、可移植性
易用性、可调试性
性能
思考题
实现分析
整体架构设计
存储引擎内存map如何保证数据不丢失
启动时的工作
读写流程
支持多存储引擎
Raft算法库
支持的存储引擎
存储引擎抽象化设计
写请求流程
接口幂等性
安全性
开发效率、跨平台、可移植性
易用性、可调试性
性能
复制状态机
API设计
总结
思考题
实现分析
多存储引擎
复制状态机
API设计
整体架构设计
如何构建一个支持多存储引擎的分布式KV服务

该思维导图由 AI 生成,仅供参考

你好,我是唐聪。
通过前面课程的学习,我相信你已经对 etcd 基本架构、核心特性有了一定理解。如果让你基于 Raft 协议,实现一个简易的类 etcd、支持多存储引擎的分布式 KV 服务,并能满足读多写少、读少写多的不同业务场景诉求,你知道该怎么动手吗?
纸上得来终觉浅,绝知此事要躬行。
今天我就和你聊聊如何实现一个类 etcd、支持多存储引擎的 KV 服务,我们将基于 etcd 自带的raftexample项目快速构建它。
为了方便后面描述,我把它命名为 metcd(表示微型的 etcd),它是 raftexample 的加强版。希望通过 metcd 这个小小的实战项目,能够帮助你进一步理解 etcd 乃至分布式存储服务的核心架构、原理、典型问题解决方案。
同时在这个过程中,我将详细为你介绍 etcd 的 Raft 算法工程实现库、不同类型存储引擎的优缺点,拓宽你的知识视野,为你独立分析 etcd 源码,夯实基础。

整体架构设计

在和你深入聊代码细节之前,首先我和你从整体上介绍下系统架构。
下面是我给你画的 metcd 整体架构设计,它由 API 层、Raft 层的共识模块、逻辑层及存储层组成的状态机组成。
接下来,我分别和你简要分析下 API 设计及复制状态机。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了基于Raft协议构建支持多存储引擎的分布式KV服务的架构设计和实现要点。作者首先讨论了API设计和复制状态机,以及对HTTP/1.x协议的选择和提供的Put和Get接口。随后详细介绍了多存储引擎的设计,包括内存map、boltdb和leveldb三种存储引擎的原理和选型,重点介绍了boltdb的适用性。文章还探讨了leveldb的适合写多读少的存储引擎设计思路和原理,以及其与Bitcask存储模型的不同之处。此外,还介绍了Raft算法库的使用和共识模块的接口,以及etcd的共识算法库提供的功能。整体而言,本文通过实战项目metcd的设计和实现,帮助读者深入理解etcd的核心架构、原理和典型问题解决方案,同时拓宽了读者的知识视野,为他们独立分析etcd源码夯实基础。 文章介绍了Raft协议的核心API设计和使用,以及在metcd项目中的实际应用。同时,还详细讨论了支持多存储引擎的设计和实现,重点介绍了boltdb和leveldb的应用。此外,文章还概述了在metcd中的写入和读取流程,帮助读者全面了解分布式KV服务的工作原理。整体而言,本文内容丰富,涵盖了分布式系统设计和实现的多个关键方面,对于对分布式系统感兴趣的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《etcd 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 云原生工程师
    设计上存储引擎的介绍,获益匪浅,具体实现上的解读,也搞清了之前几个疑问,etcd足够轻量级,简直就是学习分布式系统的最佳案例,后面抽空自己基于raft搞个小小项目,进一步加深下,老师在这块有什么分布式书籍推荐没

    作者回复: 嗯,自己动手会有更深的理解,书籍推荐《Designing Data-Intensive Applications》,中文名《设计数据密集型应用》,豆瓣评分高达9.7,https://book.douban.com/subject/30329536/,非常不错的分布式入门书籍。

    2021-03-02
    2
    12
  • 无名氏
    大佬 有完整demo可以分享吗😀
    2022-02-08
    6
  • 丹尼尔-雪碧
    请问大佬,raft模块返回的快照信息,快照是从哪里来的?我理解快照就是从kvStorage来的?所以是当需要生成快照的时候,raft模块调用kvStorage的接口生成快照?
    2022-07-31归属地:广东
  • 小何
    这个实现的代码在哪里可以下载?
    2022-05-28
  • lixg
    文中提到“Messages,持久化 Entries 后,发送给其他节点的消息” 这里的消息是指什么消息,包含什么内容?
    2022-03-14
    1
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部