高并发是什么意思(高并发与多线程之间的关系与区别)

6727 鄂含雁
摘要:高并发(HighConcurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求。

我们经常听到高并发,却不知道高并发与多线程的关系,以及真正的高并发应该如何设计技术方案,以及高并发与多线程之间的关系与区别。

01、什么是高并发

高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求。

例如:12306的抢票情况;天猫双十一活动。

该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。高并发代表的是一类并发量高的业务场景,背后需要强力技术来支撑。

02、高并发的核心指标

高并发相关常用的一些指标有:

1.响应时间(Response Time)

响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。

该请求可以是任何东西,从内存获取,磁盘IO,复杂的数据库查询或加载完整的网页。

例如:系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。

2.吞吐量(Throughput)

系统吞吐量指的是:系统在单位时间内可处理的事务的数量,是用于衡量系统性能的重要指标。

举一个生活中的例子,一说就懂。

比如:成都双流国际机场年旅客吞吐量达4011.7万人次,这里的系统单位时间就是年,完成的数量这里就是飞行人数。

上面谈到的是机场的吞吐量,而系统吞吐量指的是系统。

比如:服务器在单位时间内可处理的事务的数量,是一个评估系统承受力的重要指标。

3.每秒查询率QPS(Query Per Second)

QPS:简要意思就是“每秒查询率”。

QPS是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

4.并发用户数

并发用户数:同时承载正常使用系统功能的用户数量。

并发,指的是多个事情,在同一段时间段内发生了,大家都在争夺统一资源。

例如:抖音在线用户,同时在线量一定程度上代表了系统的并发用户数。

03、高并发与多线程关系

“高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程

1.多线程

多线程是java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务,为了提高jvm的执行效率,java提供了这种多线程的机制,以增强数据处理效率。

在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。

虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU。

如下图所示:

并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。

再后来发展到多线程技术,使得在一个程序内部能拥有多个线程并行执行。

一个线程的执行可以被认为是一个CPU在执行该程序,当一个程序运行在多线程下,就好像有多个CPU在同时执行该程序。

总之,多线程即可以这么理解:多线程是处理高并发的一种编程方法,即并发需要用多线程实现。

2.高并发

高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。

典型的场景,天猫双十一秒杀活动,该情况的发生会导致系统在这段时间内执行大量操作。

例如:对资源的请求,数据库的操作等。

如果高并发处理不好,不仅仅降低了用户的体验度,比如:请求响应时间过长,同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。

如果要想系统能够适应高并发状态,则需要从各个方面进行系统优化。

例如:硬件、网络、系统架构、开发语言的选取、算法优化、数据库优化、消息中间件、缓存等……而多线程只是其中解决方法之一。

相关文章

发表评论

登录后才能评论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至154386093@qq.com举报,一经查实,本站将立刻删除。