swoole事件处理模式有哪些-创新互联

这篇文章给大家分享的是有关swoole事件处理模式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

站在用户的角度思考问题,与客户深入沟通,找到莲都网站设计与莲都网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名网站空间、企业邮箱。业务覆盖莲都地区。

了解swoole事件处理流程,先了解两种网络事件处理模式。

Reactor模式

它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程/进程(逻辑单元)。除此之外,主线程不做任何其他工作。读写数据,接受新的连接,以及处理客户请求均在工作线程中完成。

Proactor模式

两种实现

使用I/O异步模型实现Proactor模式。原理:将所有I/O操作都交给主线程,主线程配合和内核来处理,业务逻辑操作就交给逻辑单元。例如使用aio_read来实现。

工作流程:

  1. 主线程调用aio_read函数向内核注册socket上的读完成事件。
  2. 主线程继续处理其他I/O事件。
  3. 当socket上的数据被读入用户缓冲区后,内核向应用程序(逻辑单元)发送一个信号,通知应用程序数据可用。
  4. 应用程序读取数据(客户端的请求),处理完后,调用aio_write函数向内核注册socket上的写事件。
  5. 主线程继续处理其他逻辑。
  6. 当用户缓冲区的数据写入socket后,内核向应用程序发送一个信号,通知应用程序数据发送完毕。
  7. 应用程序预先定义好的信号处理函数来处理善后处理,比如关闭socket.

使用I/O同步模型实现Proactor模式。原理:主线程执行I/O事件数据的读写操作,业务逻辑操作就交给逻辑单元。例如使用epoll来实现。

工作流程:

  1. 主线程往epoll内核事件表中注册socket上的读就绪事件。
  2. 主线程调用epoll_wait等待socket上有数据可读。
  3. epoll_wait有返回后,主线程从socket上读取数据,然后将读取到的数据封装成一个请求对象(客户端的请求),并插入请求队列。
  4. 于是队列的消费者线程处理请求对象,然后在epoll内核事件表中注册socket上的写就绪事件。
  5. 主线程调用epoll_wait等待socket可写。
  6. 当socket可写时,epoll_wait通知主线程。主线程往socket写入请求结果。

swoole事件架构图

swoole事件处理模式有哪些

从图可以看出,如果我们把Reactor线程和Work进程组合起来,看成工作线程的话,swoole使用的是reactor事件处理模式。

一个请求经历的步骤如下:

1. 服务器主线程等待客户端连接。

2. Reactor线程处理接连socket,读取socket上的请求数据(Receive),将请求封装好后投递给work进程。

3. Work进程就是逻辑单元,处理业务数据。

4. Work进程结果返回给Reactor线程。

5. Reactor线程将结果写回socket(Send)。

感谢各位的阅读!关于swoole事件处理模式有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:swoole事件处理模式有哪些-创新互联
文章出自:http://pwwzsj.com/article/dppdpj.html