swoole(PHP异步网络通信引擎)的结构和运行流程

swoole结构说明和运行流程



主要分为三个部分:


1.Master:swoole的主进程

1
处理swoole核心的事件驱动, 它包含多个线程(蓝色Reactor), 所有事件的监听都在Reactor实现,如 客户端链接,本地通讯管道,异步操作文件都会在这里注册

2.Manager: 管理进程

1
用于worker和taker的创建和管理

3.worker和task进程:

1
2
worker进程: swoole主逻辑进程,用于处理客户端的请求
task进程:异步工作进程,主要处理耗时长的同步任务

进程与进程之间的通信基于管道来实现的, 当Reactor接受到客户端的数据时, 这些数据通过管道发送给worker进程处理,
当worker需要投递task任务时,也是通过管道来传递.


整个运行流程


一个新客户端连接时 首先会被Main Reactor线程接受到,将这个连接读写操作的监听注册到 新reactor线程当中,并通知worker进程处理相应的connect的回调,如果worker需要投递任务的话,会把数据发送task进程,task进程处理完返回给worker, worker通知reactor发送数据给客户端.


当worker线程出现意外,manager会重新创建一个worker,保证整个流程worker进程数是固定的