乐趣区

关于java:牛逼京东热-框架-JDhotkey-开源了单机-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…

近期热文举荐:

1.1,000+ 道 Java 面试题及答案整顿 (2022 最新版)

2. 劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4. 别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!

5.《Java 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版