Swoole Server 的两种运行模式介绍

在 Swoole\Server 构造函数的第三个参数,可以填 2 个常量值 -- SWOOLE_BASE 或 SWOOLE_PROCESS,下面将分别介绍这两个模式的区别以及优缺点

SWOOLE_PROCESS

SWOOLE_PROCESS 模式的 Server 所有客户端的 TCP 连接都是和主进程建立的,内部实现比较复杂,用了大量的进程间通信、进程管理机制。适合业务逻辑非常复杂的场景。Swoole 提供了完善的进程管理、内存保护机制。 在业务逻辑非常复杂的情况下,也可以长期稳定运行。

Swoole 在 Reactor 线程中提供了 Buffer 的功能,可以应对大量慢速连接和逐字节的恶意客户端。

进程模式的优点:

  • 连接与数据请求发送是分离的,不会因为某些连接数据量大某些连接数据量小导致 Worker 进程不均衡
  • Worker 进程发送致命错误时,连接并不会被切断
  • 可实现单连接并发,仅保持少量 TCP 连接,请求可以并发地在多个 Worker 进程中处理

进程模式的缺点:

  • 存在 2 次IPC 的开销,master 进程与 worker 进程需要使用 unixSocket 进行通信

SWOOLE_BASE

SWOOLE_BASE 这种模式就是传统的异步非阻塞 Server。与 Nginx 和 Node.js 等程序是完全一致的。

worker_num 参数对于 BASE 模式仍然有效,会启动多个 Worker 进程。

当有 TCP 连接请求进来的时候,所有的 Worker 进程去争抢这一个连接,并最终会有一个 worker 进程成功直接和客户端建立 TCP 连接,之后这个连接的所有数据收发直接和这个 worker 通讯,不经过主进程的 Reactor 线程转发。

  • BASE 模式下没有 Master 进程的角色,只有 Manager 进程的角色。
  • 每个 Worker 进程同时承担了 SWOOLE_PROCESS 模式下 Reactor 线程和 Worker 进程两部分职责。
  • BASE 模式下 Manager 进程是可选的,当设置了 worker_num=1,并且没有使用 Task 和 MaxRequest 特性时,底层将直接创建一个单独的 Worker 进程,不创建 Manager 进程

BASE 模式的优点:

  • BASE 模式没有 IPC 开销,性能更好
  • BASE 模式代码更简单,不容易出错

BASE 模式的缺点:

  • TCP 连接是在 Worker 进程中维持的,所以当某个 Worker 进程挂掉时,此 Worker 内的所有连接都将被关闭
  • 少量 TCP 长连接无法利用到所有 Worker 进程
  • TCP 连接与 Worker 是绑定的,长连接应用中某些连接的数据量大,这些连接所在的 Worker 进程负载会非常高。但某些连接数据量小,所以在 Worker 进程的负载会非常低,不同的 Worker 进程无法实现均衡。
  • 如果回调函数中有阻塞操作会导致 Server 退化为同步模式,此时容易导致 TCP 的 backlog 队列塞满问题。

BASE 模式的适用场景:

如果客户端连接之间不需要交互,可以使用 BASE 模式。如 Memcache、HTTP 『服务器』等。

特别声明:[Swoole Server 的两种运行模式介绍] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

天坛公园曾藏着一座“细菌工厂” 日军侵华罪行见证地(天坛公园曾藏着什么文物)

红墙灰瓦的院落里,矗立着一棵600多年的参天古槐,耳畔鸟鸣啾啾。这棵名为“神乐槐”的古树见证了明清帝王祭天祈谷的虔诚,也在历史更迭中泣诉一段战争罪行。天坛是世界现存规模最大、保存最完整的古代皇家祭天建筑群,每年吸引无数中外游客参观

天坛公园曾藏着一座“细菌工厂” 日军侵华罪行见证地(天坛公园曾藏着什么文物)

他是梁山最窝囊的好汉,默许妻子与他人私通,一上战场便沦为炮灰(他是梁山108将之一绰号是)

尽管风雪山神庙这样的经典场景是由他一手创造的,但他的故事中,也充满了无奈和屈辱。尽管林冲如此窝囊,但他毕竟是梁山五虎之一,并在后来的战斗中立下了赫赫战功。 杨雄最后一次出现在战场上是在原著的第一…

他是梁山最窝囊的好汉,默许妻子与他人私通,一上战场便沦为炮灰(他是梁山108将之一绰号是)

黑洞:宇宙深渊的引力之谜(宇宙黑洞科普)

目前,科学家主要依靠探测黑洞对周围物质产生的引力效应、吸积盘辐射☢️以及引力波等间接方式来推断其存在与性质。黑洞通常是通过它们聚拢周围气体产生辐射☢️而被发现的,这一过程被称为吸积。对黑洞的深入研究,不仅有助于理解星…

黑洞:宇宙深渊的引力之谜(宇宙黑洞科普)

亲历者称海滩枪击持续5分钟未间断 12人遇难恐怖袭击(亲历者称海滩枪手是谁)

当地时间12月14日,澳大利亚邦迪滩发生枪击事件,造成12人死亡。澳大利亚警方将此次事件定性为恐怖袭击,并正在进行彻底调查。现场视频显示,两名蒙面男子向人群开枪射击,持续了约10分钟,有目击者形容现场“绝对是人间炼狱”

亲历者称海滩枪击持续5分钟未间断 12人遇难恐怖袭击(亲历者称海滩枪手是谁)

智能汽车必备:2025款多功能安全锤真的有必要吗?(智能汽车啥意思)

汽车安全锤作为车辆应急必备工具,在意外发生时能够挽救生命。但市场上的产品琳琅满目,如何挑选适合自己的多功能安全锤呢?本文从选购标准、实际应用场景、预算权衡等多个角度深入解读,助您选对好工具。 本文详细阐述了汽车安全锤的多功能用途,包括紧急情

智能汽车必备:2025款多功能安全锤真的有必要吗?(智能汽车啥意思)