我为什么用纯 Go 写了一个 1.67 亿 ops/s 的消息代理
来源:dev.to — 2026-09-19
📋 概述
作者提出「消息代理税」:Go 与 Rust 微服务只有 20 毫秒启动、25 MB 内存,一旦引入 Kafka 或 RabbitMQ,立刻要维护数 GB 的 JVM 堆或 Erlang 运行时、协调组件、空闲即占 500 MB 到 1 GB 内存的节点,以及偶发的全局停顿。于是他写了 VortexMQ:5.7 MB 静态二进制、零 CGO 零外部依赖、单机环形缓冲 1.671 亿 ops/s、2.33 百万 ops/s 的 TCP 吞吐,空闲内存低于 15 MB。
🔑 核心要点
- 痛点叫「消息代理税」:队列消耗的资源可以比生产消息的服务高二十倍。
- 核心性能来自无锁环形缓冲,单机 167.1 百万 ops/s、每次操作 5.98 纳秒。
- 兼容 Redis 的 RESP2 与 RESP3 协议,可直接用主流 Redis 客户端或命令行工具连接。
- 延迟消息用分层时间轮做到 O(1);死信队列自动隔离崩溃载荷,并支持界面一键重放。
💡 金句
当队列消耗的资源是生产消息服务的二十倍时,这套架构一定是失衡的。
👍 0
👎 0
← 返回 dev.to 首页