workman 和swoole 有哪些区别和异同

workerman和swoole在现阶段很受争议,有时间你得认识认识,不然你就不是混php圈子的。swoole是使用C语言实现的socket通信框架,workerman则是使用纯php实现的socket框架,二者进程模型上也存在很多的不同。

先说下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


很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的加群(点击→)677079770

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容