牛逼哄哄的 JD-hotkey !

本文介绍了京东JD-hotkey热数据探测框架,它在高并发下表现出色,每秒处理16-37万个key,且具有强大的推送能力。该框架用于检测热点数据、用户和接口,通过内存缓存减少后端压力,适用于多种限流场景。
摘要由CSDN通过智能技术生成

JD-hotkey 是京东 APP 后台热数据探测框架,历经多次高压压测和 2020 年京东 618 大促考验。

在上线运行的这段时间内,每天探测的key数量数十亿计,精准捕获了大量爬虫、刷子用户,另准确探测大量热门商品并毫秒级推送到各个服务端内存,大幅降低了热数据对数据层的查询压力,提升了应用性能。

921e29ce985d4a253102d6bc6c32b03c.png

该框架历经多次压测,性能指标主要有两个:

1 探测性能: 8核单机worker端每秒可接收处理16万个key探测任务,16核单机至少每秒平稳处理30万以上,实际压测达到37万,CPU平稳支撑,框架无异常。

2 推送性能: 在高并发写入的同时,对外推送目前性能约平稳推送每秒10-12万次,譬如有1千台server,一台worker上每秒产生了100个热key,那么这1秒会平稳推送100 * 1000 = 10万次,10万次推送会明确在1s内全部送达。如果是写入少,推送多,以纯推送来计数的话,该框架每秒可稳定对外推送40-60万次平稳,80万次极限可撑几秒。

每秒单机吞吐量(写入+对外推送)目前在70万左右稳定。

在真实业务场景中,可用1:1000的比例,即1台worker支撑1000台业务服务端的key探测任务,即可带来极大的数据存储资源节省(如对redis集群的扩充)。

介绍

对任意突发性的无法预先感知的热点请求,包括并不限于热点数据(如突发大量请求同一个商品)、热用户(如爬虫、刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。

然后对这些热数据、热用户等,推送到该应用部署的所有机器JVM内存中,以大幅减轻对后端数据存储层的冲击,并可以由客户端决定如何使用这些热key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。这些热key在整个应用集群内保持一致性。

核心功能: 热数据探测并推送至集群各个服务器。

适用场景:

  • mysql热数据本地缓存

  • redis热数据本地缓存

  • 黑名单用户本地缓存

  • 爬虫用户限流

  • 接口、用户维度限流

  • 单机接口、用户维度限流限流

  • 集群用户维度限流

  • 集群接口维度限流

worker 端强悍的性能表现

每10秒打印一行,totalDealCount代表处理过的key总量,可以看到每10秒处理量在270万-310万之间,对应每秒30万左右QPS。

仅需要很少的机器,即可完成海量key的实时探测计算推送任务。比扩容redis集群规模成本低太多。

b37d837a92da84b1137942fa7384832e.png

90bc10e44e10744da21bbf656259989b.png

采用protobuf序列化后性能进一步得到提升。在秒级36万以上时,能稳定在CPU 60%,压测持续时长超过5小时,未见任何异常。30万时,压测时长超过数日,未见任何异常。 3c35741693f88359276415391c72a797.png 3a6afab4f15d8d9fd0f34316f4070d76.png cc96633dde8c9c4fbf6252ffa577305b.png


界面效果

b9b9f240e9e1925465fb7a05f666a2f0.png

原文:gitee.com/jd-platform-opensource/hotkey

 
 
 
 

精品推荐

1.开源流程引擎三巨头:activiti、flowable、camunda,最推荐使用哪个?
2.去了一家不到 20 人的 IT 公司后,我真是大开眼界。。。
3.拜托!别再滥用 ! = null 判空了!!
4.Prometheus+Grafana+NodeExporter 打造一款出色的监控系统,帅呆了!
6.公司新入职一位大佬,把SpringBoot项目启动时间从7分钟降到了40秒!
7.拒绝写重复代码,试试这套开源的 SpringBoot 组件
8.还再用 Navicat?试试这款正版 MySQL 客户端,真香!
9.项目终于用上了PowerJob,晚上激动得睡不着!
资料免费共享群


1、4000G架构师全栈资料(点击查看)
2、99个实战项目(点击查看)
3、5000页互联网大厂面试题整理汇总(点击查看)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值