JD-hotkey 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
JD-hotkey 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
JD-hotkey 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
JD-hotkey 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
JD-hotkey 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

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

该框架历经多次压测,8核单机worker端每秒可接收处理16万个key探测任务,16核单机至少每秒平稳处理20万以上,实际压测达到30万以上,CPU平稳支撑,框架无异常。在真实业务场景中,可用1:1000的比例,即1台worker支撑1000台服务端Tomcat的key探测任务,即可带来极大的数据存储资源节省(如对redis集群的扩充)。

介绍

对任意突发性的无法预先感知的热点请求,包括并不限于热点数据(如突发大量请求同一个商品)、热用户(如爬虫、刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。 然后对这些热数据、热用户等,推送到该应用部署的所有机器JVM内存中,以大幅减轻对后端数据存储层的冲击,并可以由客户端决定如何使用这些热key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。 这些热key在整个应用集群内保持一致性。

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

适用场景:

1 mysql热数据本地缓存

2 redis热数据本地缓存

3 黑名单用户本地缓存

4 爬虫用户限流

5 接口、用户维度限流

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

7 集群用户维度限流

8 集群接口维度限流

worker 端强悍的性能表现

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

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

界面效果

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (4)

加载中
good
2020/10/29 11:47
回复
举报
很不错,十分简洁清晰, 备注十分详细, 太强了.
2020/08/31 21:08
回复
举报
好东西
2020/07/11 09:02
回复
举报
有必要用一波
2020/07/10 09:58
回复
举报
更多评论
2020/08/06 11:36

京东热 key 探测 HotKey 0.4 发布,单机 QPS 提升至 35 万

hotkey在618稳定版0.2版基础上,引入了proto序列化方式,并优化了传输对象。 worker单机性能从618大促稳定版的20万QPS稳定,30万极限,提升至30万稳定,37万极限。且cpu峰值下降了15%。 该中间件目前在京东内部10余个核心部门接入使用,服务于京东App服务端前台、中台,数据中台等多个核心业务线。 详情查看: https://gitee.com/jd-platform-opensource/hotkey/tree/V-0.4-proto%E5%8D%8F%E8%AE%AE%E7%89%88/...

47
8
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于软件架构专区
2020/08/31 00:22

JD-HotKey框架简单流程UML梳理笔记

> 只是个人在学习过程中的一些梳理UML图, 有错误的地方请多指教. ##### JdHotKey架构图 ![](https://oscimg.oschina.net/oscnet/up-d59d3ef17ab21a2aa029e43c05b87cae14d.png) ##### Client端启动流程 ![](https://oscimg.oschina.net/oscnet/up-1ed34669727412fbc51507fa48f1ced5a8e.png) ##### Client端Netty消费流程 ![](https://oscimg.oschina.net/oscnet/up-85f5ad956fb31bac413f7abcc3521c03865.png) ##### Worker端Net...

0
0
发表了博客
2014/10/26 15:53

JD-GUI与JD-Eclipse

JD即Java Decompiler:是Java反编译器 JD-GUI是独立的软件,JD-Eclipse则是eclipse插件啦。 官网:http://java.decompiler.free.fr/

0
0
发表了博客
2016/08/08 15:22

eclipse hotkey

### 常用快捷键 1.输出```System.out.println(" ");``` 直接**sysout**即可 2.添加/消除//注释 <

0
0
发表了博客
2020/09/02 08:36

京东开源热key探测(JD-hotkey)中间件单机qps 提升17倍实战

京东hotkey框架(JD-hotkey)是京东app后台研发的一款高性能热数据探测中间件,用来实时探测出系统的热数据,并将热数据毫秒内推送至系统的业务集群服务器的JVM内存。以下统称为"热key"。 该框架主要用于对任意突发性的无法预先感知的热key,包括并不限于热点数据(如突发大量请求同一个商品)、热用户(如恶意爬虫刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。然后对这些热key,推送到所有服务端JVM内存...

0
0
发表了博客
2019/08/23 16:27

JD-GUI

https://github.com/java-decompiler/jd-gui https://github.com/java-decompiler/jd-gui/releases JD-GUI, a standalone graphical utility that displays Java sources from CLASS files. Java Decompiler projects home page: http://java-decompiler.github.io JD-GUI source code: https://github.com/java-decompiler/jd-gui Description JD-GUI is a standalone graphical utility that displays Java source codes of "...

0
0
发表了博客
2020/07/09 23:25

Eclipse HotKey:如何在选项卡之间切换? - Eclipse HotKey: how to switch between tabs?

问题: How can I switch between opened windows in Eclipse? 如何在Eclipse中打开的窗口之间切换? There is Ctrl + F6 , but it's asking me which one I want, but I want switch it like tabs in browser or window in operating system ( Cmd / Win + Tab ) without file-selection from the list. 有Ctrl + F6 ,但询问我要哪一个,但我想像浏览器中的选项卡或操作系统( Cmd / Win + Tab )中的选项卡那样切换它,而无需...

0
0
发表了博客
2013/01/17 20:50

jd-gui

http://java.decompiler.free.fr/ jd-gui

0
0
发表了博客
2020/08/28 15:24

京东开源热key探测(JD-hotkey)中间件单机qps 2万提升至35万实录

京东hotkey框架(JD-hotkey)是京东app后台研发的一款高性能热数据探测中间件,用来实时探测出系统的热数据,并将热数据毫秒内推送至系统的业务集群服务器的JVM内存。以下统称为"热key"。 该框架主要用于对任意突发性的无法预先感知的热key,包括并不限于热点数据(如突发大量请求同一个商品)、热用户(如恶意爬虫刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。然后对这些热key,推送到所有服务端JVM内存...

27
71
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2020/10/19 22:04

如何在 OSC 社区运营你的开源项目?

在 OSCHINA 社区,拥有着围绕每一款开源软件展开的完整宣发链条。如果你或你的团队拥有一款开源软件,并且想要让更多的人了解和使用它,那么你可以: 在 OSCHINA 社区投递软件 投递与该软件相关的新闻,比如版本升级、项目社区重大事件等 撰写与该软件技术相关的博客 积极参与项目相关的问答 在 OSCHINA 社区,为你的开源项目构建完善的社区生态,获得社区百万量级的开发者流量曝光! 第一步,投递软件 在首页右上角点开个人信息...

57
51
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
4 评论
172 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部