高并发架构-发现热点

高并发“热点”缓存数据快速“退火” 背景电商场景促销活动的会场页由于经常集中在某个时间点进行“秒杀”促销,这些页面的QPS(服务器每秒可以处理的请求量)往往特别高,数据库通常无法直接支撑如此高QPS的请求,常见的解决方案是让大部分相同信息的请求都尽可能地压在缓存(cache)上来缓解数据库(DB)的压力,从而尽可能地去满足高并发访问的诉求(如图2-1所示)。图2-1 常规数据缓存方案在一次业务促销过程中,运营给一大批用户集中推送了一 阅读详情

高并发项目通常是javaWeb 项目中ToC 场景,例如常见的秒杀,抢票。
从项目开发到上线,整个项目周期都需要关注热点数据,准去的预测和监控热点数据可以帮助开发更好的实现系统。
这篇文章从小处入手,浅析高并发的架构设计。

一、 什么是热点

热点分为热点操作和热点数据。

1.1热点操作

所谓“热点操作”,例如大量的刷新页面、大量的添加购物车、双十一零点大量的下单等都属于此类操作。对系统来说,这些操作可以抽象为“读请求”和“写请求”,这两种热点请求的处理方式大相径庭(差不多),读请求的优化空间要大一些,而写请求的瓶颈一般都在存储层,优化的思路就是根据 CAP 理论做平衡。

1.2 热点数据

而“热点数据”比较好理解,那就是用户的热点请求对应的数据。而热点数据又分为“静态热点数据”和“动态热点数据”。

静态热点数据

所谓“静态热点数据”,就是能够提前预测的热点数据。例如,我们可以通过卖家报名的方式提前筛选出来,通过报名系统对这些热点商品进行打标。另外,我们还可以通过大数据分析来提前发现热点商品,比如我们分析历史成交记录、用户的购物车记录,来发现哪些商品可能更热门、更好卖,这些都是可以提前分析出来的热点。

动态热点数据

所谓“动态热点数据”,就是不能被提前预测到的,系统在运行过程中临时产生的热点。例如,卖家在抖音上做了广告,然后商品一下就火了,导致它在短时间内被大量购买。

二、发现热点

架构通常是分层和异构的,我们利用Linux 、jvm 或者mysql的监控工具 通常可以准确的定位热点操作

2.1 nginx 日志分析

nginx 日志中包含请求路径,可以通过命令分析 热点请求路径:

cat log_file|awk '{print $11}'|sort|uniq -c|sort -nr | head -10

cat log_file|awk '{print $11}'|sort|uniq -c|sort -nr|head -20

awk '{print $1}' log_file |sort -n -r |uniq -c | sort -n -r | head -20 

如果使用阿里云服务器,其访问入口自带热点分析功能。

或者使用工具搭建一套日志分析服务

在这里插入图片描述

GoAccess is an open source real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.

It provides fast and valuable HTTP statistics for system administrators that require a visual server report on the fly.

https://goaccess.io/features

2.1 业务日志分析热点

业务员日志 经过阿里云日志分析系统
可以根据业务关键词 查找 分析 业务热点

2.3 Redis 热点数据分析

Redis可以使用Monitor 命令查看实时Redis 操作

redis-faina的两种用法:

1,可以通过管道从stdin读取N条命令

redis-cli -p port MONITOR | head -n <NUMBER OF LINES TO ANALYZE> | ./redis-faina.py [options]

2,也可以从一个文件中读取N条命令

