并发编程-24 高并发处理手段之扩容思路 + 缓存思路

2021-08-17 15:59:52 浏览数 (1)

文章目录

  • 概述
  • 扩容思路
    • 垂直扩展(纵向扩展)
    • 水平扩展(横向扩展)
  • 缓存思路
    • 缓存特征
    • 缓存命中率影响因素
    • 缓存分类和应用场景
      • Guava Cache
      • Memcache
      • Redis

概述

这里只是讲通用的思路,实际高并发的场景需要根据实际情况来决定方案。


扩容思路

举个例子: 一共有60块砖, 1个工人。每次只能搬运10块。每次搬运耗时10分钟,这样的话,1个工人搬运完60块砖,就需要1个小时。

垂直扩展(纵向扩展)

提高系统部件能力。

用上面的例子来解释下就是:目前有120块砖要搬(相当于高并发场景),如果使用垂直扩展的话,提高运行效率,我们调整为将工人

  • 每次搬砖20块,每次搬运耗时10分钟,1个小时处理完成。
  • 或者每次10块,每次搬运耗时5分钟,1个小时处理完成。

水平扩展(横向扩展)

增加更多系统成员,就是我们通常说的集群

还是上面的例子,120块砖要搬(相当于高并发场景) ,工人的效率保持不变,每次只能搬运10块,每次搬运耗时10分钟,一个小时依然是60块砖。 使用水平扩展来模拟的话,那就增加一名工人,两名工人,1个小时处理120块砖。


缓存思路

缓存特征

  • 命中率: 命中数/(命中数 没命中数)
  • 最大元素(空间): 当缓存超出设置的容量时,会触发缓存清空策略。 因此设置合理的缓存空间,将有效的提高命中率
  • 清空策略: FIFO(先进先出)、LFU(最少使用)、LRU(最近使用)、过期时间、随机清理。

缓存命中率影响因素

  • 业务场景和业务需求
  • 缓存的设计(粒度和策略)
  • 缓存容量和基础设施

缓存分类和应用场景

  • 本地缓存:编程实现(成员变量、局部变量、静态变量)、Guava Cache
  • 分布式缓存: Redis、Memcache

Guava Cache

借鉴了ConcurrencyHashMap的设计思想


Memcache


Redis

Redis的系列文章,请参考我的Redis专栏 Redis手札


0 人点赞