并发
mischen520
JAVA高级架构师
展开
-
如何设计一个秒杀系统
1.服务单一职责+独立部署(秒杀服务即使自己扛不住压力,挂掉了,不能影响其他系统)2.秒杀链接加密防止恶意攻击,模拟秒杀请求,1000次/s攻击,防止链接暴露,自己的工作人员,提前秒杀商品3.库存预热+快速扣减(秒杀读多写少,无需每次实时请求校验库存,我们把库存预热,放到redis中,信号量控制进来秒杀的请求)4.动静分离nginx做好动静分离,保证秒杀和商品详情页的动态请求才能打到后端的集群服务,使用CDN网络,分担集群的压力5.恶意请求拦截 网关层识别非法请求并进行拦截6.流量错峰 使用各种手原创 2021-12-11 20:54:48 · 418 阅读 · 0 评论 -
并发、并行、串行的区别
串行在时间上不可能发生重叠,前一个任务没搞定,下一个任务就只能等着并行在时间上是重叠的,两个任务在同一时刻互不干扰的同时执行。并发允许两个任务彼此干扰。统一时间点、只有一个任务运行,交替执行...原创 2021-10-01 07:29:06 · 488 阅读 · 0 评论 -
并发性能调优(面试重点)
并发用户数:系统同时处理的在线用户数TPS:系统每秒钟处理完成的交易数量,它是衡量系统处理能力的重要指标交易平均响应时间:对请求做出响应所需要的平均时间,即完成一个交易的平均时间吞吐量:系统最大负载,用TPS来衡量并发用户数、TPS、交易平均响应时间和吞吐量,它们之间有关系吗?什么关系?一个系统的吞吐量是固定的瓶颈可能发生的地方:服务器硬件瓶颈、操作系统瓶颈、中间件、应用软件瓶颈、应用瓶颈系统信息包括系统运行的软硬件信息、应用的相关信息、其他信息等性能调优工具:1.系统资源监原创 2021-06-18 00:34:18 · 228 阅读 · 0 评论 -
JAVA合理设置线程池技术探究以及demo示例
最近一直在研究线程池的使用原理,做过开发的同事都知道,要设置合理的线程池需要考虑的因素太多,特别是高并发情况下,如果不合理的设置线程池数量,有可能会导致生产上面出现各种问题,比如cpu内存飙升,报线程池拒绝策略等等。那么,怎么来合理设置线程池大小呢?这里,我们就要先来说说服务器的分类了,一般来说,linux服务器可以分为2种类型,一种是CPU密集型,一种是IO密集型,CPU密集的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行CPU密集任务只有在真正多核CPU上才可能得到加速(通过多原创 2021-03-21 08:43:28 · 156 阅读 · 0 评论 -
线程池ThreadPoolExecutor详解以及用法示例-详细的执行流程和内部解剖
1.先看一个面试题如果corepollSize=10,MaxPollSize=20,如果来了40个线程 怎么办?要想回答这一个问题,其实不难,只要了解了线程池内部的工作原理就知道怎么回答了。先来看看线程池的整个运行机制:当一个任务通过execute(Runnable)方法欲添加到线程池时: 1、 如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。 2、 如果此时线程池中的数量等于 corePoolSize,但是缓冲队列原创 2021-03-20 09:19:19 · 1451 阅读 · 0 评论