并发编程-24 高并发处理手段之扩容思路 + 缓存思路
文章目录
- 概述
- 扩容思路
- 垂直扩展(纵向扩展)
- 水平扩展(横向扩展)
- 缓存思路
- 缓存特征
- 缓存命中率影响因素
- 缓存分类和应用场景
- 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 高并发处理手段之扩容思路 + 缓存思路相关推荐
- 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表
文章目录 服务降级与服务熔断概述 服务降级举例 服务熔断 VS 服务降级 服务降级要考虑的问题 Hystrix 数据库切库分库分表 高可用的一些手段 服务降级与服务熔断概述 服务熔断: 一般是指软件系 ...
- 并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路
文章目录 概述 消息队列 消息队列特性 为什么需要消息队列 消息队列的好处 消息队列举例 应用拆分 应用拆分的原则 应用拆分的思考 应用拆分常用的组件 Dubbo Spring Cloud 应用限流 ...
- Java 高并发_JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过!...
JAVA并发编程与高并发解决方案 JAVA高并发项目实战课程 没有项目经验的朋友不要错过! 1.JPG (37.82 KB, 下载次数: 0) 2018-12-3 09:40 上传 2.JPG (28 ...
- JavaWeb 并发编程 与 高并发解决方案
在这里写写我学习到和自己所理解的 Java高并发编程和高并发解决方案.现在在各大互联网公司中,随着日益增长的互联网服务需求,高并发处理已经是一个非常常见的问题,在这篇文章里面我们重点讨论两个方面的问题 ...
- 01 - Java并发编程与高并发解决方案笔记-基础篇
01 - Java并发编程与高并发解决方案笔记-基础篇 基础篇很重要!很重要!很重要!!!一定要理解和认真思考. 01 - Java并发编程与高并发解决方案笔记-基础篇 1.课程准备 2.并发编程基础 ...
- 《Java并发编程入门与高并发面试》or 《Java并发编程与高并发解决方案》笔记
<Java并发编程入门与高并发面试>or <Java并发编程与高并发解决方案>笔记 参考文章: (1)<Java并发编程入门与高并发面试>or <Java并发 ...
- java并发编程与高并发解决方案
知识点 线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,J.U.C,等等 高并发解决思路与手段 扩容:水平扩容.垂直扩容 缓存:Redis.Memcache.GuavaCache等 队列:K ...
- 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...
不知道从什么时候起,在Java编程中,经常听到Java集合类,同步容器.并发容器,高并发编程成为当下程序员需要去了解掌握的技术之一,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理 ...
- 高并发编程_高并发编程系列:全面剖析Java并发编程之AQS的核心实现
在并发编程领域,AQS号称是并发同步组件的基石,很多并发同步组件都是基于AQS实现,所以想掌握好高并发编程,你需要掌握好AQS. 本篇主要通过对AQS的实现原理.数据模型.资源共享方式.获取锁的过程, ...
最新文章
- 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...
- 这三天低效率开发的总结,我都做了些什么啊?
- Go并发编程之美-Load/Store操作
- python序列类型-Python内置序列类型之集合类型详解
- PAT甲级1146 Topological Order :[C++题解]拓扑排序、结构体存边、图论
- 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
- xp2003服务器怎么安装系统,UEFI里启动Windows XP/Server 2003 x86教程
- spring mvc原理_Spring常见问题整理
- oracle po:默认申请分组,PR自动创建PO采购订单:强制按照PR行进行分组
- 异步是javascript的精髓
- SI 9000 及阻抗匹配学习笔记(二)
- C语言实现strcmp函数
- 长春高中计算机考试时间安排,2019年长春中考考试时间安排,长春中考考试科目时间安排表...
- java中三个点的用法
- mmgrid cols表头列隐藏
- python制作微信个人二维码怎么做_如何用Python制作微信的好友背景墙?
- AI---人工智能学习
- 关于极光推送报错6003的一些问题
- 深入分析ClassLoader
- 大数据——Flume安装配置和使用
热门文章
- vector的元素不仅仅可以使int,double,string,还可以是结构体
- python浮点数运算问题_python基础教程之. 浮点数运算:问题和局限
- win7磁盘清理_window7越来越卡?系统残余文件太多,磁盘清理可以搞定!!
- Leetcode 18. 四数之和 (每日一题 20211011)
- Leetcode 155. 最小栈 (每日一题 20210923)
- 数组中子数组的最大累乘积
- pyecharts 应用5:视觉映射配置项VisualMapOpts
- 文巾解题 196. 删除重复的电子邮箱
- Python爬虫应用实战案例-xpath正则表达式使用方法,爬取精美壁纸
- 自然语言处理NLP,如何使用AMBERT算法建立多粒度token预训练语言模型