理解并发:一个 HTTP 请求到后端到底发生了什么?
理解并发:一个 HTTP 请求到后端到底发生了什么? 在开发后端系统时,我们经常会看到这样的描述: “这个接口支持 1000 并发。” 但“1000 并发”到底意味着什么? 是不是意味着服务器同时启动 1000 个线程? 是不是意味着 CPU 同时执行 1000 个请求? 如果一个请求正在等待 MySQL,CPU 又在做什么? 一个 PHP/Hyperf 服务为什么可以同时处理大量 HTTP 请求? 要真正理解高并发,不能一开始就从 QPS、限流、缓存这些概念入手,而应该先理解一个最基本的问题: 一个 HTTP 请求进入后端以后,到底发生了什么? 1. 先理解什么是并发 并发(Concurrency)描述的是: 多个任务在同一个时间段内处于进行状态,并且它们的执行过程存在交错。 并发和并行(Parallelism)不是同一个概念。 例如: 任务 A:████████ 任务 B: ████████ 两个任务都在进行,但可能只有一个 CPU 核心。 CPU 可以先执行 A: A A A A 然后因为 A 正在等待 IO,转而执行 B: A A → 等待 ↓ B B B B 这属于并发。 如果机器有多个 CPU 核心: CPU Core 1:A A A A CPU Core 2:B B B B 两个任务可以在同一时刻真正执行,这才是并行。...