跳转至

如何理解分布式、高并发、多线程?

一、三者关系

它们不是同一维度的概念:

  • 多线程:单机层面,利用多核 CPU 提高吞吐。
  • 高并发:一种系统状态,单位时间请求量大。
  • 分布式:一种架构手段,把系统拆到多台机器。

二、多线程

单机内的并发执行。目的:

  • CPU 密集型:用多核,减少计算时间。
  • IO 密集型:一个线程等 IO 时,另一个线程用 CPU。

:线程安全、上下文切换、线程数不能无限多。

三、高并发

系统同时处理大量请求的能力。常见指标:QPS、TPS、响应时间。

应对高并发的手段:

  1. 缓存:Redis、本地缓存。
  2. 异步:MQ 削峰。
  3. 水平扩展:加机器。
  4. 优化:SQL、JVM、代码。
  5. 限流降级:保护系统。

四、分布式

把一个系统拆成多个节点,通过网络协作。目的:

  • 突破单机性能瓶颈。
  • 高可用(一台挂了还有其他)。

代价:

  • 网络不可靠。
  • 数据一致性。
  • 分布式事务。
  • 运维复杂。

五、三者如何配合

用户请求
负载均衡(多台应用)
应用内部用多线程处理(Tomcat 线程池)
热点数据走缓存(Redis 集群)
写操作走 MQ 异步
数据库(分库分表)

六、一个例子:秒杀

  • 多线程:Tomcat 用线程池同时处理几千个请求。
  • 高并发:瞬间 10w QPS,用 Redis 预减库存、MQ 削峰。
  • 分布式:应用部署多台,Redis 集群,DB 分库分表。

七、误区

  • "用了多线程就能扛高并发"——错。单机 CPU、内存、DB 都是瓶颈。
  • "上分布式就能解决一切"——错。分布式带来复杂度,能用单机 + 缓存解决就不要拆。
  • "线程越多越快"——错。上下文切换开销、内存占用。

面试答题框架

问这三个概念时,答:多线程是单机手段,高并发是目标状态,分布式是架构手段,三者层层配合。