如何理解分布式、高并发、多线程?¶
一、三者关系¶
它们不是同一维度的概念:
- 多线程:单机层面,利用多核 CPU 提高吞吐。
- 高并发:一种系统状态,单位时间请求量大。
- 分布式:一种架构手段,把系统拆到多台机器。
二、多线程¶
单机内的并发执行。目的:
- CPU 密集型:用多核,减少计算时间。
- IO 密集型:一个线程等 IO 时,另一个线程用 CPU。
坑:线程安全、上下文切换、线程数不能无限多。
三、高并发¶
系统同时处理大量请求的能力。常见指标:QPS、TPS、响应时间。
应对高并发的手段:
- 缓存:Redis、本地缓存。
- 异步:MQ 削峰。
- 水平扩展:加机器。
- 优化:SQL、JVM、代码。
- 限流降级:保护系统。
四、分布式¶
把一个系统拆成多个节点,通过网络协作。目的:
- 突破单机性能瓶颈。
- 高可用(一台挂了还有其他)。
代价:
- 网络不可靠。
- 数据一致性。
- 分布式事务。
- 运维复杂。
五、三者如何配合¶
六、一个例子:秒杀¶
- 多线程:Tomcat 用线程池同时处理几千个请求。
- 高并发:瞬间 10w QPS,用 Redis 预减库存、MQ 削峰。
- 分布式:应用部署多台,Redis 集群,DB 分库分表。
七、误区¶
- "用了多线程就能扛高并发"——错。单机 CPU、内存、DB 都是瓶颈。
- "上分布式就能解决一切"——错。分布式带来复杂度,能用单机 + 缓存解决就不要拆。
- "线程越多越快"——错。上下文切换开销、内存占用。
面试答题框架
问这三个概念时,答:多线程是单机手段,高并发是目标状态,分布式是架构手段,三者层层配合。