// 2024.06 – 2024.12 · 架构与核心开发
分布式任务队列
基于 Redis Streams + Go 实现的高吞吐任务调度系统,支持优先级、延迟与幂等。
GoRedisPostgreSQLgRPCPrometheus
关键成果
- ▸ 单集群稳定承载 50k QPS,P99 调度延迟 < 30ms
- ▸ 通过 Lua 脚本保证消费原子性,实现"恰好一次"投递语义
- ▸ 提供 Web 控制台,支持任务回放与失败链路追踪
背景
业务侧原有任务系统基于 RabbitMQ,在峰值场景下出现消息堆积、消费失衡的问题。 团队需要一套面向高并发、可观测、易扩展的新调度方案。
设计要点
数据模型
任务以 stream + consumer group 模式分布在多个 shard 上,通过一致性哈希
分配生产者到 shard,既避免热点又保留有序性。
幂等保证
每个任务携带 dedup_key,消费前通过 Redis Lua 脚本完成
“占位 + 执行 + 释放” 三阶段,即使消费者崩溃也不会重复执行。
可观测
- 内置 Prometheus 指标:queue depth、ack latency、retry rate
- OpenTelemetry trace 贯穿生产 → 调度 → 消费全链路
- Grafana 仪表盘开箱即用
收益
| 指标 | 旧系统 | 新系统 |
|---|---|---|
| 峰值吞吐 | 8k QPS | 50k QPS |
| P99 延迟 | 220ms | 28ms |
| 故障自愈时间 | 人工介入 | < 10s |