Swoole 如何处理高并发
①对Reactor模型介绍我们都知道IO复用异步非阻塞程序使用的是经典的Reactor模型,Reactor就是反应堆的意思,也就是说它本身不处理任何数据收发。只是可以监视一个socket(比如管道、eventfd、信号)句柄的事件变化。Reactor只作为一个事件发生器,实际对socket句柄的操作,如connect/accept、send/recv、close等都是在callback中完成的。看看下面图片就可以了解到。
②swoole的架构咱们再来看看swoole的架构,我们也可以从以下借鉴的图片可以看出,swoole采用的架构模式:多线程Reactor+多进程Worker,因为reactor是基于epoll的,所以不难看出每个reactor,它可以用来处理无数个连接请求。 如此,swoole就轻松的实现了高并发的处理。这里对高并发还不清楚的话,请自行网上看看教程,这里就不多做解释了。
Swoole的处理连接流程图如下:
当请求到达时,Swoole是这样处理的:
Swoole 如何实现异步I/O
基于上面的Swoole结构图,我们可以知道:Swoole的worker进程有2种类型:一种是普通的worker进程,一种是task worker进程。这两种类型分别用来处理什么呢?
worker进程:用来处理普通的耗时不是太长的请求
task worker进程:用来处理耗时较长的请求,比如数据库的I/O操作我们再以异步MySQL举例,不难看出通过worker、task worker结合的方式,我们就实现了异步I/O。
以上内容希望帮助到大家,更多PHP大厂PDF面试文档,PHP进阶架构视频资料,PHP精彩好文可以关注公众号:PHP开源社区,或者访问:
精华PHP技术文章整理合集——PHP框架篇
精华PHP技术文合集——微服务架构篇
精华PHP技术文合集——分布式架构篇
精华PHP技术文合集——高并发场景篇
精华PHP技术文章整理合集——数据库篇