还有一种热点数据的发现机制,那就是实时的做收集,比如在客户端、服务端或者在代理层,都可以对实时数据进行采集,然后进行统计汇总。

达到一定的数量之后,就会被识别为热key

如何解决热key问题

解决热key问题最主要的方式就是加缓存。通过缓存的方式尽量减少系统交互,使得用户请求可以提前返回。

这样即能提升用户体验,也能减少系统压力。

缓存的方式有很多,有些数据可以缓存在客户的客户端浏览器中,有些数据可以缓存在距离用户就近的DNS中,有些数据可以通过Redis等这类缓存框架进行缓存,还有些数据可以通过服务器本地缓存进行。

这种使用多个缓存的情况,就组成了二级缓存、三级缓存等多级缓存了。总之,通过缓存的方式尽量减少用户的的访问链路的长度。

有了缓存之后,还会带来一个问题,那就是热点数据如果都被缓存在同一个缓存服务器上,那么这个服务器也可能被打挂。

所以,很多人在加了缓存之后, 还可能同时部署多个缓存服务器,如Redis同时部署多个服务器集群。并且实时的将热点数据同步分发到多个缓存服务器集群中,一旦有的集群扛不住了,立刻做切换。

单纯的对于Redis热key缓存来说,Redis是有分片机制的,同一个热key可能会都保存在同一个分片中,所以还可以在多个分片中都把热key同步一份,使得查询可以同时从多个分片进行,减少某一个分片的压力。

因为有分片,还有一种情况,就是有可能多个热key都会分到同一个分片中,为了减少这种情况的发生,可以增加更多的分片来分担流量。

京东的热key探测

前面简单介绍了热key的发现与解决,这种问题其实最明显的发生就是在电商系统或者像微博这种社交系统中。

所以很多公司内部也有很多成熟的方案。

今天想介绍一个京东内部的框架——JD-hotkey ,这是京东 APP 后台热数据探测框架。

这个框架在Gitee上面开源了(https://gitee.com/jd-platform-opensource/hotkey ),官方描述是这样的:

对任意突发性的无法预先感知的热点数据,包括并不限于热点数据(如 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 突发大量请求同一个商品)、热用户(如恶意爬虫刷子)、热接口(突发海量请求同一个接口)等,进行毫秒级精准探测到。

然后对这些热数据、热用户等,推送到所有服务端JVM内存中,以大幅减轻对后端数据存储层的冲击,并可以由使用者决定如何分配、使用这些热key(譬如对热商品做本地缓存、对热用户进行拒绝访问、对热接口进行熔断或返回默认值)。

这些热数据在整个服务端集群内保持一致性,并且业务隔离,worker端性能强悍。

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

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

简单点说,这个框架的主要功能就是热数据探测并推送至集群各个服务器。这个框架主要适用于以下场景:

  • mysql 热数据本地缓存
  • redis 热数据本地缓存
  • 黑名单用户本地缓存
  • 爬虫用户限流
  • 接口、用户维度限流
  • 单机接口、用户维度限流限流
  • 集群用户维度限流
  • 集群接口维度限流

在官方文档中,大概介绍了一下这个框架的工作原理,这个框架主要由四个主要部分,分别是ETCD集群、worker集群、client客户端以及dashboard控制台。下图介绍了一下各个部分的主要功能及简单原理:

这个框架的使用还是相对简单的,主要分为以下几个步骤:

-TusymF9J-1651562266686)]

这个框架的使用还是相对简单的,主要分为以下几个步骤:

