热点参数限流:保护你的热点数据
引言:当80%的流量集中在20%的数据上 你是否遇到过这样的场景? 场景1:秒杀系统 双11,iPhone 15 Pro Max限量秒杀,1000台库存。 虽然你的商品详情接口做了限流(QPS 10000),但这1万个请求全部集中在这一个商品ID上! 其他普通商品无人问津,但这一个热点商品把数据库、缓存、库存服务全部打爆了。 场景2:直播平台 某顶流明星开始直播,500万人涌入直播间。 虽然你的直播接口做了限流(QPS 100000),但这10万个请求全部集中在这一个直播间ID上! 其他直播间正常,但这一个热点直播间导致整个直播服务崩溃。 这就是热点数据问题:少数数据承载了绝大部分流量,普通的限流无法精准保护。 这就需要Sentinel的热点参数限流(Hot Param Flow Control)。 什么是热点数据? 热点数据的定义 热点数据是指在一段时间内,访问频率远高于其他数据的数据。 典型案例: 场景 热点数据 流量分布 电商秒杀 iPhone 15 秒杀商品ID 80%流量集中在1个商品 视频平台 热门视频ID 90%播放量集中在TOP 100视频 社交平台 热门话题ID 70%讨论集中在热门话题 新闻网站 突发新闻ID 突发事件发生时,流量暴涨 直播平台 顶流主播直播间ID 500万人涌入1个直播间 热点数据的特点 不可预测:不知道哪个数据会成为热点 时间敏感:热点会随时间变化(如突发新闻) 流量集中:少数数据占据大部分流量 影响范围大:一个热点可能拖垮整个系统 普通限流的局限性 问题1:无法区分参数 案例:商品详情接口 @GetMapping("/product/{id}") public Product getProductDetail(@PathVariable Long id) { return productService.getById(id); } 限流配置: FlowRule rule = new FlowRule(); rule.setResource("getProductDetail"); rule.setCount(10000); // QPS 10000 问题: ...