固定窗口和滑动窗口,你真的分得清吗?快来看看!

简介: 滑动窗口是一种用于实时数据统计和分析的技术,通过不断移动的时间窗口捕捉最新数据变化。它常用于限流、实时数据分析和TCP协议中的流量控制,能够提供持续更新的统计数据,有效控制请求流量,避免系统过载。与固定窗口相比,滑动窗口更加动态和灵活,适合实时监控和快速响应。

什么是滑动窗口?

滑动窗口是一种常用于实时数据统计和分析的技术,其原理在于不断移动的时间窗口,以捕捉最新的数据变化情况。滑动窗口能够提供持续更新的统计数据,而不是在固定时间间隔内进行一次性统计。

滑动窗口技术常用于统计特定时间段内的事件或数据点,在各种限流场景中尤为实用。滑动窗口通过将整个时间窗口分割成若干较小的时间片段来实现统计。这些时间片段各自独立记录在其间发生的请求数量。随着时间的推移,最早的时间片段会逐渐被新的时间片段取代,从而呈现出一种“滑动”的效果。这种设计既能实时更新统计数据,又能有效控制请求流量,避免系统过载。

如何理解滑动窗口原理?

原理大概能看明白,但又不是很明白的样子!!!

再来看看一张图,好像已经明白了


添加图片注释,不超过 140 字(可选)


可以想象一下,你有一块小窗口(比如一块浅色玻璃),你可以把它放在一大串数字上,然后透过这个窗口只能看到一部分数字。然后,你可以把这个窗口沿着数字串慢慢移动,每次看到新的数字,同时一些旧的数字就会移出窗口。  

假设你有一串数字:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],你有一个窗口,可以一次看到3个数字。你可以这样做:

  1. 初始位置:把窗口放在前面3个数字上,所以你看到的是[1,2,3,4,5,6]。
  2. 向前滑动一步:把窗口向前移动一个位置,现在你看到的是[2,3,4,5,6,7]。
  3. 继续滑动:再向前滑动一步,你看到的是[3,4,5,6,7,8]。

滑动窗口与固定窗口区别?


添加图片注释,不超过 140 字(可选)


固定窗口就像是在某个时间段内截取一段数据进行分析。它是静止的,不会移动。举个例子,你每天早上记录昨天24小时的气温,这就是一个固定窗口。

特点

  1. 固定时间段:窗口的时间段是固定的,比如从00:00到24:00。
  2. 一次性统计:在指定时间段结束后才进行统计和分析。
  3. 适合总结和报告:通常用于生成每日、每周或每月的报告。

比如

  • 你每天早上查看前一天的步数统计。
  • 每个月底统计当月的销售额。

滑动窗口

滑动窗口则是一个动态窗口,它会随着时间的推移不断前移。想象一下,你有一个移动的观察窗,它会每小时记录过去24小时内的气温。每小时更新一次,这样你总是有一个最新的24小时气温记录。

特点

  1. 动态更新:窗口会随着时间不断向前移动,实时更新数据。
  2. 连续监控:可以实时反映当前的数据变化情况,适合实时监控和快速响应。
  3. 更细致的分析:能捕捉到更短时间内的变化。

比如

  • 你每小时记录过去24小时的步数统计。
  • 实时监控网站的访问量,每分钟更新一次,记录过去1小时内的访问量。

滑动窗口使用场景?

限流和熔断:滑动窗口在流量控制中用于统计单位时间内的请求数、错误率等指标,以决定是否需要限流或熔断。例如,Sentinel 使用滑动窗口实时统计 QPS(每秒请求数)和错误率,帮助系统进行限流和熔断操作。  

实时数据分析:滑动窗口在流式数据处理系统(如 Apache Flink、Apache Storm)中,用于实时统计和分析数据流,计算移动平均值、计数等指标。  

TCP 滑动窗口:在TCP协议中,滑动窗口用于控制数据流的发送和接收速度,确保高效可靠的数据传输,避免网络拥塞。  