redis-cli -p port MONITOR | head -n <NUMBER OF LINES TO ANALYZE> > /tmp/outfile.txt
./redis-faina.py /tmp/outfile.txt
# redis-cli -p 6381 MONITOR | head -n 10000 | ./redis-faina.py
Overall Stats
========================================
Lines Processed  10000
Commands/Sec     274.73
Top Prefixes   #按照key的前缀统计
========================================
testcache-rendsord-lang        1684(16.84%)
testcache-inuanGoods-id        1090(10.90%)
testcache-riceroup-cat_id      307 (3.07%)
testcache-ategorynfo-id        190 (1.90%)
testcache-ategoryey-lang       189 (1.89%)
testcache-earchtrremplate-id  61  (0.61%)
testcache-riceroup-id          15  (0.15%)
testcache-otordata-lang       9   (0.09%)
Top Keys     #请求最频繁的key
========================================
testcache-acebookhareandsave  2373(23.73%)
testcache-hippingFee           2198(21.98%)
testcache-rendsord-lang:en    1464(14.64%)
testcache-ountryurrency       1181(11.81%)
testcache-inuanoods          442 (4.42%)
testcache-ategoryey-lang:     183 (1.83%)
testcache-rendsord-lang:es    124 (1.24%)
testcache-inuanoods-id:68    114 (1.14%)
Top Commands     # 执行最频繁的命令
========================================
GET      9957(99.57%)
AUTH     13  (0.13%)
COMMAND  13  (0.13%)
SADD     10  (0.10%)
info     5   (0.05%)
SET      1   (0.01%)
Command Time (microsecs)    # 命令执行时长
========================================
Median  2309.0
75%     4959.75
90%     8447.0
99%     18482.0
Heaviest Commands (microsecs)    #耗时最多的命令
========================================
GET      36281717.75
COMMAND  85269.25
SADD     17985.75
info     10698.5
SET      3228.0
AUTH     625.5
Slowest Calls     #执行最慢的命令
========================================
179962.0  "GET" "testcache-hippingee"
62659.0   "GET" "testcache-romotionullateeduce"
44902.0   "GET" "testcache-hippingee"
40305.25  "GET" "testcache-hippingee"
39559.0   "GET" "testcache-hippingee"
36831.25  "GET" "testcache-hippingee"
33852.0   "GET" "testcache-hippingee"
33501.0   "GET" "testcache-hippingee"

参考:https://blog.youkuaiyun.com/fuqianming/article/details/99682764

2.4 Mysql 分析热点数据

阿里云的yunsql 自带sql 分析功能

mysql 本身没有这个功能,
换一种实现思路,parser binLog
手写一个分析器,分析执行语句。

mysql 代理思路

阿里开源的数据库连接池druid 带有sql 语句统计功能。

https://github.com/alibaba/druid

吐血1个月给大家整理了高并发下的缓存设计方案! 这篇文章,咱们来聊聊热点缓存的架构优化问题。 其实使用缓存集群的时候,最怕的就是热key、大value这两种情况,那啥叫热key大value呢? 阅读详情

相关推荐

聊聊八卦,当年的顶流明星事件是如何把公司的缓存架构“击垮”的?

这篇文章,咱们来聊聊热点缓存的架构优化问题。 其实使用缓存集群的时候,最怕的就是热key、大value这两种情况,那啥叫热key大value呢?

石杉的架构笔记 639

高并发经验总结与分享

我们知道Redis本身的性能瓶颈从来不在CPU,而是在IO上,所以在官方在Redis4引入了后台线程,做一些lazy free等异步操作,Redis6引入了IO多线程,但Redis的命令执行一直是单线程的,所以结合lua脚本,实现命令的原子性,这样就很完美的实现了库存的扣减,也可防止超卖,这也是很多平台都在使用的主要方案。我们现在开发业务系统,基本上都是IO密集型的,很少有CPU密集型的,因此I/O是成为系统瓶颈的主要因素,零拷贝可以减少CPU拷贝次数,减少用户态和内核态的切换,从而提升IO传输效率。

hbnn111的专栏 2416

架构师特刊2019合辑.zip

架构师特刊2019合辑,促进软件开发领域知识与创新的传播,新技术,热点,专题,架构,理论,专题,观点

从产品角度来聊ToC的数据和ToB的数据

前几日收到个有意思的问题:“相比2C数据的海量、花样多,2B数据少、沉淀少,是不是2B的数据注定就不那么有意思?”渔歌思考了这个问题。1.2C和2B业务...

木东居士 2018

微博热点话题发现系统的设计与实现

微博热点话题发现系统的设计与实现 论文下载s

java使用Nagao算法实现新词发现、热门词的挖掘

主要介绍了java使用Nagao算法实现新词发现、热门词的挖掘的思路和详细代码,需要的朋友可以参考下

服务端⾼并发分布式结构演进之路

服务端⾼并发分布式结构演进之路

chenchenchencl的博客 3273

数字逻辑EduCoder课设项目 厨房计时器系统设计 Logisim实现

数字逻辑EduCoder课设项目 厨房计时器系统设计 Logisim实现

weixin_51693702的博客 1万+

高并发百万级热点key处理方案

背景 我们知道在面试中,面试官经常会问一些关于高并发的问题,其中热点key问题就是一个热门问题,热点key顾名思义就是访问非常频繁的key,再加上高并发访问条件,热点key缓存问题如何解决。接下来我们从以下三个方面来剖析一下: 1、热点key定义 2、如何发现热点key 3、解决方案 热点key定义 突然有几十万甚至更大的请求去访问redis上的某个特定key。这样会造成流量过于集中,...

大龙的博客 2125

条件风险价值CVaR内容介绍(MATLAB例程)

