JD hotkey可以帮助用户对热点检测,可以在后台自动监控热点,例如检测同一款商品同时有多个用户访问,例如同一个节点有多个访问请求,软件会自动分析热点KEY,如果检测到大量新增的热点就可以自动将其推送到对应的集群,让用户可以通过访问数据,减轻对后端数据存储层的冲击,可以在软件分析五分钟、十分钟、三十分钟的数据,可以在软件查看访问的负载,在软件显示当前CPU使用率,主界面显示节点、规则配置、实时热点、热点记录、变更记录、用户管理等功能,可以分类查看数据!
JD hotkey软件功能
京东APP后台热数据探测框架,历经多次高压压测和2020年京东618、双11大促考验。
在上线运行的这段时间内,每天探测的key数量数十亿计,精准捕获了大量爬虫、刷子用户,另准确探测大量热门商品并毫秒级推送到各个服务端内存,大幅降低了热数据对数据层的查询压力,提升了应用能。
在大促期间,hotkey的worker集群秒级吞吐量达到1500万级别,由hotkey探测出的热key进而产生的本地缓存占应用总访问量的50%以上,使得大部分请求进行的是本地查询,减轻了redis层一半以上负担。
该框架历经多次压测,能指标主要有两个:
1 探测能:8核单机worker端每秒可接收处理16万个key探测任务,16核单机至少每秒平稳处理30万以上,实际压测达到37万,CPU平稳支撑,框架无异常。
2 推送能:在高并发写入的同时,对外推送目前能约平稳推送每秒10-12万次,譬如有1千台,一台worker上每秒产生了100个热key,那么这1秒会平稳推送100 * 1000 = 10万次,10万次推送会明确在1s内全部送达。如果是写入少,推送多,以纯推送来计数的话,该框架每秒可稳定对外推送40-60万次平稳,80万次极限可撑几秒。
每秒单机吞吐量(写入+对外推送)目前在70万左右稳定。
JD hotkey软件特色
1、可以通过这款软件检测热点,可以在软件界面显示检测情况
2、支持数据记录,将每次检测的数据记录到软件,方便历史回看
3、可以在软件搜索实时热点,可以查看新增的数据
4、软件界面显示数据内容,直接查看HEY、数据类型,所属APP
5、软件自动在后台运行,检测到热点数据就会自动推送到集群
6、支持节点查看,在软件显示节点检测
7、支持规则设置功能,可以在软件设置检测热点的配置方案
8、可以在软件查看新增的数据,可以查看最热的KEY
9、支持记录统计,显示当前记录多少天,可以翻页查看更多数据条目
10、支持负载查看功能,检测过程对CPU的负载情况在软件统计
11、可以查看系统指标、磁盘指标、网络指标、容器指标、U指标
JD hotkey使用说明
worker端强悍的能表现
每10秒打印一行,totalDealCount代表处理过的key总量,可以看到每10秒处理量在270万-310万之间,对应每秒30万左右QPS。
仅需要很少的机器,即可完成海量key的实时探测计算推送任务。比扩容redis集群规模成本低太多。
这里是系统数据查看,在软件显示五分钟的系统负载情况,可以对tsdb监控,可以在软件自定义分析时间
采用ptobuf序列化后能进一步得到提升。在秒级36万以上时,能稳定在CPU 60%,压测持续时长超过5小时,未见任何异常。30万时,压测时长超过数,未见任何异常。
本次查询志条数已超过1000条,浏览器仅保存最新的1000志
软件界面如图所示,显示非常多的监控数据,可以在软件统计key,每次访问都会生成新的key,可以清理本次监控数据
JD hotkey适用场景
核心功能:热数据探测并推送至集群各个
1 mysql热数据本地缓存
2 redis热数据本地缓存
3 黑名单用户本地缓存
4 爬虫用户限流
5 接口、用户维度限流
6 单机接口、用户维度限流
7 集群用户维度限流
8 集群接口维度限流