【Rust日报】2026-09-30 MySQL 读负载降 99%

💡 原文中文,约2900字,阅读约需7分钟。
📝

内容提要

rivet 用 Rust 直接读取 MySQL binlog 并写入 BigQuery,试点库含 154 张表、32 亿行,每日刷新 8 次,使副本读负载降低约 99%,出站流量降低约 98%,基础设施成本降低约 50%。Git Cherry Tree 用 Iced 重写界面,代码增至 4.5 万行 Rust,二进制约 15 MB,性能提升 3–4 倍。另有 Rust 内核模块环境搭建记录,以及 cargo-crap 0.6 新增重复函数类型化分级。

🔎

延伸解读

rivet 试点:从全量重载到 binlog 流式同步

rivet 用 Rust 直接读取 MySQL binlog,经 Parquet 写入 BigQuery,省去 Kafka、Debezium 等中间件。试点库 154 张表、32 亿行,每日刷新 8 次。原管道依赖日期窗口拉取,每周全量重载,导致无 updated_at 变更的修改延迟可见。切换后副本读负载降约 99%,出站流量降约 98%,基础设施成本降约 50%。

Iced 重写 Git Cherry Tree:性能与体积的权衡

Git Cherry Tree 将 Tauri + React 界面换成 Iced,界面代码从约 2.4 万行 TypeScript 增至约 4.5 万行 Rust。二进制从 Web 版 15 MB 到功能补齐后 23 MB,再压回 15.3 MB,panic=abort 可至约 11 MB。高负载帧时间从约 9 ms 降至 3–6 ms,百万行 diff 显示快 3–4 倍,Linux 可打包为单个可执行文件。

Rust 内核模块环境搭建:关键配置与注意事项

在 Ubuntu 26.04 和 Raspberry Pi 4 上搭建 Rust 内核模块环境,需交叉编译内核并关闭 CONFIG_MODVERSIONS。模块目录固定 rustup 工具链 1.93.1 后,hello_rust.ko 可在 Pi 上 insmod。本机 Ubuntu 构建则用 apt 安装 rust、rust-src 和对应内核版本的 linux-lib-rust,且不要加 LLVM=1,因为预编译内核走 gcc。

cargo-crap 0.6:重复函数分级的新特性与限制

cargo-crap 0.6 新增可选 triage,将函数对和相似度发给 TypeSafe 模型,返回四种类型、是否值得合并及漏修概率。置信度低于 0.5 标 uncertain。结果缓存在 target/,triage 只加注释,不改变退出码。无密钥或网络失败时整段分级丢弃,退回结构报告。默认关闭,需在 .cargo-crap.toml 开启并设置 TYPESAFE_API_KEY。

❓

Q&A

rivet 是什么?它如何降低 MySQL 读负载?

rivet 是一个开源 Rust CLI,直接从 MySQL 读取 binlog 并写入 BigQuery。它用 binlog 流替代了原先每周全量重载的管道,使 MySQL 副本读负载降低约 99%,每月读取量从约 4 TB 降至约 24 GB。

rivet 试点中基础设施成本降低了多少?

在同等刷新频率下,BigQuery、GCS 与出站合计基础设施成本约降低 50%。

Git Cherry Tree 为什么用 Iced 重写界面?

因为原先的 Tauri + React 界面存在构建体积大(Linux 约 90 MB)、跨进程调用延迟高(至少 3 ms)、传输大负载时界面卡顿、以及杀毒软件误报等问题。重写后二进制更小,性能提升 3–4 倍。

用 Iced 重写后,Git Cherry Tree 的性能有哪些提升?

高负载下帧时间从约 9 ms 降到 3–6 ms;百万行 diff 从点击到显示约 700 ms,比 Web 版快约 3–4 倍;Linux 上可打成单个可运行二进制。

在 Ubuntu 上开发 Rust 内核模块需要哪些准备?

需要 apt 安装 rust、rust-src 和与当前内核版本对应的 linux-lib-rust-$(uname -r),并且不要加 LLVM=1,因为 Ubuntu 预编译内核走的是 gcc。

cargo-crap 0.6 的 triage 功能是什么?

triage 是 cargo-crap 0.6 新增的可选功能,将每一对重复函数体和相似度发给 TypeSafe 的 System One 模型,返回四种类型(same-logic、parameterisable、shared-shape-only、structural-obligation)、是否值得合并,以及一边修 bug 另一边会不会漏修的概率。默认关闭,需在 .cargo-crap.toml 中开启并设置 TYPESAFE_API_KEY。

🏷️

标签

➡️

继续阅读