Rust 实战 · 手写下一代云原生消息队列
许文强
前腾讯云 Kafka 技术负责人
21 人已学习
立即订阅
登录后,你可以任选2讲全文学习
Rust 实战 · 手写下一代云原生消息队列
15
15
1.0x
00:00/00:00
登录|注册

开篇词|为什么想用Rust写一个消息队列?

本课程为精品小课,不标配音频
你好,我是文强,一个长期在基础架构领域摸爬滚打的技术人,也是极客时间《深入拆解消息队列 47 讲》的作者。这次为你带来《深入拆解消息队列 47 讲》的后续课程:《Rust 实战 · 手写下一代云原生消息队列》。
没错,这门课程的关键词将是 Rust 编程。

学习 Rust 的关键问题是什么?

近几年,Rust 这门语言不断地出现在我们的视野中,我们经常会看到 “Rust 重写一切” 这句话。作为使用过多门编程语言的老研发,我对这种口号一般是免疫的。因为每一种新语言出现时,都会有类似的口号,比如 Scala、Golang、Haskell 等等。
真正让我想去尝试 Rust 这门语言的契机是:Rust 进入了 Linux 内核。当时我就在想,这么多年来,除了 C 和 C++ 外,Rust 还是第一门进入内核的新兴语言。像 Linus 这么轴的人竟然能让 Rust 进入内核,说明这个语言一定有非常厉害的地方。
在学习了 Rust 一段时间后,我遇到了第一个关键问题:语法记不住,各种语法糖、技巧不会用,不会写。其实对于我们这种长期编程的人来说,一般接触一门语言,花个几天就能开始产出了。但是,在 Rust 中我花了很长时间看完基础语法和各种特性后,第一个感觉就是好像懂了,但是真正要写点东西的时候,又发现好像啥都没懂。
本着实践是效率最高的学习方式,我开始去找能提升 Rust 技能的实战项目,这时我遇到了第二个关键问题:没有合适的项目让我去学习和实践。而且,这个问题还挺普遍。业界有很多偏基础语法、语言特性的资料,却少有让我们能够真正熟练掌握和应用这门语言的资料。

为何想用 Rust 编写项目?

怎么办?不能放弃啊!尤其是在体验了 Rust 的各种优点后,比如生命周期管理、无 GC、借用等等特性。
这让我想起了我在一几年的时候,负责过的一个用 C++ 重写的 Kafka 项目。这个项目最终商业化了,还产生了不错的收益,但是最后,这个 C++ 重写的 Kafka 却不再维护了,用回了社区版本 Java 写的 Kafka。放弃的主要原因是 C++ 版本的 Kafka 特性支持跟不上社区的进度。而跟不上的一个核心原因就是 C++ 的开发效率确实比 Java 低很多,但是 C++ 语言特性带来的性能提升却是实实在在的,比 Java 写的社区版本高很多。
得益于多语言经历,我发现 Rust 具有不输 C++ 的性能,但是编码效率却比 C++ 高很多。
所以我萌生了用 Rust 写一个消息队列的想法。一方面,我希望能让自己快速掌握这门语言,并应用于实际开发;另一方面,也是想把自己在消息队列这块的积累用 Rust 刷新一下,并沉淀成具体的项目。
很高兴,在过去一年的时间里,这个消息队列已经初具雏形了。
在这段编码过程中,我经历了从 Rust 小白到用 Rust 写成一个分布式基础软件的过程。由于 Rust 确实是一门学习曲线很陡的语言,我在这期间踩了很多坑,也走了很多弯路,所以我想将这个过程分享出来,希望能带给你直接的帮助。

这门课是如何设计的?

这就不得不提到我们的课程设计。
诚如你所见,这个专栏目前只有十几讲,手写一个分布式基础软件又该是怎样的一个工作量,想必你有概念。所以,这将是一个系列课程。我们的整体学习路径是:从 0 开始,用 Rust 写成一个分布式的基础软件(消息队列)。期间会讲解 Rust 的实战技巧,带你融会贯通这门语言。最终,我们一起打造出一个牛逼的开源基础软件。
系列中的每一门课,都将按照 10 讲左右的篇幅去设计,定位实战,所以会包括技术方案设计、Rust 代码实现及讲解两大部分。
看到这里,你可能还会有点顾虑,如果没有消息队列的技术背景,我能学明白吗?
在我看来,影响不大。消息队列隶属基础软件,而分布式基础软件的基础模块都是通用的,比如单机网络、存储、分布式一致性、分布式高性能读写等等。换句话说,你可以忽略技术背景,而去关注项目编程本身,去关注 Rust 这门语言有哪些不同之处和使用优势。
那么,作为系列课程的第一门课,我们要怎么出发呢?
既然是实战,就不能只讲实现思路,而忽略实现过程,所以我们要聚焦一下,这门课程我们将主要讲解如何用 Rust 实现一个消息队列架构中的必要组件:类 Zookeeper 的分布式协调服务。而且这部分从代码实现逻辑上看,也是和消息队列业务逻辑无关的,所以更无需担心自己是否具有消息队列基础。
课程设计思路如下:
先完成消息队列的整体技术方案设计,讲清楚我们整个系列课程是要做成什么样的消息队列。
在开始编码之前,我们需要重点掌握 Rust 的哪些知识点,并对这些知识点做一个精简的讲解和资料链接。
教你如何组织、管理、编译一个复杂的 Rust 项目,并完成最基础的命令行参数、配置、日志、测试用例部分的编写,即完成代码的初始框架。
通过单机网络层、单机存储层、分布式集群这三个步骤,构建一个简单的分布式集群化的存储集群。
在当前的分布式集群化的存储集群的基础上,实现存储消息队列集群元数据所需要的 KV 存储能力。
从客户端和服务端的角度讲解提高性能的常用技巧,如客户端的连接池、连接复用、失败重试等,服务端的主节点读写、从节点可读的能力等。
完成本课程的学习后,你就掌握了如何用 Rust 编写一个分布式的 KV 模型存储的元数据集群。具体内容还可以参考下本课程的知识脑图。
在这里,你会看到项目核心逻辑以及 Rust 编程实现过程,还会有可运行的 Demo 支持大家学习和讨论。而随着系列课程的展开,你还会看到项目中更多功能模块的实现,更多 Rust 语法和特性的使用,期待你能在实践中收获全新的编程体验。
本课程所有可运行的源代码都在这里,请参考 robustmq-geek
好,现在就开启我们的 Rust 编程之旅吧!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Rust语言的学习曲线陡峭,需要实践项目来提升技能,但缺乏合适的实战项目。 2. Rust具有不输C++的性能,但编码效率比C++高,因此作者决定用Rust写一个消息队列项目。 3. 课程设计包括从0开始用Rust写成一个分布式基础软件,每门课程包括技术方案设计和Rust代码实现。 4. 课程的第一门课主要讲解如何用Rust实现一个消息队列架构中的必要组件:类Zookeeper的分布式协调服务。 5. 课程设计思路包括完成消息队列的整体技术方案设计,掌握Rust的知识点,组织、管理、编译复杂的Rust项目,构建分布式集群化的存储集群等。 6. 完成本课程的学习后,学员将掌握如何用Rust编写一个分布式的KV模型存储的元数据集群。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
学习 Rust 的关键问题是什么?
为何想用 Rust 编写项目?
这门课是如何设计的?
显示
设置
留言
收藏
1
沉浸
阅读
分享
手机端
快捷键
回顶部