今年初上线了我的第一个课程《从零实现 KV 存储》,广受好评,在这段时间里,有非常多的同学咨询我是否有意向去开设一个分布式 KV 的课程,毕竟之前的课程只专注于单机 KV 的实现,对于想要更进一步了解分布式存储的同学来说,分布式系统的理论和实践也是必不可少的。
于是我联合知名博主「青藤木鸟」一起,经过几个月的精心打磨,为大家带来了这个全新的课程,希望能够帮助到大家深入理解分布式理论,深入实践分布式系统的设计与实现,不断提升自己,增强自身的技术竞争力。
以下是此课程的详情,大家也可以直接进这个链接查看课程的内容以及购买方式:
本课程基于 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
以及一些附录内容,比如分布式调试、并发编程等,这些技术在课程中会经常使用到,基础薄弱者可以多学习一下。
之后还会根据根据同学们的需求和反馈添加一些加餐内容。
课程大致目录如下:
试看内容
\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