京东热-key-探测框架新版发布,单机-QPS-可达-35-万相关推荐

  1. 京东热 key 探测框架新版发布,单机 QPS 可达 35 万

    △Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 300 篇原创分享 作者 l Hollis 来源 l Hollis(ID:hollischuang) 对于大型的分布式系统 ...

  2. 京东热key探测框架本地压测数据记录,单机(8核)QPS约16万/s,可水平扩展

    继上一次全链路压测时,热key框架由于Java低版本(1.8.0_131之前的1.8版本)获取docker内cpu核数有问题,实则获取的是宿主机的核数,造成线程数量过多,压测瞬间cpu达到100%,问 ...

  3. 京东毫秒级热key探测框架设计与实践,已完美支撑618大促

    在拥有大量并发用户的系统中,热key一直以来都是一个不可避免的问题.或许是突然某些商品成了爆款,或许是海量用户突然涌入某个店铺,或许是秒杀时瞬间大量开启的爬虫用户, 这些突发的无法预先感知的热key都 ...

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

    点击▲关注 "爪哇笔记"   给公众号标星置顶 更多精彩 第一时间直达 发布 HotKey在618稳定版0.2版基础上,引入了proto序列化方式,并优化了传输对象. worker ...

  5. 牛逼!“京东热” 框架 JD-hotkey 开源了...单机 QPS 可达 37 万!!

    JD-hotkey 是京东 APP 后台热数据探测框架,历经多次高压压测和 2020 年京东 618 大促考验. 在上线运行的这段时间内,每天探测的key数量数十亿计,精准捕获了大量爬虫.刷子用户,另 ...

  6. 牛逼哄哄的京东热数据探测框架-JD-hotkey !

    点击关注公众号,Java干货及时送达

  7. 京东的热点key探测系统发布,单机 QPS 提升至 37 万

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 发布 HotKey在618稳定版0.2版基础上,引入了p ...

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

    京东hotkey框架(JD-hotkey)是京东app后台研发的一款高性能热数据探测中间件,用来实时探测出系统的热数据,并将热数据毫秒内推送至系统的业务集群服务器的JVM内存.以下统称为"热 ...

  9. 京东热点key探测系统发布,单机 QPS 提升至 37 万

    HotKey在618稳定版0.2版基础上,引入了protobuf序列化方式,并优化了传输对象. worker单机性能从618大促稳定版的20万QPS稳定,30万极限,提升至30万稳定,37万极限.且c ...

最新文章

  1. python调用ipython_在IPython中执行Python程序文件的示例
  2. POJ 3280 Cheapest Palindrome
  3. python谱聚类算法_谱聚类(spectral clustering)原理总结
  4. vpn mysql_MYSQL数据库
  5. WindowsXP 系统登陆原理及其验证机制概述
  6. Zabbix 通过 API 监控 k8s | 技巧
  7. LabView学习笔记(四):动态数据类型
  8. 洛谷 P1400 塔
  9. 发布的站点自定义端口打不开解决方法
  10. RK3288 开机时间和开机速度优化安卓系统优化
  11. junit5 入门系列教程-14-junit5 重复测试(@RepeatedTest)
  12. c++程序查重系统设计思路
  13. AX9000利用docker实现迅雷远程下载
  14. 扩散模型类似的方式训练text_to_text可不可以
  15. C++11实现生产者消费者模式
  16. [JZOJ3234] 阴阳
  17. 《尚书 禹贡》对九州的划分
  18. 浏览器插件crx文件怎么导入到谷歌浏览器
  19. XSS的漏洞测试案例
  20. 一键切换语言(多语言插件vue-i18n的使用)

热门文章

  1. Java导出excel表格,数字数据带E
  2. IPv6 内网穿透(一)
  3. 企业什么喜欢做电视看板,电视看板浏览网页的必备工具 电视看板浏览器 电视看板自动打开网页
  4. android alert
  5. 淘宝怎么提升商品的自然流量效果好?
  6. WPS如何实现整行数据行间随机排序
  7. 1对多 只取一条 mysql_SQL中遇到多条相同内容只取一条的最简单实现方法
  8. 【youcans 的 OpenCV 例程200篇】121. 击中-击不中用于特征识别
  9. 【毕业设计】树莓派单片机墨水屏电子日历系统 - 物联网 嵌入式
  10. NXP i.MX 8M Mini处理器