京东app技术框架(牛逼!“京东热” 框架 JD-hotkey 开源了…单机 QPS 可达 37 万!!)
JD-hotkey 是京东 APP 后台热数据探测框架 ,历经多次高压压测和 2020 年京东 618 大促考验 。
在上线运行的这段时间内 ,每天探测的key数量数十亿计 ,精准捕获了大量爬虫 、刷子用户 ,另准确探测大量热门商品并毫秒级推送到各个服务端内存 ,大幅降低了热数据对数据层的查询压力 ,提升了应用性能 。
该框架历经多次压测 ,性能指标主要有两个:
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集群规模成本低太多 。
界面效果
来源:https://gitee.com/jd-platform-opensource/hotkey
近期热文推荐:
1.1,000+ 道 Java面试题及答案整理(2022最新版)
2.劲爆!Java 协程要来了 。。 。
3.Spring Boot 2.x 教程 ,太全了!
4.别再写满屏的爆爆爆炸类了 ,试试装饰器模式 ,这才是优雅的方式!!
5.《Java开发手册(嵩山版)》最新发布 ,速速下载!
觉得不错 ,别忘了随手点赞+转发哦!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!