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

热点探测使用场景

  • 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.pswp.cn/diannao/85583.shtml

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

相关文章

MCU_IO驱动LED

注意事项: 1、亮度要求较高的情况下,不能由IO直接驱动LED MCU_IO引脚输出的电压和电流较弱,如果对光的亮度有要求的话,需要使用三极管来驱动。 MCU_IO的电压一般为3.3V或者5V,输出电流一般10mA-25mA。 2、不同颜色…

MyBatis 深度解析:高效 Java 持久层框架实践指南(基于 3.5.10)

一、MyBatis 核心架构与设计哲学 MyBatis 作为半自动 ORM 框架,核心设计目标是在灵活性与开发效率之间取得平衡。与 Hibernate 等全自动 ORM 框架不同,MyBatis 允许开发者完全控制 SQL 编写,同时通过映射机制减少重复代码,特别适…

二叉树(二)

98.验证二叉树 中序遍历二叉树&#xff0c;每次遍历存下当前节点的值&#xff0c;遍历到下一个节点比较&#xff0c;根据二叉搜索树的特性&#xff0c;左<中<右有&#xff1a; 如果当前值小于或等于上一个的值&#xff0c;说明不是二叉搜索树 如果当前值大于上一个节点…

解决Vue3+uni-app导航栏高亮自动同步方案

路由跳转自动识别导航高亮实现方法 以下代码使用wd-tabbar组件实现路由跳转时自动同步导航栏高亮状态&#xff0c;适用于所有的Vue3uni-app项目。 请根据自身使用框架类型完成&#xff0c;也可根据我使用的UI组件进行完成地址如下&#xff1a; Tabbar 标签栏 | Wot UI &#…

免费论文查重与AI检测工具推荐

文章目录 概要一、PaperPass二、PaperYY注意 概要 毕业季&#xff0c;总少不了查重这一步&#xff0c;甚至查 AI 率。推荐两款免费查重AIGC检测的工具。 论文免费查重查AI&#xff1a; https://paperpass.com/ https://www.paperyy.com/ 一、PaperPass 网址&#xff1a; ht…

4、ubuntu系统 | 文本和目录操作函数

1、目录操作函数 ls(列出目录内容) 用途:列出指定目录中的文件和子目录。语法:ls [选项] [路径]常用选项: -l:以长格式显示文件详细信息(权限、所有者、大小、时间等)。-a:显示隐藏文件(以.开头的文件)。-R:递归列出子目录内容。# 列出当前目录下的所有文件和子目…

C++--范围for循环详解

范围 for 循环是 C11 引入的语法特性&#xff0c;用于简化遍历容器或数组元素的过程。它比传统 for 循环更简洁安全&#xff0c;特别适合初学者。以下是详细讲解&#xff1a; 基本语法 for (元素类型 变量名 : 容器/数组) {// 循环体&#xff08;使用变量名访问当前元素&#…

RDMA简介1之RDMA开发必要性

为了满足大批量数据的采集、存储与传输需求&#xff0c;越来越多的数据密集型应用如机器学习、雷达、金融风控、航空航天等选择使用现场可编程逻辑门阵列作为数据采集前端硬件来实现高性能的数据采集系统。FPGA凭借其高灵活性、高并行能力及可高度定制化的特点&#xff0c;能够…

xmake的简易学习

文章目录 1. xmake是什么2. 一个可执行程序3. 一个库文件4. 遍历文件用法5. 第三方库3.1 系统安装库3.2 独立库 6. 后续 由于前一篇博客的最后说要做一些rknn的优化&#xff0c;其实这个工作很早就完成了&#xff0c;但是我是使用 xmake这个来做我的工程的构建的&#xff0c;不…

【ArcGIS微课1000例】0147:Geographic Imager6.2下载安装教程

文章目录 一、软件功能二、下载地址三、安装教程Geographic Imager地图工具使Adobe Photoshop空间图像可以快速高效地工作。它增加了导入,编辑,操作和导出地理空间图像的工具,例如航空和卫星图像。Geographic Imager Mac功能非常强大,拥有栅格数据输出、投影信息修改、基于…

