图文详解:如何设计一个亿级用户排行榜?
一句话概括
码哥按实时性、准确性、抗压力(峰值 100 万 QPS、P99 <200ms)、灵活性拆需求,给出数据接入、计算、存储、展示四层架构,并用分层合并把跨分片 TOP100 查询从 530ms 优化到 80ms。
实践内容
需求拆解
| 维度 | 要求 |
|---|---|
| 实时性 | 秒级更新 |
| 准确性 | 精确排名 |
| 抗压力 | 峰值 100 万 QPS、P99 <200ms |
| 灵活性 | 支持多种排行维度 |
四层架构
数据接入层:
- Kafka 多活
- MirrorMaker
- DLQ(死信队列)
计算层:
- Lua 实时计算
- Spark 批处理
- Flink 混合(70% + 30%)
存储层:
- Redis Cluster 100 分片
- Caffeine 三级缓存
- ClickHouse 冷热分离
展示层:
- CDN
- API 网关
- K8s HPA
性能优化
分层合并把跨分片 TOP100 查询从 530ms 优化到 80ms。
摘录
码哥按实时性、准确性、抗压力(峰值 100 万 QPS、P99 <200ms)、灵活性拆需求,给出数据接入(Kafka 多活 + MirrorMaker + DLQ)、计算(Lua 实时 / Spark 批 / Flink 混合 70%+30%)、存储(Redis Cluster 100 分片 + Caffeine 三级缓存 + ClickHouse 冷热分离)、展示(CDN + API 网关 + K8s HPA)四层架构。
用分层合并把跨分片 TOP100 查询从 530ms 优化到 80ms。
涉及实体
- []
涉及主题
- []
我的评注
虽然这篇文章不是 AI 相关的,但其系统设计思想对 AI Agent 系统同样适用。分层架构、缓存策略、性能优化等方法都是通用的工程实践。