编程指南-学习建议编程指南-学习建议
首页
学习方向
技术学习
🚀 编程指南
首页
学习方向
技术学习
🚀 编程指南
  • 三、技术学习

    • 技术指南

      • 前端技术知识

        • 什么是前端?
      • 后端技术知识

        • 什么是缓存?
        • 什么是工作流技术?
        • 什么是反向压力?
        • 什么是热数据探测?
        • 数据库也能版本控制?
        • /tech-learning/guide/backend/how-search-engine-works.html
        • /tech-learning/guide/backend/learn-concurrency.html
        • /tech-learning/guide/backend/other-databases.html
      • 通用技术知识

        • 什么是前后端分离?
        • /tech-learning/guide/general/what-is-redirect.html
        • 什么是单例模式?
        • /tech-learning/guide/general/what-is-magic-value.html
        • 什么是负载均衡?
        • /tech-learning/guide/general/what-is-multi-env.html
        • /tech-learning/guide/general/what-is-magic-number.html
        • 什么是 Linux?
        • /tech-learning/guide/general/what-is-cloud-dev.html
    • 系统设计

      • 如何设计一个实时排行榜系统?
      • /tech-learning/system-design/elasticsearch-optimization.html
      • /tech-learning/system-design/file-upload.html
      • /tech-learning/system-design/log-system.html
      • /tech-learning/system-design/software-sword.html
      • 如何设计好 API 接口?
      • /tech-learning/system-design/sdk-development.html
      • /tech-learning/system-design/architecture-design.html
      • /tech-learning/system-design/release-stability.html
    • 开发经验

      • 解决 Bug 经验
      • 如何快速上手新项目?
      • /tech-learning/dev-experience/enterprise-software.html
      • /tech-learning/dev-experience/opensource-contribute.html
      • 什么是代码规范?为什么要遵循代码规范?
      • /tech-learning/dev-experience/company-standards.html
      • /tech-learning/dev-experience/code-reuse.html
      • /tech-learning/dev-experience/quick-website.html
      • /tech-learning/dev-experience/vscode-remote.html
      • /tech-learning/dev-experience/linux-vm-remote.html
      • /tech-learning/dev-experience/young-contributor.html
      • /tech-learning/dev-experience/no-force-shutdown.html
      • /tech-learning/dev-experience/no-hardcode.html
      • /tech-learning/dev-experience/backend-attention.html
      • 千万别直接敲代码!(写代码前要做的事)
      • /tech-learning/dev-experience/project-attention.html
      • /tech-learning/dev-experience/website-online.html
      • /tech-learning/dev-experience/tech-selection.html

什么是热数据探测?

热数据探测是高并发系统中的一个重要技术,今天来聊聊。

什么是热数据

热数据就是被频繁访问的数据。

比如:

  • 双十一的爆款商品
  • 微博热搜的话题
  • 突发新闻的内容

这些数据访问量特别大,是"热点"。

为什么要探测热数据

热数据会压垮系统

如果大量请求都访问同一条数据,可能导致:

  • 缓存单点压力过大
  • 数据库被打爆
  • 服务响应变慢甚至崩溃

提前发现才能应对

如果能提前发现哪些数据是热点,就可以提前做准备:

  • 多级缓存
  • 本地缓存
  • 限流

热数据探测的方法

1. 统计访问次数

记录每个key的访问次数,超过阈值就是热点。

2. 滑动窗口

统计最近一段时间内(比如1分钟)的访问次数。

3. 实时计算

用实时计算框架(如Flink)分析访问日志,实时发现热点。

发现热点之后怎么办

本地缓存

把热点数据缓存在应用本地内存,减少对Redis的访问。

多级缓存

L1本地缓存 + L2 Redis,热点数据优先从本地获取。

限流

对热点数据的访问限流,保护系统。

异步化

把同步操作改成异步,削峰填谷。

实际案例

秒杀系统

秒杀商品肯定是热点。提前把商品信息加载到本地缓存,减少对数据库的访问。

微博热搜

热搜话题访问量巨大。需要多级缓存、CDN加速。

最后

热数据探测的核心是:发现问题、提前应对。

不能等系统被打爆了才发现有热点,要能提前感知并做好准备。

这是高并发系统设计中很重要的一环。

上次更新: 2025/12/7 09:34
Prev
什么是反向压力?
Next
数据库也能版本控制?