一种业务处理方法和装置制造方法及图纸

技术编号:26303834 阅读:23 留言:0更新日期:2020-11-10 19:58
本申请公开了一种业务处理方法和装置,该方法包括:接收来自客户端的并发的多个业务请求,多个业务请求用于请求从外部系统获取多个业务数据;将多个业务请求分配给多个PHP协程,由多个PHP协程并发执行多个业务请求;在执行任一业务请求时,异步执行从外部系统获取业务请求对应的业务数据,并在获取到业务数据后,基于业务数据继续执行业务请求;在获取到多个业务数据后,对多个业务数据执行指定业务处理。本申请实施例通过引入由用户调度的多个PHP协程,可以将原有的同步阻塞调整为异步通信,再加上回调的机制,能够高效地对多个并发的业务请求进行处理,不仅可以提升系统性能和最大承载能力,还可以提高对CPU的利用率。

【技术实现步骤摘要】
一种业务处理方法和装置
本申请涉及计算机
,尤其涉及一种业务处理方法和装置。
技术介绍
PHP(超级文本预处理语言,HypertextPreprocessor)是一种web主流开发语言,由于其语法较为简单易于编程,能够支持业务的发展和迭代升级,因此被广泛应用于各种系统或服务中。PHP属于解释型语言,其进程模型为单进程,在使用PHP作为开发语言的系统或服务中,通常可以配置启用多个进程来轮流调度执行任务。然而,在实际执行任务的过程中,在高并发的场景下,由于PHP的进程模型为单进程,因此,会出现同步阻塞调用的问题,导致无法及时对任务进行处理,严重影响系统的吞吐量和性能。
技术实现思路
本申请实施例提供一种业务处理方法和装置,用于解决在使用PHP作为开发语言的系统或服务中,在接收到高并发的业务请求的场景下,系统的吞吐量和性能较低的问题。为解决上述技术问题,本申请实施例是这样实现的:第一方面,提出一种业务处理方法,包括:接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。第二方面,提出一种业务处理装置,包括:接收单元,接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;任务执行单元,将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;数据获取单元,在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;业务处理单元,在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。第三方面,提出一种电子设备,该电子设备包括:处理器;以及被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。第四方面,提出一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例提供的技术方案,在使用PHP作为开发语言的系统或服务中,通过引入由用户调度的多个PHP协程,在接收到来自客户端的多个并发的业务请求时,将多个业务请求分配给多个PHP协程,并由多个PHP协程并发执行多个业务请求,多个PHP协程在执行任一业务请求时,异步执行从外部系统获取业务请求对应的业务数据,并在获取到业务数据后,基于获取到的业务数据继续执行业务请求。这样,可以将原有的同步阻塞调整为异步通信,再加上回调的机制,不仅能够高效地对多个并发的业务请求进行处理,极大提升系统性能和最大承载能力,还可以提高对CPU的利用率。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请的一个实施例业务处理方法的流程示意图;图2是现有技术中系统服务对多个高并发的业务请求的处理示意图;图3是本申请的一个实施例系统服务对多个高并发的业务请求的处理示意图;图4是本申请的一个实施例业务处理方法的流程示意图;图5是本申请的一个实施例电子设备的结构示意图;图6是本申请的一个实施例业务处理装置的结构示意图。具体实施方式为了使本
的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。目前,在使用PHP作为开发语言的系统或服务中,在高并发或者业务流程比较复杂的业务场景下,由于PHP的进程模型是单进程,因此,会出现同步阻塞调用的问题,严重影响系统的吞吐量和性能。以使用PHP作为开发语言的广告代理服务为例,广告代理服务在接收到来自客户端的广告获取请求时,可以调用第三方API(ApplicationProgrammingInterface,应用程序编程接口),以向第三方应用请求获取对应的广告数据,并在获取到广告数据后,进行广告数据填充,然后将对应的广告下发至客户端,由客户端将广告展示给用户。然而,当广告代理服务接收到多个高并发的广告获取请求时,由于现有的广告代理服务的运行方式是基于PHP-FPM管理下的多进程的方式,每个进程完成初始化后,在接收到任务时各自独立运行,且任务流程中存在大量第三方的广告API的调用,调用时需要花费较长的时间,因此,当并发请求量达到一定饱和度后,第三方API接口的调用会导致大量同步阻塞(TIME_WAIT状态),而广告代理服务可运行的进程数有限,无法继续接收其他任务,导致间接影响了系统服务对外的承载能力。此外,广告代理服务在以多进程的方式运行时,多进程之间的调度由CPU控制,CPU在调度多个进程时,是以时间片的方式进行调度,且在调度过程中需要消耗一定的系统资源存储进程上下文(context,记录任务的执行状态),以便在切换进程的过程中,基于进程上下文还原进程的执行状态。整个调度过程不仅需要消耗大量的系统资源,导致系统资源的浪本文档来自技高网
...

【技术保护点】
1.一种业务处理方法,其特征在于,包括:/n接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;/n将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;/n在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;/n在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。/n

【技术特征摘要】
1.一种业务处理方法,其特征在于,包括:
接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;
在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。


2.如权利要求1所述的方法,其特征在于,
一个业务请求对应多个子任务,所述多个子任务通过所述多个PHP协程之间的切换并发执行。


3.如权利要求1所述的方法,其特征在于,在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求,包括:
由所述多个PHP协程执行所述多个业务请求中的第一业务请求;
在执行所述第一业务请求的过程中,当调用应用程序编程接口API向所述外部系统发起网络请求时,中断执行所述第一业务请求,并执行所述多个业务请求中的第二业务请求,所述网络请求用于请求从所述外部系统获取与所述第一业务请求对应的第一业务数据;
异步执行从所述外部系统获取所述第一业务数据;
在获取到所述第一业务数据时,中断执行所述第二业务请求,并基于所述第一业务数据继续执行所述第一业务请求。


4.如权利要求3所述的方法,其特征在于,在中断执行所述第一业务请求时,所述方法还包括:
将所述第一业务请求的执行状态记录在协程上下文中;
其中,基于所述第一业务数据继续执行所述第一业务请求,包括:
基于所述第一业务数据以及所述协程上下文中记录的所述第一业务请求的执行状态,继续执行所述第一业务请求。


5.如权利要求3所述的方法,其特征在于,当调用API接口向所述外部系统发起网络请求时,所述方法还包括:
从预先设置的连接池中获取目标网络连接通道,所述目标网络连接通道用于建立与所述外部系统之间的网络连接,所述连接池中存储有多个不同的网络连接通道;
基于所述目标网络连接通道,建立与所述外部系统之间的网络连接;
基于所述网络连接向所述外部系统发送所述网络请求。


6.如权利要求1所述的方法,其特征在于,所述业务请求中包括用户信息,所述用户信息包括用户的个人信息和行为数据;
其中,在接收到来自客户端的并发的多个业务请求...

【专利技术属性】
技术研发人员:李小峰李涛
申请(专利权)人:郑州阿帕斯数云信息科技有限公司
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1