TechBits 博客

为什么我们把热点服务迁到了 Rust

发布时间: 2026-06-15 14:10 · 作者: TechBits

在网关与序列化这类 CPU 密集、延迟敏感的链路上,我们用 Rust 重写后 p99 延迟下降约 40%,内存占用减半,并彻底告别了 GC 抖动。

Rust 迁移前后对比

一、所有权模型带来的确定性

Rust 的所有权与借用检查在编译期就消除了数据竞争和悬垂指针,让我们敢在高并发热路径上大胆使用零拷贝与无锁结构,而不必担心运行时崩溃。

let buf = Bytes::from(payload);   // 引用计数零拷贝
tokio::spawn(async move {
    handle(buf).await;            // 跨任务共享,无需深拷贝
});

二、渐进式迁移,而非推倒重来

我们没有重写整个系统,而是通过 FFI 把最热的编解码模块先换成 Rust:用 criterion 做基准测试、用 flamegraph 定位热点、用 cargo-fuzz 兜底边界。每替换一个模块都灰度上线、对比指标。

三、收益与代价

收益是延迟与内存的实打实下降;代价是团队的学习曲线和编译时间。但对核心链路,这笔投资非常值。