高并发之扩容思路
垂直扩容(纵向扩展):提高系统部件能力
水平扩容(横向扩展):增加更多系统成员来实现
读操作扩展:memcache、redis、CDN等缓存
写操作扩展:Cassandra、Hbase等
高并发之缓存思路
缓存特征
命中率:命中数/(命中数+未命中数)
最大元素(空间)
清空策略:FIFO, LFU, LRU, 过期时间,随机等
缓存命中率影响因素
业务场景和业务需求
缓存的设计(粒度和策略)
缓存容量和基础设施
缓存分类和应用场景
本地缓存:编程实现(成员变量、局部变量、静态变量)、Guava Cache
分布式缓存:Memcache、Redis
高并发场景下缓存的常见问题
缓存一致性
不一致的场景
更新数据库成功->更新缓存失败->数据不一致
更新缓存成功->更新数据库失败->数据不一致
更新数据库成功->淘汰缓存失败->数据不一致
淘汰缓存成功->更新数据库失败->查询缓存miss
缓存并发问题
使用锁
缓存穿透(击穿)问题
解决方案:
缓存空对象:对查询结果为空的对象也进行缓存,如果是集合,可以缓存一个空集合
如果是缓存单个对象,可以通过对象标识区分,防止请求击穿到数据库。这种方式实现成本低
适合命中不高但是可能频繁更新的数据。
单独过滤处理:对所有可能对应数据为空的对象单独存放,并在请求前拦截,防止请求击穿到数据库。
这种方式实现复杂,适合命中不高,更新不频繁的数据。
缓存的雪崩问题
限流、降级、熔断、多级缓存
高并发之消息队列思路
高并发之应用拆分思路
高并发之应用限流思路
高并发之服务降级与服务熔断思路
高并发之数据库切库分库分表思路
高并发之高可用手段
原文地址:https://www.cnblogs.com/z00377750/p/9256532.html
时间: 2024-09-30 20:38:33