Java高并发解决方案:Java处理高并发的3种方案

教育行业A股IPO第一股(股票代码003032)

全国咨询/投诉热线:400-618-4000

高并发是互联网应用的一大特色,也是互联网应用不可避免的问题;比如淘宝双11、京东618、12306春节火车票,促销、秒杀等等。

QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。

并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

此种场景就是非常有特点的高并发场景,如果不对流量进行合理管控,肆意放任大流量冲击系统,那么将导致一系列的问题出现,比如一些可用的连接资源被耗尽、分布式缓存的容量被撑爆、数据库吞吐量降低,最终必然会导致系统产生雪崩效应。

一般来说,大型互联网站通常采用的做法是通过扩容、动静分离、缓存、服务降级及限流五种常规手段来保护系统的稳定运行。

1.限流

在讨论为什么需要限流之前,我们先聊一聊生活中那些随处可见的限流场景。

上面两张图片就展示了地铁拥挤的场景,如果这所有的人全部涌入站台,那么会造成更多的人无法上车,所以采取了管制之后,我们可以让人们通过地面和站厅层的双重排队等待,减轻站台的压力,保证每一位乘客最终都能顺利的上车。

在电商系统的秒杀中,也会有大批量的用户同时涌入,鉴于只有少部分用户能够秒杀成功,所以要限制大部分流量,只允许少部分流量进入服务后端。

例如tomcat的配置:

其中最后两个参数意义如下:

maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

这两个值如何起作用,请看下面三种情况

情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。

情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。

情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connectionrefused。

2.页面静态化

首先我们可以使用Freemarker对页面进行静态化,让用户减少跟后端服务器之间的交互。这样就能降低服务器的压力,如果条件允许我们可以采用CDN加速。

Freemarker的原理如下图,模板+数据通过Freemarker可以生成静态页面。

CDN是将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。

例如下图:北京网民会自动访问到离自己最近并且速度最快的服务器的资源。

3.引入Redis

限流和静态化都是为了减轻服务器后端的压力,但是最终用户的请求还是会落到服务器中,为了增加用户的体验度,我们也应加快相应速度。后端代码和数据库之间的交互会降低相应速度,所以我们可以采用Redis来进行数据的高速读取。

Redis是一款极其优秀的内存级别的NoSql数据库,单线程下读写速度能达到5w/s。所以我们在很多情况下都能利用Redis去解决高速读取的问题。

特别是库存量的超卖现象,我们可以在开始秒杀的时候,把总的库存量存入Redis中,每当用户来抢购时,利用String类型的decr方法去减一,如果减一成功就视认为抢够成功,并把用户和商品信息存入Redis的订单条目中,当最终抢购结束时,我们再一并把Redis的订单信息存入到数据库中。

代码参考:

代码参考:#设置总的待抢购数量为1000000setamount1000000;#抢购数量减一decramount#把用户信息存入到抢购成功的集合中,由商品ID命名来区分lpush用户ID商品ID

通过上述3种方案可以解决大部分场景下的秒杀问题,当然高并发下也会出现更多的意外的状况,那么我们可以针对自己的业务,资源的调度进行更多方位的尝试,找到最适合自己的解决方案。

