先说下swoole的进程模型,看一下以下解析图。
master进程
这个进程比较繁芜,也是我认为最核心的进程,这是一个包含多线程的进程,分别是一个主线程和n个reactor线程(数量可以配置)。个中,主线程用于accept新的连接,然后评估一下每个reactor线程卖力掩护的连接数,然后分配给数量最少的那个reactor线程,最大程度担保每个reactor线程的负载量是均衡的。实质上讲,一旦一个socket可读或者可写了,就由reactor线程发送给worker进程或者发送会客户端。除此之外,主线程还卖力对所有旗子暗记的接管,避免reactor线程收到旗子暗记的打扰中断。说的洋气点儿便是:master进程卖力了连接的accept、托管、socket的可读可写(数据的发送和接管),实质上讲,master进程卖力了IO。还须要把稳一点儿的是reactor线程是彻底的全异步非壅塞事情办法。

manager进程
manager进程是worker进程和taskworker进程的妈,说的洋气点儿便是manager进程fork出来了worker进程和taskworker进程,生出来了就得管,以是,manager进程得卖力对worker进程和taskworker进程的抚养责任,详细包括监控它们的状态、当它们意外挂了后重新拉起一个新的进程(避免了僵尸进程)、平滑重启(便是传说中的reload)。
worker进程
worker进程是manager进程fork出来的,这个进程说白了便是搬砖干活(官方文档中屡次提到的业务代码),实在便是平时码的那些curd业务逻辑代码,懂了吧?只不过worker进程比较diao的是,这个进程可以用异步办法去事情,也可以用同步办法去事情。如果听不懂什么意思,那就先背过,先混个脸熟再说。
taskworker进程
taskworker进程(后文中称tasker进程)实际实质上也是worker进程,只不过是一种分外的worker进程。如果你的worker进程中存在一些耗时耗力的操作,那么可以先抛给tasker进程,自己先去干别的,等tasker干完了,再由worker进程取回,非常diao。但是tasker进程只能事情在同步办法下,并不能利用异步。这便是为什么tasker进程不可以利用定时器,而worker进程可以利用定时器的缘故原由。
大略总结混在一起说下这几种进程之间是怎么搭配起来干活的。见说来说,便是master进程便是接活儿的发卖,但是详细干活则由worker进程来做,如果worker进程觉得到某些流程太繁忙繁芜就可以让tasker进程来做。而manager进程便是后勤worker进程和takser进程的人力资源保障部,卖力他们的死活存亡和吃喝拉撒。
而workerman的进程模型相对就要大略很多了,首先相对付swoole来说,workerman没有swoole中的reator线程,其次workerman没有用于处理普通业务的worker进程以及tasker进程。而workerman的话,socket是由worker进程卖力的,swoole中则是由主进程中的reactor线程来卖力的。而swoole在接管到数据后,可以通过自己的worker进程来处理业务(有点儿类似于fpm进程)。
workerman是一个高性能的PHP socket 做事器框架,workerman基于PHP多进程以及libevent事宜轮询库,PHP开拓者只要实现一两个接口,便可以开拓出自己的网络运用,例如Rpc做事、谈天室做事器、手机游戏做事器等。
workerman的目标是让PHP开拓者更随意马虎的开拓出基于socket的高性能的运用做事,而不用去理解PHP socket以及PHP多进程细节。 workerman本身是一个PHP多进程做事器框架,具有PHP进程管理以及socket通信的模块,以是不依赖php-fpm、nginx或者apache等这些容器便可以独立运行
个中
workerman有两种进程模型
1、基本的master worker模型
2、master gateway worker模型
master worker模型事情流程及进程间关系如下:
master worker模型解释:
master进程为主进程,启动过程中读取conf配置,根据每个运用配置中的ip和端口创建监听socket,然后再根据配置中的进程数创建对应数量的子进程即worker进程,worker进程会自动继续master进程创建的监听socket,使得worker进程能够独立的接管并处理客户真个连接。而后master进程进入监听旗子暗记的逻辑中,监听worker进程退出旗子暗记(worker进程退出后,系统会自动向master进程发送一个SIGHCLD旗子暗记,mater进程会重新创建子进程,将缺失落的子进程补上),master进程还会监听workermand脚本发来的停滞旗子暗记(SIGINT)和平滑重启做事旗子暗记(SIGHUP)
worker进程为master进程派生出来的子进程,自动继续了master进程的监听socket,每个worker进程独立的接管并处理客户真个连接。
master worker模型比较适宜业务大略的运用或者短连接运用
master gateway worker模型事情流程和进程间关系如下:
master gateway worker 模型解释:
这种模型多了一个gateway进程组,事情流程与master worker模型基本相同,差异是worker进程不再直接与客户端打交道,客户端与worker进程之间多了一个gateway进程,gateway专职处理网络IO,并掩护客户真个长连接。
master gateway worker 模型非常适宜长连接运用
当我们业务代码以同步壅塞办法来利用swoole和workerman的时候,swoole则很想nginx+fpm的二合一体,而workerman则只相称于nginx