RocketMQ-Rust:高性能、内存安全的消息中间件
在高并发、低延迟的分布式系统中,消息中间件扮演着至关重要的角色。Apache RocketMQ,作为阿里巴巴开源的分布式消息中间件,广泛应用于金融、电商等行业。然而,Java 实现的 RocketMQ 在启动速度、内存占用和跨平台支持等方面存在一定的局限。为了解决这些问题,开发者 mxsm 基于 Rust 语言重构了 RocketMQ 的核心组件,经过一年多的开发推出了 rocketmq-rust 项目。
为什么选择 Rust?
Rust 语言以其内存安全、零成本抽象和高并发性能而闻名。相比 Java,Rust 的无垃圾回收机制和高效的异步编程能力,使其在构建高性能系统时具有天然优势。因此,使用 Rust 重构 RocketMQ,可以显著提升系统的启动速度、降低内存占用,并增强跨平台兼容性。
项目概览
rocketmq-rust 是对 Apache RocketMQ 的非官方 Rust 实现,旨在为 Rust 开发者提供高性能、可靠的消息队列服务。该项目充分利用了 Rust 的特性,如内存安全、零成本抽象和高并发性能,采用异步和非阻塞设计,支持高并发消息处理。此外,rocketmq-rust 与 Rust 生态中其他库和框架的兼容性良好,为开发者提供灵活的集成选项。项目支持多种平台,包括 Linux、Windows、macOS 等,方便在不同环境下使用。
核心模块实现
目前,rocketmq-rust 已实现以下核心模块:
1. Name Server(命名服务器)
Name Server 是 RocketMQ 的核心组件之一,负责管理 Broker 的元数据。在 Rust 实现中,Name Server 的启动时间显著缩短,启动速度相比 Java 版本大大减少,且具有跨平台特性和内存安全性。功能方面,已实现 Broker 注册、心跳检测、获取集群信息等基本功能。后续计划将逐步实现更多功能,以达到与 Java 版本相同的功能水平。
Name Server是现在整个项目中整体实现最完整的一个模块,整体上能单独使用用于生成环境
在WSL编译后运行
2. Broker(消息代理)
Broker 负责接收、存储和转发消息。在 Rust 实现中,Broker 的设计充分考虑了高并发和低延迟的需求,采用异步和非阻塞设计,支持高并发消息处理。目前,已实现 Broker 的基本功能,后续将继续完善。
目前支持除了主从同步的和Pop消息模式的部分功能没有实现的所有功能(这里面还不包含Rocketmq CLI相关的命令支持)
在WSL编译后运行
同时可以查看到NameServer的注册信息:
3. Client SDK(客户端 SDK)
Client SDK 提供了与 RocketMQ 交互的接口,支持消息的发送和接收。在 Rust 实现中,Client SDK 基于 RocketMQ Java 客户端进行开发,提供了发送单条消息、批量消息和 RPC 消息等功能,方便开发者集成和使用。
使用例子可以参照:https://github.com/mxsm/rocketmq-rust/tree/main/rocketmq-client/examples
快速上手
要在本地运行 rocketmq-rust,可以通过以下方式:CSDN 博客
-
下载预编译的二进制文件:从 发布页面 下载适合您操作系统的版本,解压后即可运行。
-
使用 Cargo 安装:在终端中运行以下命令:GitHub
cargo install rocketmq-namesrv
-
从源代码构建:克隆项目仓库,进入项目目录,运行以下命令:
cargo run --bin rocketmq-namesrv-rust
启动后,可以通过 --help
参数查看可用的配置选项,如端口、IP 地址等.
参与贡献
rocketmq-rust 是一个开源项目,欢迎开发者参与贡献。您可以通过以下方式参与:
- 报告问题:在 Issues 中报告您遇到的问题。
- 提交代码:Fork 项目,提交 Pull Request,贡献您的代码。
- 提供建议:在 Discussions 中提出您的建议和想法。
愿景
实现现有的Rocketmq的所有功能,兼容Java版本的Rocketmq。后续提供Rust的特有的特性(规划中)。
Ext Link: https://github.com/mxsm/rocketmq-rust
评论区
写评论新版没提供bin,需要自己构建吗?