【多线程与高并发】告诉你二者的区别

高并发与多线程
本文探讨了高并发环境下系统面临的挑战及解决方案,包括CDN、分布式缓存、消息队列、应用拆分、数据库优化等策略,并阐述了高并发与多线程的区别及其应用场景。

高并发

高并发(High Concurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。

该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求、数据库的操作等。
在这里插入图片描述

1.高并发的处理指标

高并发相关常用的一些指标有:响应时间、吞吐量、每秒查询率QPS、并发用户数

  • 响应时间(Response Time)
    系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间

  • 吞吐量(Throughput)
    单位时间内处理的请求数量。

  • 每秒查询率QPS(Query Per Second)
    每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。

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

2.高并发解决方案

  • 静态资源结合CDN来解决图片文件等访问
  • 分布式缓存:redis、memcached等。
  • 消息队列中间件:activeMQ等,解决大量消息的异步处理能力。
  • 应用拆分:一个工程被拆分为多个工程部署,利用dubbo解决多工程之间的通信。
  • 数据库垂直拆分和水平拆分(分库分表)等。
  • 数据库读写分离,解决大数据的查询问题。
  • 利用nosql ,例如mongoDB配合mysql组合使用。
  • 建立大数据访问情况下的服务降级以及限流机制等。

多线程

多线程是Java的特性,因为现在cpu都是多核多线程的,可以同时执行几个任务,为了提高jvm的执行效率,Java提供了这种多线程的机制,以增强数据处理效率。多线程对应的是cpu,高并发对应的是访问请求,可以用单线程处理所有访问请求,也可以用多线程同时处理访问请求。

高并发和多线程的关系和区别

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

1.高并发场景

当我们做了一个java web项目,上线之后有大量用户登录系统,这是属于高并发,对于系统来说,会有大量的请求发过来,每个请求对应一个线程,每个线程都是独立的,【tomcat支持200-300】,虽然是同一份代码但在不同的线程中执行,互不影响。

2.多线程场景

多线程的用法要么是异步,要么是跑子任务,每个用户线程是主线程,异步就是再开了一个线程,跑子任务的目的是出现了很大的数据集,单线程跑会很慢,就拆成多个子任务,多个线程去跑,就快了。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值