THE END
1.计算机性能指标之响应时间业务操作响应时间?定义:响应时间是指从用户发出请求到系统完成处理并给出响应的时间间隔。它是衡量计算机系统性能的关键指标之一,直接关系到用户体验和系统的整体效率。 重要性:在交互式应用中,如网页浏览、在线交易等,快速的响应时间对于提高用户满意度和保持用户粘性至关重要。长时间的等待不仅会降低用户体验,还可能导致用户流失。 https://blog.csdn.net/qq_39311377/article/details/142279359
2.法规标准GB/T33577标准解读(2017版)汽车标准解读1)在报警范围的计算中,应考虑驾驶员对报警的反应时间Tresp,该值不小于0.8s; 2)在要求减速度αreq的计算中,应考虑制动系统响应时间Tb,制动系统响应时间由系统设计者选择 3)若自车驾驶员正在制动,驾驶员对报警的反应时间Tresp及制动系统响应时间Tb应被设置为0 https://www.auto-testing.net/news/show-118583.html
3.性能测试中的重要指标:响应时间并发数和每秒事务数每秒事务数是指系统每秒钟可以处理的事务的数量。对于需要快速处理大量事务的系统来说,高TPS是非常重要的。然而,和其他指标一样,提高TPS可能会导致系统的响应时间增加。 哪个指标更重要? 这三个指标都非常重要,但是具体优先关注哪个则取决于你的系统和业务需求。一般来说,如果用户体验是首要关注点,响应时间可能是最重https://cloud.tencent.cn/developer/article/2311564
4.服务端性能测试入门指南熟悉性能测试之前,首先了解性能测试的目标是什么。带着目标去思考会更有利于理解下面的内容。 5.1 性能测试目的 性能测试的最终目的是为了最大限度的满足用户的需求,通常要达成以下目标: (1)性能评估:测试中评估系统的QPS、响应时间、成功率等; (2)寻找系统瓶颈,进行系统调优; https://maimai.cn/article/detail?fid=1667027310&efid=WCR56S61YqyDjPkFq-z5zg
5.实时Linux内核的实现腾讯云开发者社区实时系统要求对事件的响应时间不能超过规定的期限,响应时间是指从某个事件发生到负责处理这个事件的进程处理完成的时间间隔,最大响应时间应该是确定的、可以预测的。 实时分为硬实时和软实时,硬实时要求绝对保证响应时间不超过期限,如果超过期限,会造成灾难性的后果,例如汽车在发生碰撞事故时必须快速展开安全气囊;软实时https://cloud.tencent.com/developer/article/1894161
6.性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何响应时间:指应用系统从发出请求开始到收到最后响应数据所需要的时间。响应时间是系统最重要的性能指标,直观的反映了系统的“快慢”。 并发数:系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。对于网站而言,并发数即系统并发用户数,指同时提交请求的用户数目,于此相对应,还有在线用户数(当前登录系统的用户数https://xie.infoq.cn/article/efdb4778c26bb79b087a5b399
7.题目系统响应时间指的是什么?百度试题 结果1 题目【题目】系统响应时间指的是什么? 相关知识点: 试题来源: 解析 【解析】 【解析】 系统的响应时间是从用户向系统发出一个作业请求开始到系统处理后给出结果的 反馈 收藏 https://easylearn.baidu.com/edu-page/tiangong/questiondetail?id=1728142304275915304&fr=search
8.QPS(TPS)并发数响应时间4、 系统中是否有不合理的内存使用方式 5、 系统中是否存在不合理的线程同步方式 6、 系统中是否存在不合理的资源竞争 那么站在性能測试project师的角度,我们要关注什么呢? 一句话。我们要关注以上全部的性能点。 二、软件性能的几个主要术语 1、响应时间:对请求作出响应所须要的时间 https://www.jianshu.com/p/405d2d8e06a8
9.使用事件系统和DMA来消除中断可实现超快响应时间和极低功耗图2,XMEGA微控制器的事件系统。 消除中断后,处理响应延迟可获减少,而且确保最多只要2个时钟周期,或者说在32 MHz 时钟频率下只需62.5 ns的时间;而最快响应时间可达到31.2 ns。实际上,在8/16位MCU上采用事件系统,响应时间较无事件系统的传统32位MCU 缩短了37倍。 http://www.chinaaet.com/article/43000
10.湿度测量的响应时间及其对测量性能产生的影响定义响应时间: 通常使用两个不同指标来定义响应时间:T63和T90。当被测参数量值有瞬时变化时,测量值需要多长时间达到醉终值的63%或90%。以下是为什么选择63%来定义响应时间的原因:T63在一阶线性时域不变系统中等于时间常数,该常数通常用希腊字母τ(tau)来表示。这个一阶线性时域不变系统的数学模型描述了某一物理https://www.chem17.com/tech_news/detail/2926262.html
11.安全系统工程知识点总结5、人的行为响应时间和系统允许的响应时间是否相容等 指导意义或作用:1、对事故调查的指导 2、对事故预防的指导:增加机械可靠性,提高操作者识别反应能力 3、对事故基本研究的指导 (2)系统理论的典型代表:瑟利模型 1)瑟利模型基本观点:瑟利把人、环境(包括机器)系统中事故发生的过程,分为是否产生迫近的危险和是否造https://www.safehoo.com/item/475493.aspx
12.什么是安全仪表系统SIS?SIS系统的实时性很好,从输入变化到输出变化的响应时间一般在50~100ms,一些小型SIS系统的响应时间更短。 6、具备顺序事件记录功能 为了更好地进行事故分析与事后追忆,SIS一般具有事件顺序记录(SOE)功能,即可按时间顺序记录各个指定输入和输出及状态变量的变化时间,记录精度一般精确到毫秒级。 https://www.yoojia.com/ask/17-11584779331446591271.html
13.什么是系统响应时间系统响应时间有哪些重要属性发布时间:2024-11-09 更多“什么是系统响应时间系统响应时间有哪些重要属性”相关的问题 第1题 一个一阶系统的重要参数是()。 A.固有频率 B.时间常数 C.阻尼比 D.响应时间 点击查看答案 第2题 《Q/GDW 1373—2013 电力用户用电信息采集系统功能规范》中,响应时间一般指系统从发送站发送信息(或命令)到https://www.kuaiwenyun.com/kuaiji/uk62qg68.html
14.什么是系统响应时间?系统响应时间有哪些重要属性?什么是系统响应时间?系统响应时间有哪些重要属性? 正确答案 系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。 系统响应时间有2个重要的属性:长度和易变性。 答案解析 略 真诚赞赏,手留余香 小额打赏 169人已赞赏https://www.examk.com/p/2582327266.html
15.什么是系统响应时间?系统响应时间有哪些重要属性?系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。 系统响应时间有2个重要的属性:长度和易变性。https://www.shuashuati.com/ti/4d9eb382b3324b18bfe2a0d93608676e.html