1. 缓存穿透

和缓存击穿的区别

  1. 缓存穿透
    • 现象:指查询的数据在缓存和数据库中都不存在,每次请求都会落到数据库,导致数据库压力过大。
    • 解决方案:
      • 布隆过滤器:在缓存层加一个布隆过滤器,快速判断数据是否存在。
      • 缓存空值:当数据库返回空数据时,设置一个短期的空缓存,避免频繁查询数据库。
  2. 缓存击穿
    • 现象:指热点数据在缓存过期后,大量请求瞬时到达,直接打到数据库,造成数据库瞬时压力过大。
    • 解决方案:
      • 缓存预热:在热点数据即将过期前主动刷新缓存。
      • 加互斥锁:通过分布式锁机制确保同一时间只有一个线程能加载数据。

2. 死锁的典型场景


3. CAP 定理


4. 脏写问题


5. TCC 模式


6. TCC 的事务隔离


7. 最大努力通知模式


8. 最大努力通知与回滚操作


9. 最大努力通知与一致性