在对微电网优化调度过程中,由于新能源机组出力和负荷的不确定性,若采用确定性的优化调度方案会存在一定的风险。反之,若风电和光伏输出功率的实际值高于预测值时,则需要降低可控机组出力或者弃风弃光,这都会给系统带来运行费用增加的风险。下,损失超过VaR值时的条件均值[1]。VaR是指在一定的置信水平下,某一投资组合在未来某一时间段内的最大损失。为m维决定系统风险损失的随机向量f(y)为y的概率密度函数。式中,m为所有场景的数量,yk为第k个场景下随机变量的值,为第k个场景发生的概率。的最小值即为CVaR,对应的。

贾贾的博客 3059

【OpenCV3】cv::compare()使用详解

cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下: cv::compare() bool cv::compare( cv::InputArray src1, // 输入数组1 cv::InputArray src2, // 输入数组2 cv::OutputArray dst, // 输出数组 int cmpop // 比较操作子,见下表 ...

guduruyu的专栏 9759

缓存热点自动发现和处理的架构设计实践

一、为什么要用缓存集群 啥叫热 Key 和大 Value 呢?简单来说,热 Key,就是你的缓存集群中的某个 Key 瞬间被数万甚至十万的并发请求打爆。 大 Value,就是你的某个 Key 对应的 Value 可能有 GB 级的大小,导致查询 Value 的时候出现网络相关的故障问题。 先来看看下面的一幅图: 简单来说,假设你手头有个系统,他本身是集群部署的,然后后面有一套缓存集群,这个集群不管你用 Redis Cluster,还是 Memcached,或者是公司自研缓存集群,都可以。 那么

lzf的博客 709

瑞萨CS+仿真器高级配置指南:从原理到实战优化RX系列MCU调试

在嵌入式系统开发中,仿真器是进行早期验证和深度调试的核心工具。它通过精确模拟目标微控制器的指令集、内存和外设行为,构建了一个虚拟的硬件沙盒环境。其工作原理在于对CPU核心、时钟系统和外设接口的软件模拟,使开发者能在无物理硬件时进行代码逻辑验证、内存布局规划和时序分析。这项技术的核心价值在于大幅降低开发成本、加速问题定位,并支持复杂场景的复现与测试。在瑞萨RX系列MCU开发中,CS+集成开发环境内置的仿真器功能尤为强大。本文聚焦于**指令解码缓存**和**外设时钟比率**等关键配置的深度解析,阐述如何通过优化

cmff98425的博客 1119

如果20万用户同时访问一个热点缓存,如何优化你的缓存架构?

https://www.xinke.org.cn/article/detail/860 目录 (1)为什么要用缓存集群 (2)20万用户同时访问一个热点缓存的问题 (3)基于流式计算技术的缓存热点自动发现 (4)热点缓存自动加载为JVM本地缓存 (5)限流熔断保护 (6)总结 (1)为什么要用缓存集群 这篇文章,咱们来聊聊热点缓存的架构优化问题。 其实使用缓存集群的时候,最怕的就是热key...

jiaoyajieqianyi的博客 250

TLS回调函数–一文看懂(详)

TLS回调函数 CTF RE

Joyce_hjll的博客 3718

cesium 高程数据使用

cesium 高程数据使用高程数据下载高程数据切片简单数据服务 高程数据下载 使用地理空间数据云平台免费提供的高程数据。地理空间云平台 点击列表中的下载得到数据压缩包。例如:ASTGTM2_N22E114.zip 高程数据切片 使用cesium实验室工具对下载得到的压缩包进行切片。cesium实验室 切片得到的文件夹目录。 简单数据服务 使用nodejs的koa启动简单的资源服务。koajs 项目根目录新建data文件夹,在新建dem文件夹放高程数据。 注意目录自行更换,这里是./data/dem

哎哟这个凉白白的博客 1811

缓存穿透、缓存并发、缓存雪崩、缓存抖动、热点缓存、缓存双写一致性等问题

对于高并发的业务场景,常用的技术手段包括黑白名单、限流防刷、熔断降级、兜底、隔离、多级缓存(客户端、CDN、NGINX、内存缓存、分布式缓存)等等。这些手段相互结合,才能应对高并发场景下的各种细分场景。本文总结了缓存方案需要考虑的几个问题。 第一,关于缓存穿透,是指大量访问缓存和数据库中都不存在的数据。对此,可以考虑使用参考博客1和2中提到的两种方案:缓存空对象(对应key数量有限、key重复请求概率较高的场景)和布隆过滤器(对应key数量有限、key重复请求概率较高的场景和key各不相同、key重复请求

Saintyyu的博客 1132

工程测量不用愁,120个视频动画帮你忙,简单易学直观明了!

工程测量不用愁,120个视频动画帮你忙,简单易学直观明了!文末提供下载地址。 下载地址: 链接:https://pan.baidu.com/s/11S6XDq9Eaa3DG3VKRMBIPg

智慧空间实验室 1019

【高并发】- 生产级系统搭建 - 3

本章讲解高并发系统动静分离方案设计、热点数据处理、管控等思想

Xgx120413的专栏 518

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Redis面试一突发热点Key

热点 Key 指某一个/某一批 Key 在短时间内(秒级/分钟级)承受的访问量(QPS)远超其他 Key,达到 Redis 单节点处理上限(通常 Redis 单节点 QPS 约 10 万~20 万),引发节点资源瓶颈。应急优先:突发读热点优先用「应用本地缓存」,写热点优先用「异步化+限流」,毫秒级生效避免故障扩大;架构根治:长期通过「Key 拆分 + 多级缓存 + 中间件」解决,从源头分散热点流量;事前预防:可预知热点提前做缓存预热、Key 拆分,避免被动应对。

qq_38261626的博客 824

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

高并发场景下的热点数据处理与缓存优化实战

在分布式系统中,缓存技术是提升性能的核心手段,其核心原理是通过内存存储高频访问数据降低数据库压力。热点数据处理涉及实时监控、多级缓存架构、分布式锁等关键技术,尤其在电商大促等千万级并发场景中,单个Key的QPS可能突破15万次/秒。通过客户端本地缓存(如Guava Cache)、代理层一致性哈希、服务端多级缓存等三级防护体系,配合Redlock分布式锁和熔断降级策略,可有效防止缓存击穿和数据库雪崩。典型应用场景包括商品详情页、秒杀系统等需要应对突发流量的业务场景,其中热点数据识别与防护已成为高可用架构的必备

weixin_34409357的博客 474

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

外卖CPS聚合平台万级QPS下的Redis热点Key治理与本地缓存多级架构设计实践

当海量请求同时涌向Redis中的同一个Key时,不仅会造成Redis实例的CPU飙升,引发网络拥塞,甚至可能导致整个缓存集群雪崩,使请求直接穿透到后端数据库,造成服务不可用。这套架构通过本地缓存抗住了绝大部分热点流量,通过Redis Pub/Sub机制实现了缓存的快速发现与一致性维护,为外卖CPS聚合平台在万级QPS下稳定运行提供了坚实保障。因此,设计一套高效、稳定的多级缓存架构,并辅以精准的热点Key治理策略,是保障平台高并发、高可用的关键。下面是一个整合了多级缓存和热点Key治理的缓存服务实现。

402

优惠券返利app的混合缓存架构与热点Key解决方案

Redis等缓存技术是标配,但在“秒杀”或“爆款推荐”等场景下,少数几个热点Key(如某个顶级主播带货的商品ID)会承受绝大部分流量,极易导致缓存击穿、雪崩,甚至拖垮整个Redis集群。通过这种“多级缓存 + 热点主动推送”的组合拳,我们构建了一个高性能、高可用的数据读取层。本文将深入探讨如何构建一个多级混合缓存架构,并针对性地解决热点Key问题,确保系统在高负载下依然坚如磐石。为了解决单一缓存层的瓶颈,我们采用“本地缓存 + 分布式缓存 + 数据库”的三级混合架构。

技术研究中心 123

高并发场景下SpringBoot秒杀系统设计

本文探讨了基于 Spring Boot 的高并发秒杀系统设计,提出从单体架构到分布式微服务的演进路线。通过引入 Redis 缓存、限流降级、分布式锁和消息队列等技术手段,有效解决了库存超卖、瞬时流量冲击等问题,提升了系统的性能与稳定性。文章还分析了防刷机制、异步处理及分布式事务等关键点,为开发者提供了实用的设计思路与解决方案,适用于秒杀及其他高并发场景。

weixin_74887700的博客 834

别再手动配缓存了!用京东Hotkey实现Spring Boot应用热点数据自动托管

本文介绍了京东Hotkey如何帮助Spring Boot应用实现热点数据的自动托管,告别手动缓存管理的繁琐。通过实时热点检测、智能缓存策略和多级缓存架构,京东Hotkey能有效应对高并发场景,显著提升系统性能。文章还详细解析了其核心架构、Spring Boot集成方法及最佳实践。

weixin_28338005的博客 252
上一篇: Mysql 分析工具 Neor Profile
下一篇: Java 虚拟机参数
hamish-wu
博客等级 码龄15年 2814粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值