过期缓存:如何防止缓存被流量打穿?

2024-12-12 杜世伟 Message

防止过期缓存被流量打穿(缓存雪崩或缓存穿透)是缓存设计中的一个关键问题。以下是一些有效的方法来避免这些问题:

1. 设置不同的过期时间(过期抖动)

  • 问题:如果大量缓存同时过期,可能导致瞬时高并发请求直接打到后端服务,造成压力激增。
  • 解决方案:为不同缓存键设置一个随机范围内的过期时间(如 60s + rand(0,10s)),使缓存失效时间分散,减少同一时间的大量请求同时触发缓存更新。

2. 缓存预热

  • 问题:缓存过期后,第一次请求可能会因未命中缓存导致后端压力。
  • 解决方案
    • 在缓存即将过期前,后台异步任务或定时任务预先加载并更新缓存。
    • 例如,使用类似「双写缓存」策略,定期将新的数据更新到缓存中。
    • 利用消息队列通知更新。

阅读全文>>

标签: 缓存 过期 穿透 重建

评论(0) 浏览(1174)

高性能服务器架构思路

2016-5-5 杜世伟 架构

在服务器端程序开发领域,性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而,服务器端程序在性能问题上应该有何种基本思路,这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问题的基本策略和经典实践,并分为几个部分来说明:

1. 缓存策略的概念和实例

2.缓存策略的难点:不同特点的缓存数据的清理机制

3.分布策略的概念和实例

4.分布策略的难点:共享数据安全性与代码复杂度的平衡

缓存

缓存策略的概念

我们提到服务器端性能问题的时候,往往会混淆不清。因为当我们访问一个服务器时,出现服务卡住不能得到数据,就会认为是“性能问题”。但是实际上这个性能问题可能是有不同的原因,表现出来都是针对客户请求的延迟很长甚至中断。我们来看看这些原因有哪些:第一个是所谓并发数不足,也就是同时请求的客户过多,导致超过容纳能力的客户被拒绝服务,这种情况往往会因为服务器内存耗尽而导致的;第二个是处理延迟过长,也就是有一些客户的请求处理时间已经超过用户可以忍受的长度,这种情况常常表现为CPU占用满额100%

阅读全文>>

标签: 架构 高性能 缓存 分布式

评论(0) 浏览(1865)

Powered by emlog 沪ICP备2023034538号-1