重磅出炉!从零实现分布式 KV!

今年初上线了我的第一个课程《从零实现 KV 存储》,广受好评,在这段时间里,有非常多的同学咨询我是否有意向去开设一个分布式 KV 的课程,毕竟之前的课程只专注于单机 KV 的实现,对于想要更进一步了解分布式存储的同学来说,分布式系统的理论和实践也是必不可少的。

于是我联合知名博主「青藤木鸟」一起,经过几个月的精心打磨,为大家带来了这个全新的课程,希望能够帮助到大家深入理解分布式理论,深入实践分布式系统的设计与实现,不断提升自己,增强自身的技术竞争力。

以下是此课程的详情,大家也可以直接进这个链接查看课程的内容以及购买方式:

https://av6huf2e1k.feishu.cn/docx/JCssdlgF4oRADcxxLqncPpRCn5bav6huf2e1k.feishu.cn/docx/JCssdlgF4oRADcxxLqncPpRCn5b


本课程基于 MIT 6.5840(前 6.824,主要复用了课程实验的代码框架和测试),参考各种资料,结合我们的一些工业界经验和多次实现相关实验的经验,按易于理解的方式,拆成循序渐进的模块,每节只关注一小部分,以图文、代码和视频的形式呈现。

本课程会手把手教你如何弄懂一个共识协议,以及基于共识协议的分布式 KV 的方方面面、各种细节;也会教你如何组织和写出漂亮的工程代码。分布式系统是当今主流互联网系统的基础架构,而共识协议又是其中的典型代表和基石中的基石。

学习本课程,能让你对分布式系统所面临的问题、所使用的技能有一个全面和深入的认识。

关于作者

青藤木鸟,计算机本硕,有多年大厂、外企和创业公司的 infra 从业经验。专注大规模数据系统,包括分布式系统、数据库、存储和数据处理。以“木鸟杂记”的网名在知乎、b 站和公众号等平台,进行分布式系统和数据库相关知识持续输出。写过几十万字来翻译和分享分布式、数据库方面的经典书籍 DDIA。《分布式数据库论坛》创建者。现有维护专栏:《DDIA学习会》和 《系统日知录》。

**roseduan,**数据库内核开发工程师(Greenplum 和 Postgres 内核),专注于数据库、分布式、存储引擎等领域,有着丰富的实践经验,知名开源存储引擎 rosedb 和 lotusdb 的作者,累计约 6k star。

学习方式

建议按照章节顺序来看,每章先看文档内容,然后再看对应的视频,跟着实现代码,加深理解。如果你对一些前置知识和某些章节很熟悉,也可以快速跳到你关心的章节来看。

也可以结合 MIT 6.824 的 lecture 进行辅助学习:

https://www.youtube.com/@6.824

其他的参考资料,我们会列在每节的文末(文中也会在相关文字直接关联一些超链接),大家可以按需自行取用。

课程大纲

课程主要分为三部分内容:

  • raft 共识算法的实现
  • 基于 raft 的分布式 KV
  • 基于 multi raft 的 shardkv

以及一些附录内容,比如分布式调试、并发编程等,这些技术在课程中会经常使用到,基础薄弱者可以多学习一下。

之后还会根据根据同学们的需求和反馈添加一些加餐内容。

课程大致目录如下:

img

试看内容

\01. Raft 论文演绎

\04. PartA 状态转换

适用人群

这个课程对以下同学应该都非常的合适,包括但不限于:

  • 入门数据库内核的同学,分布式 KV 是现代分布式数据库中必不可少的重要组成部分,它为数据库提供数据存储、高可用性、横向扩展等保障,并且具备高性能和可伸缩性,学习课程可以帮助理解分布式数据库的技术核心。
  • 入门分布式存储的同学,从零实现一个分布式系统,加强对分布式相关知识的理解,而不仅仅限于理论知识,掌握如何构建、调试和优化分布式应用。
  • 增加 Go 项目经验的同学,如果学习了一些 Go 的基础知识,但是苦于没有项目经验,想要进一步巩固自己的知识,这个项目将会非常硬核,用于面试也会极具亮点。
  • 想要巩固基本功的同学,基本功对一个程序员来说非常重要。但是平常的一些课程,例如编程语言、数据结构、算法、多线程编程、分布式理论等,学完了之后总是没有太多的使用场景来实践,没过多久就忘记了。这个课程当中涉及到手写共识算法 raft、代码组织、代码命名、分布式理论、并发编程、并发调试等知识,可以帮助你打牢基本功。
  • 毕业设计,对于即将毕业的同学,苦于无法找到一个合适的毕设项目,基于这个项目做一些衍生处理(比如可视化)应该会让老师眼前一亮。

前置知识

本课程只需要对 Golang 有一个最基本的了解:懂基本语法,能看懂代码。不需要其他特别的前置知识,录屏的视频会带着大家一步步敲代码。如果有大家有觉得铺垫不清楚的地方,随时给我们反馈,我们会增加相关前置章节。

更新进度

目前已经更新了 7 节内容,预计后续每周将会更新 1-2 节,大概 2024.3 月更新完毕。

常见 Q&A

购买后在什么平台学习?

课程内容都在飞书云文档,购买成功后,为你开启对应的权限,所有内容都可以在线观看

课程时长?代码量?

以下皆为当前预估,以最后课程完成时状态为准。 课程视频时长:Raft 部分大概 6 小时、分布式 KV 部分大概 10 小时。 课程代码:自己需要写的部分,Raft 部分和 KV 部分大概各 1k 行;总 repo(包含测试代码、其他工具性代码)大概 10k 行。

课程代码是什么语言实现的?

课程基于 MIT 6824(现已更名为 6.5840) 的实验代码,因此是由 Go 语言实现的。后续根据同学需求和我们的精力有可能会支持其他的语言,比如 Rust 和 C++ 等。

课程和 MIT 6824 有什么区别,或者联系?

与 MIT 6.824 的联系是,课程复用了实验代码的框架和测试,因此课程内容和公开课 Lab 基本对应。 与 MIT 6.824 的区别是,本课程更侧重代码实践,只专注 Raft 和分布式 KV 代码的实现。为此我们通过详尽的前置知识铺垫、手敲代码录屏、代码级文档、多种答疑形式来确保你能在代码的级别理解 Raft 这个共识算法和基于 Raft 的分布式 KV 的方方面面。

如何获取项目中的代码?

购买成功后将会开启代码 pull 的权限,也可以到课程专属飞书用户群中下载。

文档和视频对应的吗?

涉及到写代码的部分,都会有对应的视频。

没有任何分布式系统和存储的基础,能学会吗?

当然可以,本课程只需要熟悉 Go 的语言基础就可以了。其他的内容,例如论文讲解、架构设计、代码组织,都会在课程中详细讲述,你也可以在文档中、用户群中进行咨询,完全可以学会。

购买后是否有有效期?

没有,购买后永久持有,无限次观看。


感谢大家一如既往的支持,也希望这个课程能够真正的帮助到大家,想要购买的同学,添加我下面的微信,有任何疑问都可以进行咨询。

最后再附上课程详情链接:

https://av6huf2e1k.feishu.cn/docx/JCssdlgF4oRADcxxLqncPpRCn5b