Karp 的技术博客

2024-11-16T02:17:55.png

收藏一下 总是忘记这张图 .

Swoole 进程模型

从上图中可以看出,Swoole 在启动后会创建 Master 进程和 Manager 进程。Master 进程会创建 Master 线程、Reactor 线程、心跳检测线程等,Manager 进程会创建 Worker 进程和 Task 进程。

Swoole 的线程和进程之间分别有什么作用呢?

Master 进程这个进程是 swoole 的核心进程,也是一个多线程的进程,一个 Master 线程和多个 Reactor 进程,Reactor 线程的数量可以配置。

Master 线程 Master 线程用于 accept 新的连接,然后会评估每个 Reactor 线程维护的连接数,最后将这个新的连接分配给连接数量最少的那个 Reactor 线程,从而保证每个 Reactor 线程的负载量是均衡的。Master 线程还负责对所有信号的接管(包括请求处理、重启进程、重载配置等),避免 Reactor 线程收到信号的打扰中断。

Reactor 线程当一个 socket 可读或可写的时候,就由 Reactor 线程将事件转发给 worker 进程。

Manager 进程 Manager 进程管理着 Worker 进程和 Task 进程,Worker 进程和 Task 进程是由 Manager 进程 fork 出来的。Manager 进程会监管 Worker 进程和 Task 进程的状态,当他们意外挂掉时,Manager 进程会重新拉起新的进程,Manager 进程还负责 Worker 进程和 Task 进程的平滑重启。

Worker 进程 Worker 进程是由 Manager 进程 fork 而来,用于处理具体的业务逻辑。Worker 进程可以用同步的方式去干活,也可以用异步的方式去干活。

Task 进程 Task 进程是一种特殊的 Worker 进程,专门用于处理一些比较耗时的操作。Task 进程只能工作在同步的方式下,不能使用异步。所以 Task 进程中不能使用定时器,而 Worker 进程可以。

swoole

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年11月16日 02:23
2

目录

来自 《Swoole 进程模型》