CN111314397A - 一种基于Swoole框架和Yaf框架的消息处理方法和装置 - Google Patents

一种基于Swoole框架和Yaf框架的消息处理方法和装置 Download PDF

Info

Publication number
CN111314397A
CN111314397A CN201811512000.4A CN201811512000A CN111314397A CN 111314397 A CN111314397 A CN 111314397A CN 201811512000 A CN201811512000 A CN 201811512000A CN 111314397 A CN111314397 A CN 111314397A
Authority
CN
China
Prior art keywords
framework
yaf
message
swoole
message processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811512000.4A
Other languages
English (en)
Other versions
CN111314397B (zh
Inventor
张歆明
李金戈
闫绍华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
3600 Technology Group Co ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811512000.4A priority Critical patent/CN111314397B/zh
Publication of CN111314397A publication Critical patent/CN111314397A/zh
Application granted granted Critical
Publication of CN111314397B publication Critical patent/CN111314397B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种基于Swoole框架和Yaf框架的消息处理方法和装置。该方法包括:接收客户端发送的请求消息;将所述请求消息分配至Swoole框架的消息处理进程;利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;将所述处理结果返回给所述客户端。本发明实施例提供的方法通过结合利用Swoole框架和Yaf框架进行消息处理,既可以重复利用Swoole框架的高并发机制,又能利用Yaf框架的规范化、流程化的消息路由以及异常处理机制,极大地加快了高并发下的消息处理速度,显著地提升了高并发下处理性能。

Description

一种基于Swoole框架和Yaf框架的消息处理方法和装置
技术领域
本发明涉及通信技术领域,特别是一种基于Swoole框架和Yaf框架的消息处理方法、基于Swoole框架和Yaf框架的消息处理装置、计算机存储介质以及计算设备。
背景技术
现有的服务端的高并发模型通常采用Nginx+php-fpm。Nginx通过反向代理功能将动态请求转向后端php-fpm。php-fpm(FastCGI Process Manager,FastCGI进程管理器)是FastCGI的实现,并提供了进程管理的功能,其进程包含Master进程和Worker进程,其中Master进程只有一个,负责监听端口,并接收来自web服务器的请求,而Worker进程则有多个,用于真正执行php代码,从而实现多进程高并发机制。然而,Nginx+php-fpm框架没有IO多路复用模型,性能存在瓶颈:其一,当php进程过多时,会导致系统进程调度频繁,影响整个系统的性能;其二,当php进程过多时,会导致和数据库DB的长连接太多,影响整个系统的性能。
为了提升高并发处理效率,现有技术中通过IO多路复用模型来实现。实现IO多路复用模型的方法有多种。对于php语言环境,可以采用Swoole框架;对于Linux环境,可以直接采用epoll;对于Go语言环境,则可以采用Go协程。Swoole高并发框架以CPU内核数为基础,基本在10-20个进程左右,利用epoll的高并发机制,其整体性能压测(包括qps(QueriesPer Second,每秒查询率)和时延)要比php-fpm高出5到10倍左右,从而使服务器能够应对高并发和大量TCP连接。
Yaf(Yet Another Framework)是一个C语言编写、以php扩展形式提供的php开发框架,与一般的php框架相比更快、更轻便。Yaf框架本身定义了一套web服务端的消息业务处理逻辑和异常处理逻辑。Yaf框架这种规范化的、流程化的消息处理格式非常适合服务端的业务处理,但Yaf框架无法解决高并发的问题。
因此,需要开发一种既可以重复利用Swoole框架的高并发机制,又能利用Yaf框架的消息路由以及异常处理机制,从而提升高并发业务处理性能的方法。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于Swoole框架和Yaf框架的消息处理方法、基于Swoole框架和Yaf框架的消息处理装置、计算机存储介质以及计算设备。
根据本发明实施例的一方面,提供了一种基于Swoole框架和Yaf框架的消息处理方法,包括:
接收客户端发送的请求消息;
将所述请求消息分配至Swoole框架的消息处理进程;
利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;
将所述处理结果返回给所述客户端。
可选地,将所述请求消息分配至Swoole框架的消息处理进程,包括:
将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
可选地,将所述请求消息分配至Swoole框架的消息处理进程,进一步包括:
通过Nginx反向代理将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
可选地,利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,包括:
利用所述消息处理进程通过单例模式调用Yaf框架对所述请求消息进行处理。
可选地,所述消息处理进程为Swoole框架的Worker进程。
可选地,在接收Yaf框架返回的处理结果之后,所述方法还包括:
根据所返回的处理结果判断是否出现Yaf运行错误;
若是,对所述运行错误进行处理;
若否,将所述处理结果返回给所述客户端。
根据本发明实施例的另一方面,还提供了一种基于Swoole框架和Yaf框架的消息处理装置,包括:
请求接收模块,适于接收客户端发送的请求消息;
请求分配模块,适于将所述请求消息分配至Swoole框架的消息处理进程;
Yaf框架调用模块,适于利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;以及
结果返回模块,适于将所述处理结果返回给所述客户端。
可选地,所述请求分配模块还适于:
将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
可选地,所述请求分配模块还适于:
通过Nginx反向代理将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
可选地,所述Yaf框架调用模块还适于:
利用所述消息处理进程通过单例模式调用Yaf框架对所述请求消息进行处理。
可选地,所述消息处理进程为Swoole框架的Worker进程。
可选地,所述装置还包括:
异常处理模块,适于在所述Yaf框架调用模块接收Yaf框架返回的处理结果之后,根据所返回的处理结果判断是否出现Yaf运行错误;
若是,对所述运行错误进行处理;
若否,触发所述结果返回模块将所述处理结果返回给所述客户端。
根据本发明实施例的再一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据上文中任一项所述的基于Swoole框架和Yaf框架的消息处理方法。
根据本发明实施例的又一方面,还提供了一种计算设备,包括:
处理器;以及
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据上文中任一项所述的基于Swoole框架和Yaf框架的消息处理方法。
本发明实施例提出的基于Swoole框架和Yaf框架的消息处理方法和装置,在接收到客户端发送的请求消息后,先将请求消息分配至Swoole框架的消息处理进程,进而利用该消息处理进程调用Yaf框架对请求消息进行处理并接收Yaf框架返回的处理结果,最终将处理结果返回给客户端,以完成一次消息业务处理流程。通过结合利用Swoole框架和Yaf框架进行消息处理,既可以重复利用Swoole框架的高并发机制,又能利用Yaf框架的规范化、流程化的消息路由以及异常处理机制,极大地加快了高并发下的消息处理速度,显著地提升了高并发下处理性能。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一实施例的基于Swoole框架和Yaf框架的消息处理方法的流程图;
图2示出了Swoole框架的进程/线程模型的结构示意图;
图3示出了Swoole框架的运行流程的示意图;
图4示出了Yaf框架的执行流程的示意图;
图5示出了根据本发明另一实施例的基于Swoole框架和Yaf框架的消息处理方法的流程图;
图6示出了根据本发明一实施例的基于Swoole框架和Yaf框架的消息处理装置的结构示意图;以及
图7示出了根据本发明另一实施例的基于Swoole框架和Yaf框架的消息处理装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
目前服务端常用的Nginx+php-fpm高并发模型是一种原始的多进程模型,没有应用IO多路复用技术,因此,当进程数达到一定程度,和/或网络请求并发数达到一定高度时,这种多进程框架模型的处理效率将会非常低,无法满足业务的需求。
为解决上述技术问题,本发明实施例提出一种基于Swoole框架和Yaf框架的消息处理方法。图1示出了根据本发明一实施例的基于Swoole框架和Yaf框架的消息处理方法的流程图。参见图1,该方法至少可以包括以下步骤S102至步骤S108。
步骤S102,接收客户端发送的请求消息。
步骤S104,将请求消息分配至Swoole框架的消息处理进程。
步骤S106,利用该消息处理进程调用Yaf框架对请求消息进行处理,并接收Yaf框架返回的处理结果。
步骤S108,将处理结果返回给客户端。
本发明实施例提出的基于Swoole框架和Yaf框架的消息处理方法通过结合利用Swoole框架和Yaf框架进行消息处理,既可以重复利用Swoole框架的高并发机制,又能利用Yaf框架的规范化、流程化的消息路由以及异常处理机制,极大地加快了高并发下的消息处理速度,显著地提升了高并发下处理性能。
上文步骤S104中,将所接收的来自客户端的请求消息分配至Swoole框架的消息处理进程,以待处理。
优选地,将所接收的请求消息负载均衡地分配至Swoole框架的消息处理进程,从而增加服务端的吞吐量,增强网络数据处理能力。
进一步优选地,可以通过Nginx方向代理将所接收的请求消息负载均衡地分配至Swoole框架的消息处理进程。具体地,通过在Nginx中配置proxy_pass代理转发,设置被代理服务器的协议和地址。
Nginx是一款轻量级的web服务器/反向代理服务器,占用内存少,并发能力强,能够提供高性能的web和反向代理服务,并实现无缓存的反向代理加速以及简单的负载均衡和容错。
Swoole是一种php的异步、并行、高性能网络通信引擎,使用纯C语言编写,可用来开发php的高性能高并发TCP/UDP服务器。Swoole的网络IO部分基于epoll/kqueue事件循环,是全异步非阻塞的,业务逻辑部分使用多进程同步阻塞方式来运行。这样,既保证了服务器能够应对高并发和大量TCP连接,又保证业务代码仍然可以简单的编写。
下面结合图2和图3对请求消息在Swoole框架内部的分配流程进行说明。
图2示出了Swoole框架的进程/线程模型的结构示意图。图3示出了Swoole框架的运行流程的示意图。参见图2和图3所示,Swoole框架结构主要包括一个Master主进程,作为Master主进程的子进程的一个Manager进程,以及作为Manager进程的子进程的多个Worker进程和相应的Task进程。
Master主进程为处理核心事件驱动,具有用于处理TCP连接和收发数据的一个主reactor线程和多个子reactor线程。主线程在接受(Accept)新的连接后,将该连接分配给一个固定的Reactor线程,并由该Reactor线程负责监听该连接套接字(socket)。该Reactor线程在socket可读时读取数据,并进行协议解析,将请求投递到Worker进程;在socket可写时将数据发送给TCP客户端。
Manager进程是Worker进程和Task进程的父进程,Fork并管理Worker进程和Task进程。当子进程结束运行时,Manager进程负责回收此子进程,避免成为僵尸进程,并创建新的子进程。当子进程未启动成功或异常终止时,Manager进程负责处理异常状态或者重启对应进程组。当服务器关闭时,Manager进程将发送信号给所有子进程,通知子进程关闭服务。当需要更新配置,服务器reload时,Manager进程会逐个关闭/重启子进程。
Worker进程是处理客户端请求的工作进程,所有的业务逻辑都在Worker进程中进行。Worker进程接收由Reactor线程投递的请求数据包,并执行php回调函数处理数据,之后生成响应数据并发给Reactor线程,由Reactor线程发送给TCP客户端。Worker进程以多进程的方式运行,可以是异步非阻塞模式或同步阻塞模式。
Task进程为异步工作进程,其接收由Worker进程通过swoole_server->task/taskwait方法投递的任务,任务处理后,通过swoole_server->finish将结果数据返回给Worker进程。Task进程同样以多进程的方式运行,是同步阻塞模式。
参见图3,Swoole框架的基本执行流程主要包括以下步骤:
(1)创建Swoole_server服务器,设置事件回调和运行参数。
(2)启动服务器后,启动Master主进程,Master主进程创建Manager进程,Manager进程创建Worker进程和Task进程,Manger进程监视/管理Worker进程组和Task进程组。
(3)当有客户端请求进入到Master进程时,由Main Reactor线程接收该请求。
(4)Main Reactor线程将读写操作的监听注册到对应的Reactor线程中,并通知Worker进程处理onConnect(接收到连接的回调)。
(5)Reactor线程将读取的来自客户端的数据发送给Worker进程进行处理。
(6)若Worker进程投递任务,则将数据通过管道发送给Task进程。Task进程处理完成后将处理结果返回给Worker进程。
(7)Worker进程将包括处理结果在内的响应数据发送给Reactor线程,由Reactor线程发送给客户端。
在本发明的一个优选实施例中,该消息处理进程为Swoole框架的Worker进程。
将所接收的请求消息通过proxy_pass反向代理导向至Swoole的web服务器,通过Swoole框架的Master进程的Reactor线程转发给Worker进程,以待处理。
上文步骤S106中,利用Swoole框架的该消息处理进程调用Yaf框架对请求消息进行处理。
Yaf框架是一个C语言编写的php框架,它把框架中不易变的部分抽象出来,采用php扩展去实现,提供Bootstrap、路由、分发、视图、插件等。Yaf框架具有如下优点:第一,由于是用C语言开发的php框架,相比原生的php,几乎不会带来额外的性能开销;第二,所有的框架类,不需要编译,在php启动的时候加载,并常驻内存;第三,更快的执行速度,更短的内存周转周期,降低内存占用率;第四,灵巧的自动加载,支持全局和局部两种加载规则,方便类库共享。
由于Yaf框架本身定义了一套web服务端的规范化、流程化的消息业务处理逻辑和异常处理逻辑,通过利用Swoole框架的消息处理进程调用Yaf框架对分配的请求消息进行处理,可显著提高消息处理的性能。
下面结合图4对调用Yaf框架进行请求消息处理的流程进行说明。
图4示出了Yaf框架执行流程的示意图。参见图4,在调用Yaf框架后,如果存在Bootstrap(),则先执行Bootstrap.php引导文件进行一系列的初始化环节,并返回一个Yaf_Application对象。紧接着调用run方法,run方法里包含了路由(Router)、分发(Dispatch)、响应(Response)等所有环节。Run方法首先调用路由(Router),紧接着启动分发循环(dispatchLoop),用于协调路由来的请求,并分发和执行发现的动作(actions),然后收集动作产生的响应。具体地,找到controllers文件,然后执行里面的init和action方法,或者找到所有actions的地址然后加载,再去执行对应的execute方法。如果设置了autoRender,则在返回的时候会执行Render方法,即view自动渲染。最后,如果自动响应(autoResponse)没有关闭,则自动输出响应给请求者。图4中的六个插件方法分别为:routerStartup(路由启动),在路由之前触发;routerShutdown(路由关闭),在路由结束之后触发;dispatchLoopStart(分发循环启动),在分发循环开始之前触发;preDispatch(分发前),在分发之前触发;postDispatch(分发后),在分发结束之后触发;以及dispatchLoopShutdown(分发循环停止),在分发循环结束之后触发。这些插件方法可以由用户自定义实现,Yaf框架会在它们相应的步骤处调用对应的Hook方法。
在本发明的一个优选实施例中,可以利用该消息处理进程通过单例模式调用Yaf框架对请求消息进行处理。
通过单例模式可以保证系统中应用该模式的一个类只有一个对象实例,从而确保所有对象都访问唯一实例,强化实例控制。
在本发明的一个可选实施例中,在接收Yaf框架返回的处理结果之后,该基于Swoole框架和Yaf框架的消息处理方法还可以包括以下步骤:
根据所返回的处理结果判断是否出现Yaf运行错误;
若是,对运行错误进行处理;
若否,将处理结果返回给客户端。
例如,若Yaf框架的处理函数执行完后返回的处理结果包含错误提示信息,如“加载失败”、“测试输出错误”等,则可以判断出现Yaf运行错误,并针对不同的运行错误进行处理。
本发明实施例中采用Swoole框架的消息处理进程作为主进程调用Yaf框架对请求消息进行处理,并在该消息处理进程处对Yaf处理函数的返回值(即,Yaf框架返回的处理结果)直接进行判断,若判断出Yaf异常(即,Yaf运行错误),则进行针对性的异常处理,进一步提高消息处理的稳定性和响应速度。
以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍本发明的基于Swoole框架和Yaf框架的消息处理方法的实现过程。
图5示出了根据本发明一具体实施例的基于Swoole框架和Yaf框架的消息处理方法的流程示意图。参见图5所示,该方法至少可以包括以下步骤S502至步骤S512。
步骤S502,接收客户端发送的请求消息。
步骤S504,通过Nginx反向代理将请求消息负载均衡地分配至Swoole框架的Worker进程。
具体地,通过Nginx反向代理将请求消息负载均衡地分配至Swoole框架的Master进程的Reactor线程,并进而由该Reactor线程投递给Worker进程。
步骤S506,利用该Worker进程调用Yaf框架对请求消息进行处理,并接收Yaf框架返回的处理结果。
本步骤中,Yaf框架对请求消息的处理流程参见图4所示。
步骤S508,根据所返回的处理结果判断是否出现Yaf运行错误。
具体地,可根据所返回的处理结果中是否包含错误提示信息来判断是否出现Yaf运行错误。
步骤S510,若是,则对该运行错误进行处理。
步骤S512,若否,则将该处理结果返回给客户端。
本发明实施例通过在Swoole框架的Worker进程处调用Yaf框架对来自客户端的请求消息进行处理,成功地结合利用了Swoole框架的高并发机制和Yaf框架的规范化、流程化的消息路由以及异常处理机制,极大地加快了高并发下的消息处理速度。同时,通过在调用处对Yaf框架的返回值(即,Yaf框架返回的处理结果)直接进行判断,若判断出Yaf异常(即,Yaf运行错误),则进行针对性的异常处理,进一步提高消息处理的稳定性和响应速度。
基于同一发明构思,本发明实施例还提供了一种基于Swoole框架和Yaf框架的消息处理装置,用于支持上述任意一个实施例或其组合所提供的基于Swoole框架和Yaf框架的消息处理方法。图6示出了根据本发明一实施例的基于Swoole框架和Yaf框架的消息处理装置的结构示意图。参见图6,该装置至少可以包括:请求接收模块610、请求分配模块620、Yaf框架调用模块630以及结果返回模块640。
现介绍本发明实施例的基于Swoole框架和Yaf框架的消息处理装置的各组成或器件的功能以及各部分间的连接关系:
请求接收模块610,适于接收客户端发送的请求消息。
请求分配模块620,与请求接收模块610连接,适于将请求消息分配至Swoole框架的消息处理进程。
Yaf框架调用模块630,与请求分配模块620连接,适于利用该消息处理进程调用Yaf框架对请求消息进行处理,并接收Yaf框架返回的处理结果。
结果返回模块640,与Yaf框架调用模块630连接,适于将该处理结果返回给客户端。
在本发明的一个可选实施例中,请求分配模块620还适于:
将请求消息负载均衡地分配至Swoole框架的消息处理进程。
进一步地,请求分配模块620还适于:
通过Nginx反向代理将请求消息负载均衡地分配至Swoole框架的消息处理进程。
在本发明的一个可选实施例中,Yaf框架调用模块630还适于:
利用该消息处理进程通过单例模式调用Yaf框架对请求消息进行处理。
在本发明的一个可选实施例中,该消息处理进程为Swoole框架的Worker进程。
在本发明的一个可选实施例中,如图7所示,图6所展示的该基于Swoole框架和Yaf框架的消息处理装置还可以包括异常处理模块650。异常处理模块650分别与Yaf框架调用模块630和结果返回模块640相连接,适于在Yaf框架调用模块630接收Yaf框架返回的处理结果之后,根据所返回的处理结果判断是否出现Yaf运行错误;若是,则对运行错误进行处理;若否,则触发结果返回模块640将该处理结果返回给客户端。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质。该计算机存储介质存储有计算机程序代码,当该计算机程序代码在计算设备上运行时,导致计算设备执行根据上述任意一个实施例或其组合所述的基于Swoole框架和Yaf框架的消息处理方法。
基于同一发明构思,本发明实施例还提供了一种计算设备。该计算设备可以包括:
处理器;以及
存储有计算机程序代码的存储器;
当该计算机程序代码被处理器运行时,导致该计算设备执行根据上述任意一个实施例或其组合所述的基于Swoole框架和Yaf框架的消息处理方法。
根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:
本发明实施例提出的基于Swoole框架和Yaf框架的消息处理方法和装置,在接收到客户端发送的请求消息后,先将请求消息分配至Swoole框架的消息处理进程,进而利用该消息处理进程调用Yaf框架对请求消息进行处理并接收Yaf框架返回的处理结果,最终将处理结果返回给客户端,以完成一次消息业务处理流程。通过结合利用Swoole框架和Yaf框架进行消息处理,既可以重复利用Swoole框架的高并发机制,又能利用Yaf框架的规范化、流程化的消息路由以及异常处理机制,极大地加快了高并发下的消息处理速度,显著地提升了高并发下处理性能。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。
根据本发明实施例的一方面,提供了A1.一种基于Swoole框架和Yaf框架的消息处理方法,包括:
接收客户端发送的请求消息;
将所述请求消息分配至Swoole框架的消息处理进程;
利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;
将所述处理结果返回给所述客户端。
A2.根据A1所述的消息处理方法,其中,将所述请求消息分配至Swoole框架的消息处理进程,包括:
将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
A3.根据A2所述的消息处理方法,其中,将所述请求消息分配至Swoole框架的消息处理进程,进一步包括:
通过Nginx反向代理将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
A4.根据A1-A3中任一项所述的消息处理方法,其中,利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,包括:
利用所述消息处理进程通过单例模式调用Yaf框架对所述请求消息进行处理。
A5.根据A1-A4中任一项所述的消息处理方法,其中,所述消息处理进程为Swoole框架的Worker进程。
A6.根据A1-A5中任一项所述的消息处理方法,其中,在接收Yaf框架返回的处理结果之后,还包括:
根据所返回的处理结果判断是否出现Yaf运行错误;
若是,对所述运行错误进行处理;
若否,将所述处理结果返回给所述客户端。
根据本发明实施例的另一方面,还提供了B7.一种基于Swoole框架和Yaf框架的消息处理装置,包括:
请求接收模块,适于接收客户端发送的请求消息;
请求分配模块,适于将所述请求消息分配至Swoole框架的消息处理进程;
Yaf框架调用模块,适于利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;以及
结果返回模块,适于将所述处理结果返回给所述客户端。
B8.根据B7所述的消息处理装置,其中,所述请求分配模块还适于:
将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
B9.根据B8所述的消息处理装置,其中,所述请求分配模块还适于:
通过Nginx反向代理将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
B10.根据B7-B9中任一项所述的消息处理装置,其中,所述Yaf框架调用模块还适于:
利用所述消息处理进程通过单例模式调用Yaf框架对所述请求消息进行处理。
B11.根据B7-B10中任一项所述的消息处理装置,其中,所述消息处理进程为Swoole框架的Worker进程。
B12.根据B7-B11中任一项所述的消息处理装置,其中,还包括:
异常处理模块,适于在所述Yaf框架调用模块接收Yaf框架返回的处理结果之后,根据所返回的处理结果判断是否出现Yaf运行错误;
若是,对所述运行错误进行处理;
若否,触发所述结果返回模块将所述处理结果返回给所述客户端。
根据本发明实施例的再一方面,还提供了C13.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据A1-A6中任一项所述的基于Swoole框架和Yaf框架的消息处理方法。
根据本发明实施例的又一方面,还提供了D14.一种计算设备,包括:
处理器;以及
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据A1-A6中任一项所述的基于Swoole框架和Yaf框架的消息处理方法。

Claims (10)

1.一种基于Swoole框架和Yaf框架的消息处理方法,包括:
接收客户端发送的请求消息;
将所述请求消息分配至Swoole框架的消息处理进程;
利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;
将所述处理结果返回给所述客户端。
2.根据权利要求1所述的消息处理方法,其中,将所述请求消息分配至Swoole框架的消息处理进程,包括:
将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
3.根据权利要求2所述的消息处理方法,其中,将所述请求消息分配至Swoole框架的消息处理进程,进一步包括:
通过Nginx反向代理将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
4.根据权利要求1-3中任一项所述的消息处理方法,其中,利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,包括:
利用所述消息处理进程通过单例模式调用Yaf框架对所述请求消息进行处理。
5.根据权利要求1-4中任一项所述的消息处理方法,其中,所述消息处理进程为Swoole框架的Worker进程。
6.根据权利要求1-5中任一项所述的消息处理方法,其中,在接收Yaf框架返回的处理结果之后,还包括:
根据所返回的处理结果判断是否出现Yaf运行错误;
若是,对所述运行错误进行处理;
若否,将所述处理结果返回给所述客户端。
7.一种基于Swoole框架和Yaf框架的消息处理装置,包括:
请求接收模块,适于接收客户端发送的请求消息;
请求分配模块,适于将所述请求消息分配至Swoole框架的消息处理进程;
Yaf框架调用模块,适于利用所述消息处理进程调用Yaf框架对所述请求消息进行处理,并接收Yaf框架返回的处理结果;以及
结果返回模块,适于将所述处理结果返回给所述客户端。
8.根据权利要求7所述的消息处理装置,其中,所述请求分配模块还适于:
将所述请求消息负载均衡地分配至Swoole框架的消息处理进程。
9.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据权利要求1-6中任一项所述的基于Swoole框架和Yaf框架的消息处理方法。
10.一种计算设备,包括:
处理器;以及
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据权利要求1-6中任一项所述的基于Swoole框架和Yaf框架的消息处理方法。
CN201811512000.4A 2018-12-11 2018-12-11 一种基于Swoole框架和Yaf框架的消息处理方法和装置 Active CN111314397B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811512000.4A CN111314397B (zh) 2018-12-11 2018-12-11 一种基于Swoole框架和Yaf框架的消息处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811512000.4A CN111314397B (zh) 2018-12-11 2018-12-11 一种基于Swoole框架和Yaf框架的消息处理方法和装置

Publications (2)

Publication Number Publication Date
CN111314397A true CN111314397A (zh) 2020-06-19
CN111314397B CN111314397B (zh) 2024-04-09

Family

ID=71161236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811512000.4A Active CN111314397B (zh) 2018-12-11 2018-12-11 一种基于Swoole框架和Yaf框架的消息处理方法和装置

Country Status (1)

Country Link
CN (1) CN111314397B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112950307A (zh) * 2021-01-29 2021-06-11 成都环宇知了科技有限公司 一种基于Swoole框架的秒杀方法及系统
CN113064735A (zh) * 2021-03-17 2021-07-02 上海哔哩哔哩科技有限公司 业务处理方法及装置
CN113986961A (zh) * 2021-10-29 2022-01-28 北京泰策科技有限公司 一种分布式高并发的消息匹配方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108053342A (zh) * 2017-10-31 2018-05-18 深圳市智物科技有限公司 一种智能物业管理方法、装置及系统
CN108427553A (zh) * 2018-03-30 2018-08-21 吉旗(成都)科技有限公司 一种基于IO多路复用的纯PHP web框架

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108053342A (zh) * 2017-10-31 2018-05-18 深圳市智物科技有限公司 一种智能物业管理方法、装置及系统
CN108427553A (zh) * 2018-03-30 2018-08-21 吉旗(成都)科技有限公司 一种基于IO多路复用的纯PHP web框架

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PHP技术大全: "ysapi:由 Swoole + yaf 实现 socket 服务基础框架", 《HTTPS://WWW.SOHU.COM/A/124184857_470018》, pages 1 - 4 *
企业号-淘TALK: "yaf整合swoole开发web应用", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/NEWS/246310》, pages 1 - 6 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112950307A (zh) * 2021-01-29 2021-06-11 成都环宇知了科技有限公司 一种基于Swoole框架的秒杀方法及系统
CN113064735A (zh) * 2021-03-17 2021-07-02 上海哔哩哔哩科技有限公司 业务处理方法及装置
CN113986961A (zh) * 2021-10-29 2022-01-28 北京泰策科技有限公司 一种分布式高并发的消息匹配方法
CN113986961B (zh) * 2021-10-29 2022-05-20 北京泰策科技有限公司 一种分布式高并发的消息匹配方法

Also Published As

Publication number Publication date
CN111314397B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
US20190377604A1 (en) Scalable function as a service platform
CN101553792B (zh) 虚拟化环境中的经优化的中断传递
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
US11838384B2 (en) Intelligent scheduling apparatus and method
CN111314397A (zh) 一种基于Swoole框架和Yaf框架的消息处理方法和装置
CN104994032B (zh) 一种信息处理的方法和装置
CN111597061B (zh) 一种客户端或服务端进行远程过程调用方法及装置
KR20000004988A (ko) 제한된 메모리 컴퓨터 시스템에서의 클라이언트관리흐름제어를 위한 방법과 장치
CN109218356B (zh) 管理服务器上有状态应用的方法和设备
US9104488B2 (en) Support server for redirecting task results to a wake-up server
CN111274019A (zh) 一种数据处理方法、装置及计算机可读存储介质
US6256660B1 (en) Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
US6012121A (en) Apparatus for flexible control of interrupts in multiprocessor systems
CN113703997A (zh) 集成多种消息代理的双向异步通信中间件系统及实现方法
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
CN111835797A (zh) 一种数据处理方法、装置及设备
CN113626173A (zh) 调度方法、装置及存储介质
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN111752728B (zh) 消息传输方法及装置
CN103746839A (zh) PaaS系统和PaaS应用池中的VM节点调度方法
CN110413333B (zh) 基于NodeJS和PowerShell的Windows系统的微服务管理方法和装置
CN111031123A (zh) Spark任务的提交方法、系统、客户端及服务端
CN112003949B (zh) 一种was集群下的jms消息进程分发控制系统及方法
CN117076057B (zh) 一种ai服务请求调度的方法、装置、设备及介质
US20220326990A1 (en) Providing optimization in a micro services architecture

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240310

Address after: Room 03, 2nd Floor, Building A, No. 20 Haitai Avenue, Huayuan Industrial Zone (Huanwai), Binhai New Area, Tianjin, 300450

Applicant after: 3600 Technology Group Co.,Ltd.

Country or region after: China

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Applicant before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Country or region before: China

GR01 Patent grant
GR01 Patent grant