← 返回作品列表

// 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 QPS50k QPS
P99 延迟220ms28ms
故障自愈时间人工介入< 10s