高并发网课的笔记(五)

CH11——高并发之扩容

  • 垂直扩容(会有极限点):提高系统部件性能
  • 水平扩容:服务器集群等
  • 数据库扩容:
    • 读操作扩展:memcache、redis、CDN等缓存
    • 写操作扩展:Hbase等

CH12——高并发之缓存

  • 数据库负载过高时,考虑引入缓存,在以下四个环节中都可以考虑加
    在这里插入图片描述
  • 缓存特征
    • 命中率(至关重要的直白哦):命中数/(命中数+未命中数);命中指能够从Redis中获取到目标数据
    • 最大元素(空间):当缓存空间满时,会根据清空策略将数据持久化到数据库
    • 清空策略:
      • FIFO:保证数据最新,即保证实时性
      • LFU:清除最少使用,保证高频数据可用
      • LRU:清楚最近最少使用,保证热点数据可用
      • 过期时间:自己就设定expire时间
      • 随机:随机清除
  • 缓存命中率的影响因素
    • 业务场景和业务需求:缓存适合读多写少的场景(写的话要从数据库更新)
    • 缓存的粒度和策略:缓存粒度越细命中率越高
    • 缓存容量和基础设施:目前大多使用LRU策略;单机内置缓存简单但是容易遇到单机瓶颈,分布式缓存容易扩展但是带来调度成本;保证可用性的做法有一致性哈希
  • 缓存分类和应用场景
    • 本地缓存:编程实现,没有过多网络开销;但是缓存与应用耦合,不能缓存不能共享。
    • 分布式缓存:Memcache、Redis等,本身就是一个独立的应用,多个应用容易共享
  • 使用缓存有两个前提条件:一是数据访问热点不均匀,某些数据会被更频繁的访问;二是数据在某个时间段内有效,不会很快过期,否则容易发生脏读。
  • 高并发场景下缓存常见问题
    • 缓存一致性:
      在这里插入图片描述
    • 缓存并发:多个不同key请求未能在缓存中找到,请求都打到数据库上,数据库负载增加
    • 缓存穿透:也叫缓存击穿,多次查询同一个缓存中不存在的数据,导致数据库负载增加;
      • 避免方式:1. 缓存空对象 2. 使用bloom过滤器对同一key 的请求做拦截(适合更新不频繁的数据)
    • 缓存雪崩:大量请求由于各种原因打到数据库,最后导致数据库宕机,可以通过限流,降级等来避免。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值