flowchart TD
subgraph 问题场景
A[大量缓存同时过期] --> B[请求穿透缓存]
B --> C[(数据库压力暴增)]
C --> D[系统响应超时]
D --> E[系统崩溃]
end
subgraph 解决方案
F[方案1: 随机过期时间]
G[方案2: 多级缓存]
H[方案3: 热点数据永不过期]
I[方案4: 熔断降级]
end
F --> J[分散过期时间点]
G --> K[本地缓存+分布式缓存]
H --> L[定时任务主动更新]
I --> M[限制数据库访问量]
flowchart TD
subgraph 缓存过期策略优化
A[随机过期时间] --> B[基础过期时间+随机偏移]
B --> C[分散过期峰值]
D[分层过期策略] --> E[热点数据长过期]
D --> F[普通数据中等过期]
D --> G[冷数据短过期]
H[永不过期策略] --> I[主动更新机制]
I --> J[定时任务刷新]
I --> K[事件驱动更新]
end
subgraph 多级缓存架构
L[一级缓存] --> M[本地缓存]
L --> N[Caffeine/Guava]
L --> O[进程内缓存]
P[二级缓存] --> Q[分布式缓存]
P --> R[Redis/Cluster]
P --> S[高可用集群]
T[三级缓存] --> U[数据库]
T --> V[主从架构]
T --> W[读写分离]
end
subgraph 请求流量控制
X[限流策略] --> Y[令牌桶算法]
X --> Z[漏桶算法]
X --> AA[滑动窗口]
AB[熔断机制] --> AC[断路器状态]
AC --> AD[闭合状态]
AC --> AE[打开状态]
AC --> AF[半开状态]
AG[降级策略] --> AH[返回默认值]
AG --> AI[返回缓存快照]
AG --> AJ[排队等待]
end
subgraph 缓存预热机制
AK[启动预热] --> AL[配置化预热]
AK --> AM[定时预热]
AN[预热流程] --> AO[加载热点数据]
AO --> AP[构建缓存键]
AP --> AQ[写入缓存]
AQ --> AR[设置过期时间]
end
subgraph 缓存一致性保障
AS[主动更新] --> AT[数据变更事件]
AT --> AU[删除缓存]
AU --> AV[延迟双删]
AW[被动更新] --> AX[缓存过期触发]
AX --> AY[查询数据库]
AY --> AZ[更新缓存]
end
subgraph 监控预警机制
BA[指标监控] --> BB[缓存命中率]
BA --> BC[缓存过期率]
BA --> BD[数据库压力]
BE[预警规则] --> BF[命中率阈值]
BE --> BG[延迟阈值]
BE --> BH[错误率阈值]
BI[告警通知] --> BJ[短信/邮件]
BI --> BK[钉钉/企微]
BI --> BL[自动化处理]
end
A --> L
L --> X
X --> AK
AK --> AS
AS --> BA