进程、线程、协程:后端服务到底是怎么处理并发请求的?

进程、线程、协程:后端服务到底是怎么处理并发请求的? 在上一篇 《理解并发:一个 HTTP 请求到后端到底发生了什么?》 我们从一个 HTTP 请求出发,理解了并发最基本的概念: HTTP 请求 ↓ Web Server ↓ 后端服务 ↓ CPU / IO ↓ MySQL / Redis / RPC ↓ HTTP 响应 但这里留下了一个非常重要的问题: 后端服务到底由谁来执行这些请求? 如果同时来了 1000 个 HTTP 请求,服务器是不是创建 1000 个进程? 如果不是,是不是创建 1000 个线程? 如果也不是,那么一个线程又是怎么处理大量请求的? 要回答这些问题,就必须理解后端程序最核心的三个执行概念: 进程 线程 协程 1. 先建立一个整体认识 可以先把三者理解成三个不同层次的概念: 进程 │ ├── 线程 │ │ │ ├── 协程 │ ├── 协程 │ └── 协程 │ └── 线程 但这里有一个需要特别注意的地方: 协程并不是操作系统进程或线程的同级概念。 进程和线程主要属于操作系统调度与资源管理层面;协程通常是由运行时、语言、框架或用户态库提供的更轻量级执行机制。 因此:...

2024年06月17日 · 5 min · Leanku