文章目录

  • 概述
  • 扩容思路
    • 垂直扩展(纵向扩展)
    • 水平扩展(横向扩展)
  • 缓存思路
    • 缓存特征
    • 缓存命中率影响因素
    • 缓存分类和应用场景
      • 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手札


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

  1. 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表

    文章目录 服务降级与服务熔断概述 服务降级举例 服务熔断 VS 服务降级 服务降级要考虑的问题 Hystrix 数据库切库分库分表 高可用的一些手段 服务降级与服务熔断概述 服务熔断: 一般是指软件系 ...

  2. 并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路

    文章目录 概述 消息队列 消息队列特性 为什么需要消息队列 消息队列的好处 消息队列举例 应用拆分 应用拆分的原则 应用拆分的思考 应用拆分常用的组件 Dubbo Spring Cloud 应用限流 ...

  3. Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...

    JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...

  4. JavaWeb 并发编程 与 高并发解决方案

    在这里写写我学习到和自己所理解的 Java高并发编程和高并发解决方案.现在在各大互联网公司中,随着日益增长的互联网服务需求,高并发处理已经是一个非常常见的问题,在这篇文章里面我们重点讨论两个方面的问题 ...

  5. 01 - Java并发编程与高并发解决方案笔记-基础篇

    01 - Java并发编程与高并发解决方案笔记-基础篇 基础篇很重要!很重要!很重要!!!一定要理解和认真思考. 01 - Java并发编程与高并发解决方案笔记-基础篇 1.课程准备 2.并发编程基础 ...

  6. 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记

    <Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...

  7. java并发编程与高并发解决方案

    知识点 线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,J.U.C,等等 高并发解决思路与手段 扩容:水平扩容.垂直扩容 缓存:Redis.Memcache.GuavaCache等 队列:K ...

  8. 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...

    不知道从什么时候起,在Java编程中,经常听到Java集合类,同步容器.并发容器,高并发编程成为当下程序员需要去了解掌握的技术之一,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理 ...

  9. 高并发编程_高并发编程系列:全面剖析Java并发编程之AQS的核心实现

    在并发编程领域,AQS号称是并发同步组件的基石,很多并发同步组件都是基于AQS实现,所以想掌握好高并发编程,你需要掌握好AQS. 本篇主要通过对AQS的实现原理.数据模型.资源共享方式.获取锁的过程, ...

最新文章

  1. 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...
  2. 这三天低效率开发的总结,我都做了些什么啊?
  3. Go并发编程之美-Load/Store操作
  4. python序列类型-Python内置序列类型之集合类型详解
  5. PAT甲级1146 Topological Order :[C++题解]拓扑排序、结构体存边、图论
  6. 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
  7. xp2003服务器怎么安装系统,UEFI里启动Windows XP/Server 2003 x86教程
  8. spring mvc原理_Spring常见问题整理
  9. oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组
  10. 异步是javascript的精髓
  11. SI 9000 及阻抗匹配学习笔记(二)
  12. C语言实现strcmp函数
  13. 长春高中计算机考试时间安排,2019年长春中考考试时间安排,长春中考考试科目时间安排表...
  14. java中三个点的用法
  15. mmgrid cols表头列隐藏
  16. python制作微信个人二维码怎么做_如何用Python制作微信的好友背景墙?
  17. AI---人工智能学习
  18. 关于极光推送报错6003的一些问题
  19. 深入分析ClassLoader
  20. 大数据——Flume安装配置和使用

热门文章

  1. vector的元素不仅仅可以使int,double,string,还可以是结构体
  2. python浮点数运算问题_python基础教程之. 浮点数运算:问题和局限
  3. win7磁盘清理_window7越来越卡?系统残余文件太多,磁盘清理可以搞定!!
  4. Leetcode 18. 四数之和 (每日一题 20211011)
  5. Leetcode 155. 最小栈 (每日一题 20210923)
  6. 数组中子数组的最大累乘积
  7. pyecharts 应用5:视觉映射配置项VisualMapOpts
  8. 文巾解题 196. 删除重复的电子邮箱
  9. Python爬虫应用实战案例-xpath正则表达式使用方法,爬取精美壁纸
  10. 自然语言处理NLP,如何使用AMBERT算法建立多粒度token预训练语言模型