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

版权声明:【show me the code ,change the world】 https://blog.csdn.net/yangshangwei/article/details/88215294

概述

这里只是讲通用的思路,而不会涉及具体的代码,实际高并发的场景需要根据实际情况来决定方案。

在这里插入图片描述


扩容思路

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

垂直扩展(纵向扩展)

提高系统部件能力。

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

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

水平扩展(横向扩展)

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

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


缓存思路

缓存特征

  • 命中率: 命中数/(命中数+ 没命中数)

  • 最大元素(空间): 当缓存超出设置的容量时,会触发缓存清空策略。 因此设置合理的缓存空间,将有效的提高命中率

    扫描二维码关注公众号,回复: 5431356 查看本文章
  • 清空策略: FIFO(先进先出)、LFU(最少使用)、LRU(最近使用)、过期时间、随机清理。


缓存命中率影响因素

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

缓存分类和应用场景

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

Guava Cache

在这里插入图片描述

借鉴了ConcurrencyHashMap的设计思想


Memcache

在这里插入图片描述

在这里插入图片描述


Redis

在这里插入图片描述

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


猜你喜欢

转载自blog.csdn.net/yangshangwei/article/details/88215294