热key探测技术架构设计与实践

参考:

得物热点探测技术架构设计与实践

Redis数据倾斜与JD开源hotkey源码分析揭秘

京东热点检测 HotKey 学习笔记

hotkey: 京东App后台中间件,毫秒级探测热点数据,毫秒级推送至服务器集群内存,大幅降低热key对数据层查询压力

京东毫秒级热key探测框架设计与实践,已实战于618大促

问题一、如何进行热点探测?

首先我们要定义一下如何才能算是一个热点,我们知道热点产生的条件是 2 个:一个时间,一个流量。那么根据这个条件我们可以简单定义一个规则:比如 1 秒内访问 1000 次的数据算是热数据,当然这个数据需要根据具体的业务场景和过往数据进行具体评估。

对于单机应用,检测热数据很简单,直接在本地为每个 Key 创建一个滑动窗口计数器,统计单位时间内的访问总数(频率),并通过一个集合存放检测到的热 Key。

而对于分布式应用 ,对热 Key 的访问是分散在不同的机器上的,无法在本地独立地进行计算,因此,需要一个独立的、集中的热 Key 计算单元

我们可以简单理解为:分布式应用节点感知热点规则配置,将热点数据进行上报,工作节点进行热点数据统计,对于符合阈值的热点进行推送给客户端,应用收到热点信息进行本地缓存等策略这五个步骤:

1.热点规则:配置热 Key 的上报规则,圈出需要重点监测的 Key

2.热点上报:应用服务将自己的热 Key 访问情况上报给集中计算单元

3.热点统计:收集各应用实例上报的信息,使用滑动窗口算法计算 Key 的热度

4.热点推送:当 Key 的热度达到设定值时,推送热 Key 信息至所有应用实例

5.热点缓存:各应用实例收到热 Key 信息后,对 Key 值进行本地缓存(此步骤根据具体业务策略调整)

相关推荐
You丶小明快跑22 分钟前
部署redis 集群和redis常用命令
数据库·redis·缓存
学Linux的语莫3 小时前
python创建redis连接池
数据库·redis·缓存
珠穆峰5 小时前
linux清理缓存命令“echo 3 > /proc/sys/vm/drop_caches”
java·linux·缓存
什么都不会的Tristan5 小时前
redis-原理篇-ZipList(压缩列表)
数据库·redis·缓存
IT大白5 小时前
4、Redis核心原理
数据库·redis·缓存
wzy06235 小时前
Redis 集群迁移方案:从三节点到三节点的无缝过渡
数据库·redis·缓存
柚几哥哥5 小时前
Redis 优化实践:高性能设备缓存系统设计
数据库·redis·缓存
indexsunny6 小时前
互联网大厂Java面试实战:核心技术与微服务架构解析
java·数据库·spring boot·缓存·微服务·面试·消息队列
想摆烂的不会研究的研究生6 小时前
并发场景——接口幂等性设计
数据库·redis·后端·缓存