京东热点缓存探测系统JDhotkey架构剖析

news2025/6/5 21:00:01

热点探测使用场景

  • MySQL 中被频繁访问的数据 ,如热门商品的主键 Id
  • Redis 缓存中被密集访问的 Key,如热门商品的详情需要 get goods$Id
  • 恶意攻击或机器人爬虫的请求信息,如特定标识的 userId、机器 IP
  • 频繁被访问的接口地址,如获取用户信息接口 /userInfo/ + userId

使用热点探测的好处

提升性能,规避风险
对于无预期的热数据(即突发场景下形成的热 Key),可能会对业务系统带来极大的风险,可将风险分为两个层次:

  1. 对数据层的风险
    正常情况下,Redis 缓存单机就可支持十万左右 QPS,并能通过集群部署提高整体负载能力。对于并发量一般的系统,用 Redis 做缓存就足够了。但是对于瞬时过高并发的请求,因为 Redis 单线程原因会导致正常请求排队,或者因为热点集中导致分片集群压力过载而瘫痪,从而击穿到 DB 引起服务器雪崩。
  2. 对应用服务的风险
    每个应用在单位时间所能接受和处理的请求量是有限的,如果受到恶意请求的攻击,让恶意用户独自占用了大量请求处理资源,就会导致其他人畜无害的正常用户的请求无法及时响应。
    因此,需要一套动态热 Key 检测机制,通过对需要检测的热 Key 规则进行配置,实时监听统计热 Key 数据,当无预期的热点数据出现时,第一时间发现他,并针对这些数据进行特殊处理。如本地缓存、拒绝恶意用户、接口限流 / 降级等

京东热点探测

在这里插入图片描述

  1. 热点规则:配置热 Key 的上报规则,圈出需要重点监测的 Key
  2. 热点上报:应用服务将自己的热 Key 访问情况上报给集中计算单元
  3. 热点统计:收集各应用实例上报的信息,使用滑动窗口算法计算 Key 的热度
  4. 热点推送:当 Key 的热度达到设定值时,推送热 Key 信息至所有应用实例
  5. 热点缓存:各应用实例收到热 Key 信息后,对 Key 值进行本地缓存
    滑动窗口

client

热key上报,key的访问次数积攒起来,等待每半秒发送一次。
为了防止阻塞IKeyCollector使用两个ConcurrentHashMap切换,实现轮流提供读写、暂存key的操作。上报时譬如采用定时器,每隔0.5秒调度一次push方法。在上报过程中,不应阻塞写入操作。所以计划采用2个HashMap加一个atomicLong,如奇数时写入map0,为1写入map1,上传后会清空该map。
在这里插入图片描述
热key新增/删除,监听有新key推送事件,收到来自于worker的新增key

worker

收集各应用实例上报的信息,使用滑动窗口算法计算 Key 的热度。当 Key 的热度达到设定值时,推送热 Key 信息至所有应用实例。和dashboard那边的推送主要区别在于,给app推送每10ms一次dashboard那边1s一次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Elasticsearch】ILM(Index Lifecycle Management)策略详解

ILM(Index Lifecycle Management)策略详解 1.什么是 ILM 策略?2.ILM 解决的核心业务问题3.ILM 生命周期阶段3.1 Hot(热阶段)3.2 Warm(温阶段)3.3 Cold(冷阶段)3.4 Delete…

linux 后记

Linux Server 下载一个Server的版本,就是那种只有命令行的 学会这个就可以去租一个aliyun服务器,挺便宜的 如果在aliyun买服务器的话就不用管镜像源 但是如果是自己的虚拟机就必须设置镜像源,上网搜索阿里的镜像源,然后手动输入&…

【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)

📝 在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make) ✅ 目标说明 记录在 MSYS2 的 MINGW64 工具链环境中,成功安装用于 C/C 构建的常用开发工具。 包括: GCC 编译器Make 构建系统CMake 跨平台构建工具基础开…

PyTorch -TensorBoard的使用 (一)