我是栈江湖,如果你喜欢此文章,不要忘记关注+点赞哦!你的支持是我创作的动力。如果你有任何意见或建议,欢迎在下方留言。若转载,请注明文章来源。

目录
相关文章
|
Cloud Native Devops 持续交付
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
5888 1
|
10月前
|
存储 关系型数据库 MySQL
MySQL主键谁与争锋:MySQL为何钟爱自增主键ID+UUID?
本文深入探讨了在MySQL中使用自增类型主键的优势与局限性。自增主键通过保证数据的有序性和减少索引维护成本,提升了查询和插入性能,简化了数据库管理和维护,并提高了数据一致性。然而,在某些业务场景下,如跨表唯一性需求或分布式系统中,自增主键可能无法满足要求,且存在主键值易预测的安全风险。因此,选择主键类型时需综合考虑业务需求和应用场景。
322 2
|
监控 供应链 定位技术
什么是 eCPM?它与 CPM 有何不同?
这篇文章解释了eCPM(每千人有效成本)的概念,它与CPM(每千人成本)的区别,如何计算eCPM,以及eCPM的主要优势和底价设置。文章还探讨了影响eCPM值的因素,以及如何确定合适的eCPM目标。
4719 2
什么是 eCPM?它与 CPM 有何不同?
|
9月前
|
Java 调度 数据库
SpringBoot整合XXL-JOB【05】- 任务分片
在实际业务中,批量定时任务可能因上一批任务未完成而影响业务。为解决此问题,本文介绍如何使用Xxl-job对批量任务进行分片处理,通过分片广播形式调度集群机器并行执行任务,大幅提升执行效率。具体步骤包括环境准备、添加依赖和配置、声明实体类与查询类,以及改造业务逻辑实现分片查询。测试结果显示,分片处理将两千条数据的执行时间从30秒缩短至15秒,性能提升显著。
813 13
SpringBoot整合XXL-JOB【05】-  任务分片
|
10月前
|
人工智能 自动驾驶 安全
“第四次工业革命”-AI革命
“AI变革”被誉为“第四次工业革命”。中国在AI领域持续发力,占亚太地区AI支出的五成,预计2023年市场规模将达到147.5亿美元,约占全球市场的十分之一。IDC预测,中国生成式AI市场年复合增长率将达86.2%。国内企业如百度、阿里、清华等在AI技术研发和应用方面取得显著进展,推动了无人驾驶、送餐机器人、无人快递车等应用场景的发展。尽管AI带来了降本增效,但也引发了就业和社会压力。总体而言,中国在AI领域的投入和发展势头强劲,未来前景广阔。
755 0
“第四次工业革命”-AI革命
|
11月前
|
消息中间件 存储 Kafka
RocketMQ 工作原理图解,看这篇就够了!
本文详细解析了 RocketMQ 的核心架构、消息领域模型、关键特性和应用场景,帮助深入理解消息中间件的工作原理。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
RocketMQ 工作原理图解,看这篇就够了!
|
存储 算法 NoSQL
|
10月前
|
缓存 JSON NoSQL
为什么是删除缓存,而不是更新缓存?
本文介绍了数据库与缓存一致性的常见方案——Cache-Aside Pattern(旁路缓存模式),并分析了其工作流程及优势。该模式通过应用程序显式管理缓存,确保数据一致性。文章详细探讨了删除缓存而非更新缓存的原因,包括避免数据不一致、简化操作、减少并发问题及提高性能。删除缓存能有效保证下次请求获取最新数据,尤其在高并发场景下,确保系统的简单性和可靠性。
407 0
|
网络协议 Ubuntu 网络安全
127.0.0.1、0.0.0.0和本机ip地址的区别
127.0.0.1、0.0.0.0和本机ip地址的区别
|
监控 Java Spring
AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
AOP切入同类调用方法不起作用,AopContext.currentProxy()帮你解决这个坑
1286 1