【 java 集合知识 第一篇 】

1.概念 1.1.集合与数组的区别 集合&#xff1a;长度不固定&#xff0c;动态的根据数据添加删除改变长度&#xff0c;并且只能存入引用类型&#xff0c;读取采用迭代器或其他方法 数组&#xff1a;长度固定&#xff0c;不可改变&#xff0c;既可以存入基本类型也可以存入引用…

嵌入式开发学习日志(linux系统编程--系统编程之 进程间通信IPC)Day32

一、引言 空间独立&#xff0c;需要一些操作&#xff1b; 分为三大类&#xff1a; 1、古老的通信方式 无名管道 有名管道 信号 2、IPC对象通信 system v BSD suse fedora kernel.org 消息队列(用的相对少&#xff0c;这里不讨论) …

metersphere不同域名的参数在链路测试中如何传递?

域名1&#xff1a;https://api.domain1.com 域名2&#xff1a;https://api.domain2.com 域名1的返回参数stteid会作为域名2的入参 步骤&#xff1a; 1&#xff09;先在metersphere—接口测试—接口定义中创建域名1和域名2的接口 2&#xff09;接口创建好后&#xff0c;在接口测…

使用Process Explorer、System Informer(Process Hacker)和Windbg工具排查软件高CPU占用问题

目录 1、问题现象 2、使用Process Explorer和System Informer&#xff08;该工具原先叫Process Hacker&#xff09;查看占用CPU高的线程 3、使用System Informer工具时发现了一个关键细节 4、将Windbg附加到软件进程上&#xff0c;根据System Informer中显示的线程id到Wind…

Linux(线程概念)

目录 一 虚拟地址到物理地址的转换 1. 操作系统如何管理物理内存&#xff1a; 2. 下面来谈谈虚拟地址如何转换到物理地址&#xff1a; 3. 补充字段&#xff1a; 二 Linux中的线程 1. 先来说说进程&#xff1a; 2. 线程&#xff1a; 3. 线程相比较于进程的优缺点&#x…

阿里云为何,一个邮箱绑定了两个账号

阿里云“幽灵账号”之谜&#xff1a;同一个邮箱注销后仍有两个账号&#xff1f;深度揭秘成因与终极解决方案&#xff01; 你是否曾在阿里云上使用同一个邮箱注册过多个账号&#xff0c;明明已经**“彻底”注销了其中一个**&#xff0c;却惊愕地发现系统里依然**“幽灵般”挂着…

动态规划-数位DP

今天开始做关于数位DP的问题&#xff0c;首先对于数位DP来说&#xff0c;这类问题难度较大&#xff0c;比较难理解&#xff0c;所以博主也会尽量讲的更加详细一些&#xff0c;来帮助大家更好地理解这里的相关知识。 前置知识&#xff1a; 1.首先对于数位DP来说&#xff0c;主…

总览四级考试

别被“四级”这个庞然大物吓到&#xff01;我们一起拆解它&#xff1a;​​ &#x1f4cd; ​​核心认知&#xff1a;四级是一场策略性考试&#xff01;​​ 它不考智商&#xff0c;考的是​​基础英语能力 考试技巧 时间管理​​。基础可以通过努力补&#xff0c;技巧可以…

BSRR对比BRR对比ODR

✅ 三种操作方式的本质区别 寄存器功能原子操作特点BSRR同时支持置位(1)和复位(0)✔️ 是单指令完成任意位操作&#xff0c;无竞争风险ODR直接读写输出状态❌ 否需"读-改-写"&#xff0c;多线程/中断中需关中断保护BRR只能复位(0)✔️ 是仅清零功能&#xff0c;无置…

职坐标精选嵌入式AI物联网开源项目

随着嵌入式、AI与物联网技术的深度融合&#xff0c;开源生态已成为开发者构建智能硬件解决方案的核心驱动力。本文将从嵌入式实时操作系统、多模态AI数据集及物联网接入平台三大维度切入&#xff0c;系统性梳理技术选型要点与实践路径。在嵌入式领域&#xff0c;重点解析低功耗…