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

01|以终为始:手写开源消息队列最终成果展示

本课程为精品小课,不标配音频
你好,我是文强。
在课程的最开始,我想先带你了解一下我们的最终产出是什么,也就是这个消息队列它是什么样子的,还会分享一些我自己在学习 Rust 这门语言过程中的经验,帮助你大胆入门。

对比经典的消息对列

开篇词中我分享过,本系列课程的目标是完成一个分布式基础软件:消息队列。所以我们不妨先来看一张经典的消息队列系统架构图。
消息队列经典架构图
如上图所示,消息队列在架构上分为客户端服务端集群消费端三大部分。我们这门课要实现的是服务端集群这部分。相当于现在社区主流的消息队列,比如 RocketMQ、Kafka、RabbitMQ 、Pulsar 等。
从架构的角度,服务端集群都是由 Broker 集群和元数据集群两部分组成。Broker 集群负责消息数据的读写,元数据集群负责 Broker 集群元数据的管理和部分 Broker 集群的管控、调度操作。
从实现来看,Broker 集群可以分为计算层和存储层,计算层负责消息队列相关逻辑的处理,存储层负责消息数据的持久化存储。
在当前主流的消息队列中,Broker 集群和元数据集群的组成关系如下:
我们在开篇词中讲了,我们希望做成一个很牛逼的消息队列。那你可能有疑问,既然有这么多成熟的消息队列了,为什么还要再写一个?会有什么优势?你可以去我的项目官网中找找答案,也欢迎在留言区与我交流!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 项目旨在完成一个分布式基础软件:消息队列,具备完整 Serveless 能力。 2. 项目设计和实现按照标准工业级别的开源基础软件要求进行。 3. 最终作品是一个云原生 Serverless 消息队列,由 Broker 集群和元数据集群两部分组成,实现了分布式集群化部署、快速水平扩容的能力。 4. 元数据存储服务是第一阶段作品,分为元数据存储和集群调度两部分,可以理解为实现一个分布式的 KV 存储引擎。 5. 元数据集群是一个由多台 Server 组成的、基于 Raft 协议构建的集群,每台 Server 的存储层是基于 RocksDB 构建的 KV 存储模型。 6. Rust 开发完成消息队列需要具备丰富的 Rust 学习经验和实践经验。 7. 学习 Rust 语言的基础知识点,主要选择《Rust语言圣经》这份资料就够了,然后需要具备检索和举一反三的能力。 8. build_driver 方法中的代码涵盖了 Rust 基础语法、特征 Trait、智能指针 Arc、Box、特征对象 Dyn、生命周期-静态变量 'static、多线程编程 Send、Sync等核心部分。 9. 学习 Rust 的最好方式是带着目的去学习,以终为始,通过需求来组合各个知识点,不要死记硬背,更不要抄代码,要先理解需求,理解 Rust 语法,然后再去写代码. 10. build_driver 方法中的代码返回一个可以在多线程间共享的 AuthStorageAdapter Trait 实现,通过 Result<Arc<dyn AuthStorageAdapter + Send + 'static + Sync>, RobustMQError> 这句代码实现。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部