设置环境 新建python文件 .py 安装Tensorboard 在终端进行安装 显示安装成功 两个logs,出现这种情况怎么解决 所有的logs文件删掉delete,重新运行 add_image 不满足要求 Opencv-numpy 安装Opencv add_image 用法示例 (500,375&am…

Redis最佳实践——性能优化技巧之数据结构选择

Redis在电商应用中的数据结构选择与性能优化技巧 一、电商核心场景与数据结构选型矩阵 应用场景推荐数据结构内存占用读写复杂度典型操作商品详情缓存Hash低O(1)HGETALL, HMSET购物车管理Hash中O(1)HINCRBY, HDEL用户会话管理Hash低O(1)HSETEX, HGET商品分类目录Sorted Set高O…

网络安全方向在校生有哪些证书适合考取?

工作7年得出结论:网络安全,考任何证书都没有用,实力才是根本。我是2021年考的 CISSP,报了培训班,花了1万一千块钱,签的保障班还是服务班不记得了,大概意思就是你放心去考,考不过可以…

从0开始学习R语言--Day14--贝叶斯统计与结构方程模型

贝叶斯统计 在很多时候,我们经常会看到在统计分析中出现很多反直觉的结论,比如假如有一种病,人群中的患病率为1%,患者真患病时,检测结果为阳性的概率是99%,如果没有,则检测结果为阳性的概率是5…

[Python] 如何使用 Python 调用 Dify 工作流服务实现自动化翻译

在实际项目中,自动化工作流服务可以大大简化复杂任务的处理流程。本文将介绍如何通过 Python 脚本调用 Dify 提供的工作流 API,实现文本翻译的自动化操作。该流程包括设置 API 接口、构造请求体并处理返回结果。 一、背景介绍:什么是 Dify 工作流服务? Dify 是一款支持多种…

PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。

目录 1.问题描述 2.函数接口定义: 3.裁判测试程序样例: 4.输入和输出样例 输入样例: 输出样例: 5.实现代码 1.问题描述 Main类:在main方法中,调用constructWorkerList方法构建一个Worker对象链表…

微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载

本次和大家分享另一个微软发布的非常热门的文件文档转Markdown格式文档的软件markitdown,软件可以将PDF,word,ppt,Excel等十几种格式文档转换为markdown格式文档,我基于当前最新0.1.2版本制作了免安装一键启动整合包。…

BayesFlow:基于神经网络的摊销贝叶斯推断框架

贝叶斯推断为不确定性条件下的推理、复杂系统建模以及基于观测数据的预测提供了严谨且功能强大的理论框架。尽管贝叶斯建模在理论上具有优雅性,但在实际应用中经常面临显著的计算挑战:后验分布通常缺乏解析解,模型验证和比较需要进行重复的推…

基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试

目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试。输入待加密数据,密钥,输出加密数据,然后通过解密模块输出解密后的原…

Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)

一、《用于精确目标检测和语义分割的丰富特征层次结构》 1.1、基本信息 原文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 中文译名:用于精确目标检测与语义分割的丰富特征层次结构 版本:第5版技…

极简以太彩光网络解决方案4.0正式发布,“彩光”重构园区网络极简之道

5月28日下午,锐捷网络在京举办以“光,本该如此‘简单’”为主题的发布会,正式发布极简以太彩光网络解决方案4.0。作为“彩光”方案的全新进化版本,极简以太彩光4.0从用户需求出发,聚焦场景洞察,开启了一场从底层基因出发的极简革命,通过架构、部署、运维等多维度的创新升级,以强…

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航

在电动车、储能电站、不间断电源(UPS)等设备中,蓄电池作为关键的储能单元,其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况,是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…

TortoiseSVN账号切换

SVN登录配置及账号切换 本文主要为了解答svn客户端如何进行账号登录及切换不同权限账号的方式。 一、环境准备与客户端安装 安装TortoiseSVN客户端 ​​下载地址​​:TortoiseSVN官网 ​​安装步骤​​: 双击安装包,按向导完成安装后&#x…

2025年05月28日Github流行趋势

项目名称:agenticSeek 项目地址url:https://github.com/Fosowl/agenticSeek项目语言:Python历史star数:10352今日star数:2444项目维护者:Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

篇章五 数据结构——链表(一)

目录 1.ArrayList的缺陷 2. 链表 2.1 链表的概念及结构 2.2 链表结构 1. 单向或者双向 2.带头或者不带头 3.循环或者非循环 2.3 链表的实现 1.完整代码 2.图解 3.显示方法 4.链表大小 5. 链表是否存在 key 值 6.头插法 7.尾插法 8.中间插入 9.删除key值节点 10.…

一文清晰理解目标检测指标计算

一、核心概念 1.交并比IoU 预测边界框与真实边界框区域的重叠比,取值范围为[0,1] 设预测边界框为,真实边界框为 公式: IoU计算为两个边界框交集面积与并集面积之比,图示如下 IoU值越高,表示预测边界框与真实边界框的对…

Artificial Analysis2025年Q1人工智能发展六大趋势总结

2025年第一季度人工智能发展六大趋势总结 ——基于《Artificial Analysis 2025年Q1人工智能报告》 趋势一:AI持续进步,竞争格局白热化 前沿模型竞争加剧:OpenAI凭借“o4-mini(高智能版)”保持领先,但谷歌&…