当前位置: 首页 > 后端技术 > Java

惊人的!“京东热”框架JD-hotkey开源了……单机QPS可达37万!!

时间:2023-04-01 16:33:05 Java

JD-hotkey是京东APP后台热点数据检测框架,历经多次高压压力测试和2020京东618推广测试。上线运营期间,每天检测数十亿键,精准抓取大量爬虫、刷机用户。此外,大量的热门商品被精确检测到并毫秒级推送到每台服务器的内存中,大大降低了热点数据的影响。数据层的查询压力提高了应用性能。框架经过多次压力测试,主要有两个性能指标:1.检测性能:8核单机每秒可接收处理16万个关键检测任务,16核单机可每秒至少处理30万次关键检测任务。测试到37万,CPU支持稳定,框架正常。2推送性能:在写高并发的时候,目前对外推送的性能大概是10万到12万次推送/秒。秒会顺利推送100*1000=100000次,1秒内推送100000次。如果少写多推,如果按纯推送来算,框架每秒可以稳定推送40万到60万次,80万次的极限还能坚持几秒。单机每秒吞吐量(写入+外推)目前稳定在70万左右。在真实的业务场景下,可以采用1:1000的比例,即一个worker可以支撑1000台业务服务器的关键检测任务,可以带来数据存储资源的极大节约(比如redis的扩容)簇)。引入任何无法提前感知的突发热点请求,包括但不限于热点数据(如同一产品突然大量请求)、热点用户(如爬虫、刷机)、热点接口(突发海量请求)同接口)等,实现毫秒级精准检测。然后将这些热点数据、热点用户等推送到应用部署的所有机器的JVM内存中,从而大大减少对后端数据存储层的影响,客户端可以决定如何使用这些热点keys(比如对热点商品做本地缓存,拒绝热点用户访问,熔断热点接口或者恢复默认)。这些热键在整个应用程序集群中是一致的。核心功能:检测热点数据,推送到集群中的各个服务器。适用场景:mysql热点数据本地缓存redis热点数据本地缓存黑名单用户本地缓存爬虫用户限流接口用户维度限流单机接口用户维度限流集群集群用户维度限流集群接口维度worker端强大性能每10秒打印一行,totalDealCount表示处理的键总数。可以看到每10秒的处理量在270万到310万之间,对应每秒大概30万个QPS。仅需少量机器即可完成海量密钥的实时检测、计算和推送任务。远低于扩展redis集群规模的成本。界面效果来源:https://gitee.com/jd-platform...近期热点文章推荐:1.1,000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!