京东热 Key 0.4 发布,单机 QPS 提升至 35 万

2年前 (2022) 程序员胖胖胖虎阿
441 0 0
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->
Spring Boot+Vue+微人事视频教程

发布

HotKey在618稳定版0.2版基础上,引入了proto序列化方式,并优化了传输对象。

worker单机性能从618大促稳定版的20万QPS稳定,30万极限,提升至30万稳定,37万极限。且cpu峰值下降了15%。

该中间件目前在京东内部10余个核心部门接入使用,服务于京东App服务端前台、中台,数据中台等多个核心业务线。

架构

京东热 Key 0.4 发布,单机 QPS 提升至 35 万
京东APP后台热数据探测框架,历经多次高压压测和2020年京东618大促考验。在上线运行的这段时间内,每天探测的key数量数十亿计,精准捕获了大量爬虫、刷子用户,另准确探测大量热门商品并毫秒级推送到各个服务端内存,大幅降低了热数据对数据层的查询压力,提升了应用性能。

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

对外推送目前性能约平稳推送每秒10万次,譬如有1千台server,每秒在一台worker上产生了100个热key,那么这1秒会平稳推送100 * 1000 = 10万次。实际表现看,1秒推送40万次的场景也出现过多次,会产生部分延迟到达,但不丢失。

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

介绍

对任意突发性的无法预先感知的热点请求,包括并不限于热点数据(如突发大量请求同一个商品)、热用户(如爬虫、刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。然后对这些热数据、热用户等,推送到该应用部署的所有机器JVM内存中,以大幅减轻对后端数据存储层的冲击,并可以由客户端决定如何使用这些热key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。这些热key在整个应用集群内保持一致性。
核心功能:热数据探测并推送至集群各个服务器。
适用场景:
1 mysql热数据本地缓存
2 redis热数据本地缓存
3 黑名单用户本地缓存
4 爬虫用户限流
5 接口、用户维度限流
6 单机接口、用户维度限流限流
7 集群用户维度限流
8 集群接口维度限流
该开源项目战略意义重大,经历百万级并发,参与京东开源中间件项目建设,一直在等你。
界面效果
京东热 Key 0.4 发布,单机 QPS 提升至 35 万
源码:

https://gitee.com/jd-platform-opensource/hotkey


京东热 Key 0.4 发布,单机 QPS 提升至 35 万

今日干货

京东热 Key 0.4 发布,单机 QPS 提升至 35 万
刚刚发表
查看:
66666
回复:666

公众号后台回复 ssm,免费获取松哥纯手敲的 SSM 框架学习干货。


你点的每个在看,我都认真当成了喜欢

本文分享自微信公众号 - 江南一点雨(a_javaboy)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

版权声明:程序员胖胖胖虎阿 发表于 2022年9月2日 上午3:08。
转载请注明:京东热 Key 0.4 发布,单机 QPS 提升至 35 万 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...