18 | 实战:如何基于Raft从0到1构建一个支持多存储引擎分布式KV服务?
唐聪
该思维导图由 AI 生成,仅供参考
你好,我是唐聪。
通过前面课程的学习,我相信你已经对 etcd 基本架构、核心特性有了一定理解。如果让你基于 Raft 协议,实现一个简易的类 etcd、支持多存储引擎的分布式 KV 服务,并能满足读多写少、读少写多的不同业务场景诉求,你知道该怎么动手吗?
纸上得来终觉浅,绝知此事要躬行。
为了方便后面描述,我把它命名为 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
《etcd 实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 云原生工程师设计上存储引擎的介绍,获益匪浅,具体实现上的解读,也搞清了之前几个疑问,etcd足够轻量级,简直就是学习分布式系统的最佳案例,后面抽空自己基于raft搞个小小项目,进一步加深下,老师在这块有什么分布式书籍推荐没
作者回复: 嗯,自己动手会有更深的理解,书籍推荐《Designing Data-Intensive Applications》,中文名《设计数据密集型应用》,豆瓣评分高达9.7,https://book.douban.com/subject/30329536/,非常不错的分布式入门书籍。
2021-03-02212 - 无名氏大佬 有完整demo可以分享吗😀2022-02-086
- 丹尼尔-雪碧请问大佬,raft模块返回的快照信息,快照是从哪里来的?我理解快照就是从kvStorage来的?所以是当需要生成快照的时候,raft模块调用kvStorage的接口生成快照?2022-07-31归属地:广东
- 小何这个实现的代码在哪里可以下载?2022-05-28
- lixg文中提到“Messages,持久化 Entries 后,发送给其他节点的消息” 这里的消息是指什么消息,包含什么内容?2022-03-141
收起评论