< 返回版块

mxsm 发表于 2025-10-13 19:21

Tags:Rust, RocketMQ

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编译后运行

image-20250419140855950.png

2. Broker(消息代理)

Broker 负责接收、存储和转发消息。在 Rust 实现中,Broker 的设计充分考虑了高并发和低延迟的需求,采用异步和非阻塞设计,支持高并发消息处理。目前,已实现 Broker 的基本功能,后续将继续完善。

目前支持除了主从同步的和Pop消息模式的部分功能没有实现的所有功能(这里面还不包含Rocketmq CLI相关的命令支持)

在WSL编译后运行

image-20250419141214059.png

同时可以查看到NameServer的注册信息:

image-20250419141259963.png

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

评论区

写评论
hohowt 2025-10-14 09:29

新版没提供bin,需要自己构建吗?

1 共 1 条评论, 1 页