swoole进程模型结构
Swoole拥有4种进程
- Master进程:主进程
- Manger进程:管理进程
- Worker进程:工作进程
- Task进程:异步任务工作进程
1. Master进程
Master进程,这个是swoole的主进程, 这个进程是用于处理swoole的核心事件驱动,在这个进程中拥有1个MainReactor(主线程)和若干个Reactor(线程)。swoole所有对于事件的监听都会在这些线程中实现, 比如来自客户端,信号处理等
1.1 MainReactor(主线程)
主线程会负责监听Server Socket,如果有新的连接,主线程会评估每个Reactor线程的连接数量。将此连接分配给连接数最少的Reactor线程,做一个负载均衡。
1.2 Reactor (线程组)
Reactor线程负责维护客户端机器的TCP连接、处理网络IO和收发数据, 这些操作都是异步非阻塞的。
swoole的主线程在接收到新的连接后,会将这个连接分配给一个固定的Reactor线程,在Socket可读状态下读取数据并进行协议解析,然后将请求投递到Worker进程中处理。在Socket可写状态下将数据发送给TCP客户端。
1.3 心跳包检测线程
Swoole配置了心跳检测之后,心跳包线程会在设置好的固定时间内对所有之前在线的连接
发送检测数据包对连接客户端进行检测
1.4 UDP收包线程
未完待续…