本书未发布

同步阻塞与异步非阻塞适用场景

为了更好的阅读体验,将文档从 Swoole 官方文档 搬运过来。内容比较多,我会慢慢搬运过来,也欢迎大家以提交改进的方式一起帮助我。

异步的优势

  • 高并发,同步阻塞 IO 模型的并发能力依赖于进程/线程数量,例如 php-fpm开启了 200 个进程,理论上最大支持的并发能力为 200。如果每个请求平均需要 100ms,那么应用程序就可以提供2000qps。异步非阻塞的并发能力几乎是无限的,可以发起或维持大量并发TCP连接
  • 无 IO 等待,同步模型无法解决IOWait很高的场景,如上述例子每个请求平均要10s,那么应用程序就只能提供 20qps 了。而异步程序不存在 IO 等待,所以无论请求要花费多长时间,对整个程序的处理能力没有任何影响

    同步的优势

  • 编码简单,同步模式编写/调试程序更轻松
  • 可控性好,同步模式的程序具有良好的过载保护机制,如在下面的情况异步程序就会出问题
  • Accept保护,同步模式下一个TCP服务器最大能接受 进程数+BacklogTCP连接。一旦超过此数量,Server将无法再接受连接,客户端会连接失败。避免服务器Accept太多连接,导致请求堆积

本文章首发在 LearnKu.com 网站上。
上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~