swoole 高手之路
  • Introduction
  • 简介
  • 入门安装
    • php7 安装
    • swoole 安装
    • ide 提示工具安装
  • 原理概念
    • 需要掌握的基础知识
    • IO 模型
    • TCP 与 UDP
    • TCP 粘包处理
    • 同步 与 异步
    • 进程 与 线程
    • Swoole进程结构
    • swoole的运行模式
    • swoole编程注意事项
    • Socket原理
    • Libevent
  • swoole 基础
    • 网络通信引擎
      • 创建TCP服务器
      • 创建TCP客户端
      • 创建UDP服务器
      • 创建HTTP服务器
      • 创建websocket服务器
    • 异步非堵塞IO
      • 异步文件系统IO
      • 异步Mysql
      • 异步Redis
      • 异步Http/WebSocket客户端
    • 进程 内存 协程
      • swoole进程管理模块
      • swoole 内存操作模块
      • swoole 协程
    • Task进程异步任务
    • 毫秒定时器
  • swoole 高级特性
    • 心跳检测
    • 守护进程、信号和平滑重启
    • mysql连接池
  • swoole 其他
    • nginx+swoole
    • 结合传统框架
  • swoole RPC调用
  • 附录 : 其他资料
    • Zan Extension
    • 资料
Powered by GitBook
On this page
  • 异步的优势
  • 同步的优势

Was this helpful?

  1. 原理概念

同步 与 异步

PreviousTCP 粘包处理Next进程 与 线程

Last updated 5 years ago

Was this helpful?

建议编程时提前阅读官方文档章节

swoole是既支持全异步,也支持同步,同步跟异步的概念,我们需要了解

同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。

同步: 当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行。

异步:当一个异步调用发出去后,调用者不能立即得到调用结果的返回。

生活中的例子:

同步买奶茶:小明点单交钱,然后等着拿奶茶;

异步买奶茶:小明点单交钱,店员给小明一个小票,等小明奶茶做好了,再来取。

异步的优势

  • 高并发,同步阻塞IO模型的并发能力依赖于进程/线程数量,例如php-fpm开启了200个进程,理论上最大支持的并发能力为200。如果每个请求平均需要100ms,那么应用程序就可以提供2000qps。异步非阻塞的并发能力几乎是无限的,可以发起或维持大量并发TCP连接

  • 无IO等待,同步模型无法解决IOWait很高的场景,如上述例子每个请求平均要10s,那么应用程序就只能提供20qps了。而异步程序不存在IO等待,所以无论请求要花费多长时间,对整个程序的处理能力没有任何影响

同步的优势

  • 编码简单,同步模式编写/调试程序更轻松

  • 可控性好,同步模式的程序具有良好的过载保护机制,如在下面的情况异步程序就会出问题

  • Accept保护,同步模式下一个TCP服务器最大能接受进程数+Backlog个TCP连接。一旦超过此数量,Server将无法再接受连接,客户端会连接失败。避免服务器Accept太多连接,导致请求堆积

异步编程与同步编程的不同之处以及需要注意的事项