一、组件介绍
JD-HotKey 是京东开源的实时热点 key 探测与缓存中间件(开源地址),它做了一件事:在高并发场景下,自动发现热点 key,毫秒级推送到所有应用节点的 JVM 内存中,让热点请求直接在本地内存响应,不再打到 Redis 和数据库。
经典场景:某明星突然官宣,相关商品瞬间涌入海量请求。你事先根本不知道这个商品 ID 会变热,Redis 某个节点被这些请求打得 CPU 飙升——这就是典型的不可预知突发热点。
这时候你就需要 JD-HotKey:它能自动发现这类热点,把数据”镜像”到每台应用服务器的本地内存里,后续请求直接从内存读,RT 从几十毫秒降到 < 1ms。
和直接用本地缓存(比如 Caffeine)比,JD-HotKey 的核心优势:
| 能力 |
Caffeine 本地缓存 |
JD-HotKey |
| 热点发现 |
手动配置,你得提前知道哪些 key 要缓存 |
自动探测,根据访问量实时判定 |
| 动态性 |
静态的,配了就一直在 |
自动加入 / 退出热点,冷了自动释放内存 |
| 多节点一致性 |
各节点独立,互不知情 |
全局统一判定,所有节点同步感知 |
| 适用场景 |
已知高频数据(如字典、配置) |
不可预知的突发热点(如秒杀、热搜) |
| 部署复杂度 |
低(纯 SDK) |
中等(需要 etcd + worker) |
| 热用户 / 热接口探测 |
不支持 |
支持(不只限 key,接口、用户也能探) |
简单总结:已知的热点用本地缓存就够了,不可预知的热点用 JD-HotKey。
二、核心架构