CN111913792B - 一种业务处理方法和装置 - Google Patents
一种业务处理方法和装置 Download PDFInfo
- Publication number
- CN111913792B CN111913792B CN202010690013.1A CN202010690013A CN111913792B CN 111913792 B CN111913792 B CN 111913792B CN 202010690013 A CN202010690013 A CN 202010690013A CN 111913792 B CN111913792 B CN 111913792B
- Authority
- CN
- China
- Prior art keywords
- service
- request
- requests
- data
- external system
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 136
- 230000008569 process Effects 0.000 claims abstract description 98
- 238000012545 processing Methods 0.000 claims description 48
- 230000006399 behavior Effects 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 230000000903 blocking effect Effects 0.000 abstract description 11
- 230000001360 synchronised effect Effects 0.000 abstract description 11
- 230000007246 mechanism Effects 0.000 abstract description 8
- 238000004891 communication Methods 0.000 abstract description 7
- 238000011161 development Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009897 systematic effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
- G06Q30/0277—Online advertisement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Development Economics (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种业务处理方法和装置,该方法包括:接收来自客户端的并发的多个业务请求,多个业务请求用于请求从外部系统获取多个业务数据;将多个业务请求分配给多个PHP协程,由多个PHP协程并发执行多个业务请求;在执行任一业务请求时,异步执行从外部系统获取业务请求对应的业务数据,并在获取到业务数据后,基于业务数据继续执行业务请求;在获取到多个业务数据后,对多个业务数据执行指定业务处理。本申请实施例通过引入由用户调度的多个PHP协程,可以将原有的同步阻塞调整为异步通信,再加上回调的机制,能够高效地对多个并发的业务请求进行处理,不仅可以提升系统性能和最大承载能力,还可以提高对CPU的利用率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种业务处理方法和装置。
背景技术
PHP(超级文本预处理语言,Hypertext Preprocessor)是一种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(Application Programming Interface,应用程序编程接口),以向第三方应用请求获取对应的广告数据,并在获取到广告数据后,进行广告数据填充,然后将对应的广告下发至客户端,由客户端将广告展示给用户。
然而,当广告代理服务接收到多个高并发的广告获取请求时,由于现有的广告代理服务的运行方式是基于PHP-FPM管理下的多进程的方式,每个进程完成初始化后,在接收到任务时各自独立运行,且任务流程中存在大量第三方的广告API的调用,调用时需要花费较长的时间,因此,当并发请求量达到一定饱和度后,第三方API接口的调用会导致大量同步阻塞(TIME_WAIT状态),而广告代理服务可运行的进程数有限,无法继续接收其他任务,导致间接影响了系统服务对外的承载能力。
此外,广告代理服务在以多进程的方式运行时,多进程之间的调度由CPU控制,CPU在调度多个进程时,是以时间片的方式进行调度,且在调度过程中需要消耗一定的系统资源存储进程上下文(context,记录任务的执行状态),以便在切换进程的过程中,基于进程上下文还原进程的执行状态。整个调度过程不仅需要消耗大量的系统资源,导致系统资源的浪费,且需要花费大量的时间,导致任务的执行效率较低。
为了便于理解,以下可以以广告代理服务中包括3个进程为例进行说明。
假设广告代理服务接收到3个高并发的广告获取请求,3个广告获取请求分别对应任务1、任务2和任务3,任务1由进程1执行,任务2由进程2执行,任务3由进程3执行,3个进程由CPU调度,那么,CPU在调度这3个进程时,首先可以调度进程1,在执行任务1一段时间后,切换调度进程2,并使用进程上下文记录对任务1的执行状态;其次,在执行任务2一段时间后,切换调度进程3,并使用进程上下文记录对任务2的执行状态;最后,在执行任务3一段时间后,切换调度进程1,并使用进程上下文记录对任务3的执行状态,且,在调度进程1后执行任务1时,基于进程上下文还原任务1的执行状态,基于任务1的执行状态继续执行任务1,……,如此循环,通过调度3个进程执行并发的3个任务。
在上述过程中,由于在切换进程时,都需要消耗系统资源记录进程上下文,且在还原进程上下文时,也需要一定的时间,因此,不仅会占用过多的系统资源,还会降低任务的执行效率。此外,由于广告代理服务在执行某个任务的过程中,需要调用第三方API从外部系统获取广告数据,且在调用第三方API接口时,不需要CPU参与,因此,如果CPU在调度某个进程,且该进程签好执行到调用第三API的步骤,那么就会出现CPU处于空闲状态的情况,且由于CPU此时被进程占用不能执行其他任务,因此,就会出现同步阻塞调用的问题,造成CPU资源的浪费,且多个进程间的相互独立也会进一步降低复用的可能性。
为了解决上述技术问题,本申请实施例提供一种业务处理方法和装置,在使用PHP作为开发语言的系统或服务中,通过引入由用户调度的多个PHP协程,在接收到来自客户端的多个并发的业务请求时,将多个业务请求分配给多个PHP协程,并由多个PHP协程并发执行多个业务请求,多个PHP协程在执行任一业务请求时,异步执行从外部系统获取业务请求对应的业务数据,并在获取到业务数据后,基于获取到的业务数据继续执行业务请求。这样,可以将原有的同步阻塞调整为异步通信,再加上回调的机制,不仅能够高效地对多个并发的业务请求进行处理,极大提升系统性能和最大承载能力,还可以提高对CPU的利用率,有效解决上述技术问题。
本申请实施例中的PHP协程是用户级线程,并非系统级线程,即PHP携程的调度是由用户控制,不由CPU控制,因此,使用PHP协程执行高并发的任务,不仅可以避免无意义的调度,还可以节省系统资源开销,提升服务性能。此外,PHP协程可以作为最小的执行单元,能够将现有的同步阻塞调用的方式转化为异步回调机制,不仅可以提升系统或服务的系统性能和最大承载能力,还可以带来更低的资源开销、更高执行效率。
在基于多个PHP协程执行多个高并发的任务时,多个PHP协程可以属于一个进程,即多个PHP协程可以运行在一个进程内,且该进程可以独占CPU,即本申请实施例可以将多个并发的业务请求分配给一个可以独占CPU的进程处理,由该进程中包括的多个PHP协程并发执行多个业务请求,由于多个PHP协程的调度由用户控制,不由CPU控制,因此,可以充分利用CPU,提高对CPU资源的利用率。
需要说明的是,本申请实施例提供的技术方案可以适用于使用PHP作为开发语言的系统或服务中,且该系统或服务的业务流程中包括调用第三方API的步骤。在一个典型的应用场景中,该系统和服务可以是上述记载的广告代理服务,本申请实施例可以以广告代理服务为例进行说明。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1是本申请的一个实施例业务处理方法的流程示意图。本实施例的执行主体可以是使用PHP作为开发语言的系统或服务中,且该系统或服务(以下简称系统服务)的业务流程中包括调用第三方API的步骤,所述业务处理方法如下所述。
S102:接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据。
在S102中,用户在使用客户端的过程中,可以向客户端发送业务请求,客户端在接收到业务请求后,可以将业务请求发送给系统服务,其中,该业务请求可以用于请求系统服务从外部系统获取业务数据。
以系统服务为广告代理服务为例,用户在使用客户端(比如浏览器客户端)的过程中,广告代理服务可以通过客户端向用户推送一个或多个第三方应用的广告信息,如果用户对某个广告信息感兴趣,那么可以基于感兴趣的广告信息向客户端发起广告获取请求,以请求从第三方应用的系统中(即上述外部系统)获取对应的广告数据。
本实施例中,不同用户在使用客户端的过程中,可以并发地向客户端发起业务请求,客户端在接收到多个并发的业务请求后,可以将多个并发的业务请求发送给系统服务,系统服务可以接收来自客户端的并发的多个业务请求。其中,该多个业务请求可以是请求从一个外部系统获取对应的多个业务数据,也可以是请求从多个外部系统分别获取对应的业务数据。
仍以上述广告代理服务为例,假设系统服务接收到3个并发的业务请求,那么,可以是这3个业务请求都是请求从第三方应用1的系统中获取对应的3个业务数据,也可以是业务请求1请求从第三方应用1的系统中获取业务数据1,业务请求2和业务请求3请求从第三方应用2的系统中获取对应的业务数据2和业务数据3。
S104:将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求。
在S104中,多个PHP协程是用户级线程,多个PHP协程之间的调度可以由用户控制,多个PHP协程在并发执行多个业务请求时,可以通过协程之间的切换实现。
本实施例中,多个PHP协程可以归属于一个进程,也就是说,系统服务在接收到并发的多个业务请求时,可以将多个业务请求分配给一个进程,由该一个进程中包括的多个PHP协程并发执行多个业务请求。相较于现有的将多个业务请求分配给多个进程进行处理,本实施例中的一个进程可以独占CPU,该进程中的PHP协程可以作为最小的执行单元,并由用户控制调度,可以避免无意义的调度,以及提高对CPU的利用率。
可选地,系统服务接收到的多个业务请求中,任一业务请求可以视为一个任务,一个任务可以对应多个子任务,多个PHP协程在并发执行多个业务请求时,针对任一业务请求对应的多个子任务,可以通过多个PHP协程之间的切换并发执行,且多个子任务之间可以异步通信协作,使得所有任务可以并发高效执行。
S106:在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求。
在S106中,在由多个PHP协程并发执行多个业务请求的过程中,可以通过异步回调的机制从外部系统获取对应的多个业务数据,以提高任务执行效率。具体实现方式如下:
第一步:由多个PHP协程执行多个业务请求中的第一业务请求。
具体地,多个PHP协程在并发执行多个业务请求时,由于在同一时间仅允许执行一个任务或子任务,因此,这里可以以多个PHP协程执行多个业务请求中的第一业务请求为例进行说明。
第二步:在执行第一业务请求的过程中,当调用API向外部系统发起网络请求时,中断执行第一业务请求,并执行多个业务请求中的第二业务请求。
具体地,由于第一业务请求用于请求从外部系统获取业务数据,因此,在执行第一业务请求中的过程中,会执行调用API的步骤,以便向外部系统发送网络请求,该网络请求可以视为异步I/O请求,用于请求从外部系统获取与第一业务请求对应的第一业务数据。
由于在调用API从外部系统获取业务数据时,不需要CPU的参与,因此,为了充分利用CPU,提高CPU的利用率,系统服务在执行到调用API向外部系统发起网络请求的步骤时,可以中断当前任务并执行其他任务,即可以中断第一业务请求,并执行其他业务请求中的某个业务请求,这里由第二业务请求表示。需要说明的是,这里的中断第一业务请求并不是系统服务中断执行第一业务请求,而是CPU中断执行第一业务请求,在CPU中断执行第一业务请求的情况下,系统服务仍会采用异步的方式执行第一业务请求。
相较于现有技术中的调用API时CPU处于空闲状态,由于本实施例在执行调用API的步骤时,CPU可以执行第二业务请求,不会处于空闲状态,因此,一方面可以提高对CPU的利用率,另一方面,由于在执行从外部系统获取业务数据的步骤时,可以切换执行其他任务,因此,可以避免现有技术中的同步阻塞调用的问题。
可选地,在中断执行第一业务请求时,可以将PHP协程对第一业务请求的执行状态记录在协程上下文中,以便后续在继续执行第一业务请求时,可以基于协程上下文执行。
需要说明的是,本实施例在记录协程上下文时,可以将协程上下文记录在进程中,即开进程中开辟一存储空间来存储协程上下文,无需消耗系统资源,因此,可以节省系统资源。此外,在后续基于该协程上下文继续执行第一业务请求时,由于可以直接从进程中读取协程上下文,无需从系统资源中读取,因此,可以提高读取效率,节省时间。
第三步:异步执行从外部系统获取第一业务数据。
具体地,由于在调用API从外部系统获取业务数据时,不需要CPU的参与,因此,在执行第二业务请求的同时,可以异步执行从外部系统获取上述第一业务数据的步骤,这样,通过异步通信的方式执行从外部系统获取业务数据的步骤,可以提高任务的执行效率。
通常,系统服务在异步执行从外部系统获取第一业务数据的步骤时,首先需要请求内部的I/O资源,基于该I/O资源建立网络连接通道,基于该通道建立与外部系统之间的网络连接,然后在建立网络连接的基础上,从外部系统获取第一业务数据,在获取到第一业务数据后,系统服务可以释放网络连接通道,以释放I/O资源。
然而,在实际应用中,系统服务通常需要频繁地从外部系统获取业务数据,这样,就需要系统服务频繁地从内部获取I/O资源建立网络连接通道,基于网络连接和外部系统之间的网络连接,以及释放网络连接通道,如此频繁就会花费很长时间,严重影响系统服务的执行效率。
有鉴于此,本实施例中可以预先设置连接池,连接池中存储有多个与不同的外部系统对应的网络连接通道,每个网络连接通道可以用于系统服务建立与对应的外部系统之间的网络连接,这样,当系统服务调用API向外部系统发起网络请求时,可以从预先设置的连接池中获取与外部系统对应的目标网络连接通道,基于目标网络连接通道建立与外部系统之间的网络连接,在建立网络连接的基础上,向外部系统发送网络请求。
可选地,连接池可以存储在多个PHP协程所属的进程内,即在进程内开辟存储空间存放连接池,在需要从连接池获取网络连接通道时,可以直接从进程中获取,从而提高通道获取效率。
本实施例采用连接池技术,能够实现连接池中的网络连接通道的复用,从而可以节省API调用时的资源开销,提高任务的执行效率。
系统服务在向外部系统发送网络请求后,外部系统可以根据网络请求确定对应的业务数据,并将业务数据通过API返回给系统服务。
可选地,本实施例的业务请求中可以包括使用客户端的用户的用户信息,该用户信息中可以包括用户的个人信息,比如用户的性别、职业、兴趣爱好、所在的地理位置信息等,此外,用户信息中还可以包括用户的行为数据,比如用户基于客户端的浏览行为数据。
系统服务在接收到包括用户信息的多个业务请求后,针对每个业务请求,可以根据用户信息制定相应的业务策略。具体地,针对每个业务请求,系统服务首先可以确定发起该业务请求的目标用户的用户信息,其次,可以基于预先设置的多个业务策略,确定与目标用户的用户信息相匹配的目标业务策略,最后,可以基于该目标业务策略,从外部系统获取对应的业务数据,即系统服务向外部系统发送的网络请求中可以携带目标业务策略。外部系统在接收到携带有目标业务策略的业务请求后,可以基于目标业务策略获取对应的业务数据,并反馈给系统服务。
以广告代理服务为例,广告代理服务在接收到广告获取请求后,可以获取到该广告获取请求中携带的用户的用户信息,然后将用户信息与预先设置的多个广告策略进行匹配,确定与用户信息相匹配的适合用户的广告策略,最后基于该广告策略向外部系统发起网络请求,外部系统在接收到网络请求后,可以根据网络请求中携带的广告策略获取对应的广告数据,并将广告数据反馈给广告代理服务。
本实施例中,系统服务在接收到业务数据后,无需释放连接池中存储的与外部系统之间的网络连接通道,这样,当系统服务再次需要基于该网络连接通道从外部系统获取业务数据时,直接从连接池中获取即可。
第四步:在获取到第一业务数据时,中断执行第二业务请求,并基于第一业务数据继续执行第一业务请求。
在中断执行第二业务请求时,也可以将PHP协程对第二业务请求的执行状态记录在协程上下文中,且该协程上下文也可以记录在进程中,以节省系统资源。
在基于第一业务数据继续执行第一业务请求时,还可以结合之前在中断执行第一业务请求时PHP协程对第一业务请求的执行状态,继续执行第一业务请求。具体地,可以从协程上下文中读取中断执行第一业务请求时PHP协程对第一业务请求的执行状态,基于该执行状态和第一业务数据继续执行第一业务请求。
可选地,在继续执行第一业务请求后,待执行完毕时,可以基于中断第二业务请求时协程上下文记录的对第二业务请求的执行状态继续执行第二业务请求,在继续执行第二业务请求的过程中,在需要调用API从外部系统获取业务数据时,可以按照上述记载的异步回调的方式获取对应的业务数据,这里不再重复描述。
为了便于理解本实施例的异步回调机制,可以参见图2和图3。
图2为现有技术中系统服务对多个高并发的业务请求的处理示意图。图2中,系统服务在接收到N个并发的业务请求后,将N个高并发的业务请求交由N个进程处理,一个进程处理一个业务请求,且N个进程共享CPU资源。假设每个业务请求对应三个子任务,分别为任务1、任务2和任务3,任务2代表调用第三方API,那么,基于上述记载的内容可知,N个进程在执行任务的过程中,会出现同步阻塞调用的问题。
图3为本申请的一个实施例系统服务对多个高并发的业务请求的处理示意图。图3中,系统服务在接收到N个并发的业务请求后,可以将N个业务请求交由多个PHP协程进行处理,多个PHP协程可以属于一个进程,该进程可以独占CPU资源,即将任务以协程的模式进行创建,进程整体调度各个任务,尤其是各个子任务。
仍假设每个业务请求对应三个子任务,分别为任务1、任务2和任务3,任务2代表调用第三方API,那么,以执行其中一个业务请求为例,PHP协程在执行完任务1后,可继续执行任务2,由于任务2需要调用第三方API(即任务2为异步I/O请求,不需要CPU参与),因此,可以将进程调度权主动让出,让进程继续进行其他任务的调度执行。当任务2完成异步I/O请求时,即从外部系统获取到业务数据时,可以通过回调的方式告知进程,此时进程将会继续进行任务3,并完成该任务的整体协作运行。
在图3中,由于在执行任务2调用API接口时,CPU不需要等待,而是可以执行其他任务,因此,可以充分利用CPU资源和系统其他资源,从而可以加快对高并发业务请求的处理速度,提高系统吞吐量,此外,由于中断执行业务请求时是进程内的协程上下文切换,因此代价极小。
本实施例的上述S102至S106中,通过引入PHP协程和连接池,PHP协程将原有的同步阻塞调整为异步通信,加上回调机制,可以在提高CPU利用率的基础上,极大提升系统性能和最大承载能力,结合连接池的复用,可以进一步可提升资源利用率。
在实际应用中显示,假定引入PHP协程之前的系统服务的指标:QPS(每秒的响应请求数)为1000,平均响应时间为500ms,那么在引入PHP协程之后,系统服务的指标QPS能上升到5000,平均响应时间能达到250ms,即QPS能提升5倍,响应时间能减少50%,系统服务的整体吞吐量能提升10倍,如果扩充服务机器节点的话,性能会有更大的提升。
比如,在确保引入PHP协程并改造后的PHP系统服务正常稳定,并同时观察系统服务的QPS和平均响应时间等性能监测指标,以及机器的负载和网络情况,可以不断扩充改造后的服务节点,来提高系统服务的吞吐量和并发性能,并同时下线之前的线上服务节点,最终,让改造后的高性能系统服务完全接管并运行。
S108:在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
在S108中,系统服务在基于S106中记载的方法获取到与多个业务请求对应的多个业务数据后,可以对多个业务数据执行指定业务处理。
本实施例中,指定业务处理可以根据具体的应用场景或业务需求确定。
在一种实现方式中,该指定业务处理可以是将多个业务数据返回给客户端,以便由客户端将多个业务数据展示给用户。以广告代理服务为例,若应用场景为用户想要获取广告,则系统服务在获取到多个广告数据后,针对任一广告数据,可以进行广告填充等处理,得到相应的广告,并将广告下发至客户端,由客户端向用户展示广告。
在另一种实现方式中,该指定业务处理也可以是仅对多个业务数据的处理,无需将多个业务数据返回给客户端。仍以广告代理服务为例,若应用场景为对广告进行计费,则系统服务在获取到多个广告数据后,可以基于预先设定的计费标准,确定多个广告数据各自对应的费用,进而进行广告计费。
应理解,在其他实现方式中,指定业务处理还可以是对业务数据的其他处理,这里不再一一举例说明。
为了便于理解本申请实施例提供的技术方案,以下可以以系统服务为广告代理服务为例进行说明,具体可以参见图4。
图4为本申请的一个实施例业务处理方法的流程示意图,图4所示实施例的执行主体可以是广告代理服务,广告代理服务在提供服务时,核心流程可以包括路由层、策略层、广告数据填充层、以及第三方广告服务API的调用处理层,其中,路由层用于接收来自客户端的广告获取请求,策略层用于匹配对应的广告策略,广告数据填充层用于对获取到的广告数据进行填充,第三方广告服务API的调用处理层用于从第三方应用系统获取广告数据,基于该核心流程,图4所示的业务处理方法具体包括以下步骤:
S401:接收来自客户端的并发的多个广告获取请求。
广告获取请求用于请求从第三方应用系统获取广告数据,广告获取请求中可以包括用户的个人信息和行为数据。
S402:将多个广告获取请求分配给多个PHP协程。
多个PHP协程可以属于一个进程,该一个进程独占CPU的资源。
一个广告获取请求对应多个子任务,多个子任务通过多个PHP协程之间的切换并发执行。
S403:多个PHP协程执行多个广告获取请求中的第一广告获取请求。
S404:当调用第三方API向第三方应用系统发起网络请求时,中断执行第一广告获取请求,并执行第二广告获取请求。
网络请求用于请求从第三方应用系统获取与第一广告获取请求对应的第一广告数据。
在中断执行第一广告获取请求,使用协程上下文记录对第一广告获取请求的执行状态。
S405:基于预先设置的多个广告策略,确定与第一广告获取请求中携带的用户信息相匹配的目标广告策略。
S406:基于目标广告策略,异步执行从第三方应用系统获取第一广告数据。
在从第三方应用系统获取第一广告数据时,可以从预先设置的连接池中获取目标网络连接通道,该目标网络连接通道用于建立广告代理服务与第三方应用系统之间的网络连接,基于目标网络连接通道,建立与第三方应用系统之间的网络连接,基于该网络连接向第三方应用系统发送网络请求,以便从第三方应用系统获取第一广告数据。
S407:在获取到第一广告数据时,中断执行第二广告获取请求,并继续执行第一广告获取请求。
在继续执行第一广告获取请求时,可以基于第一广告数据以及上述S404中由协程上下文记录的对第一广告获取请求的执行状态,继续执行第一广告获取请求。
在中断执行第二广告获取请求,也可以使用协程上下文记录对第二广告获取请求的执行状态,以便后续继续执行第二广告获取请求时,基于协程上下文对第二广告请求的执行状态继续执行。
基于上述步骤,广告代理服务可以获取到与多个广告获取请求对应的多个广告数据。
S408:在获取到多个广告数据后,对多个广告数据执行指定业务处理。
该指定业务处理可以是对广告数据进行广告填充后,将得到的广告下发给客户端,由客户端将广告展示给用户,也可以是广告计费处理等,具体可以根据实际的应用场景或业务需求确定,这里不做具体限定。
上述S401至S408的具体实现可以参见图1所示实施例中相应步骤的具体实现,这里不再重复说明。
本申请实施例提供的技术方案,在使用PHP作为开发语言的系统或服务中,通过引入由用户调度的多个PHP协程,在接收到来自客户端的多个并发的业务请求时,将多个业务请求分配给多个PHP协程,并由多个PHP协程并发执行多个业务请求,多个PHP协程在执行任一业务请求时,异步执行从外部系统获取业务请求对应的业务数据,并在获取到业务数据后,基于获取到的业务数据继续执行业务请求。这样,可以将原有的同步阻塞调整为异步通信,再加上回调的机制,不仅能够高效地对多个并发的业务请求进行处理,极大提升系统性能和最大承载能力,还可以提高对CPU的利用率。
此外,在从外部系统获取业务数据时,由于采用了连接池技术,基于连接池中预先存储的网络连接通道建立与外部系统之间的网络连接,因此,能够实现连接池中的网络连接通道的复用,从而可以节省API调用时的资源开销,提高任务的执行效率。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图5是本申请的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成业务处理装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;
在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
上述如本申请图5所示实施例揭示的业务处理装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1和图4的方法,并实现业务处理装置在图1和图4所示实施例中的功能,本申请实施例在此不再赘述。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1和图4所示实施例的方法,并具体用于执行以下操作:
接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;
在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
图6是本申请的一个实施例业务处理装置60的结构示意图。请参考图6,在一种软件实施方式中,所述业务处理装置60可包括:接收单元61、任务执行单元62、数据获取单元63和业务处理单元64,其中:
接收单元61,接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
任务执行单元62,将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
数据获取单元63,在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求;
业务处理单元64,在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
可选地,一个业务请求对应多个子任务,所述多个子任务通过所述多个PHP协程之间的切换并发执行。
可选地,所述数据获取单元63,在执行任一业务请求时,异步执行从所述外部系统获取所述业务请求对应的业务数据,并在获取到所述业务数据后,基于所述业务数据继续执行所述业务请求,包括:
由所述多个PHP协程执行所述多个业务请求中的第一业务请求;
在执行所述第一业务请求的过程中,当调用应用程序编程接口API向所述外部系统发起网络请求时,中断执行所述第一业务请求,并执行所述多个业务请求中的第二业务请求,所述网络请求用于请求从所述外部系统获取与所述第一业务请求对应的第一业务数据;
异步执行从所述外部系统获取所述第一业务数据;
在获取到所述第一业务数据时,中断执行所述第二业务请求,并基于所述第一业务数据继续执行所述第一业务请求。
可选地,所述数据获取单元63,在中断执行所述第一业务请求时,所述方法还包括:
将所述第一业务请求的执行状态记录在协程上下文中;
其中,所述数据获取单元63,基于所述第一业务数据继续执行所述第一业务请求,包括:
基于所述第一业务数据以及所述协程上下文中记录的所述第一业务请求的执行状态,继续执行所述第一业务请求。
可选地,所述数据获取单元63,当调用API接口向所述外部系统发起网络请求时,从预先设置的连接池中获取目标网络连接通道,所述目标网络连接通道用于建立与所述外部系统之间的网络连接,所述连接池中存储有多个不同的网络连接通道;
基于所述目标网络连接通道,建立与所述外部系统之间的网络连接;
基于所述网络连接向所述外部系统发送所述网络请求。
可选地,所述业务请求中包括用户信息,所述用户信息包括用户的个人信息和行为数据;
其中,所述数据获取单元63,在所述接收单元61接收到来自客户端的并发的多个业务请求后,针对任一业务请求执行以下操作:
确定发起所述业务请求的目标用户的用户信息;
基于预先设置的多个业务策略,确定与所述目标用户的用户信息相匹配的目标业务策略;
基于所述目标业务策略从所述外部系统获取与所述业务请求对应的业务数据。
可选地,所述业务处理单元64,对所述多个业务数据执行指定业务处理,包括:
将所述多个业务数据发送至所述客户端,以便所述客户端向用户展示所述多个业务数据。
本申请实施例提供的业务处理装置60还可执行图1和图4的方法,并实现业务处理装置在图1和图4所示实施例的功能,本申请实施例在此不再赘述。
总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (9)
1.一种业务处理方法,其特征在于,包括:
接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
由所述多个PHP协程执行所述多个业务请求中的第一业务请求;
在执行所述第一业务请求的过程中,当调用应用程序编程接口API向所述外部系统发起网络请求时,中断执行所述第一业务请求,并执行所述多个业务请求中的第二业务请求,所述网络请求用于请求从所述外部系统获取与所述第一业务请求对应的第一业务数据;
异步执行从所述外部系统获取所述第一业务数据;
在获取到所述第一业务数据时,中断执行所述第二业务请求,并基于所述第一业务数据继续执行所述第一业务请求;
在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
2.如权利要求1所述的方法,其特征在于,
一个业务请求对应多个子任务,所述多个子任务通过所述多个PHP协程之间的切换并发执行。
3.如权利要求1所述的方法,其特征在于,在中断执行所述第一业务请求时,所述方法还包括:
将所述第一业务请求的执行状态记录在协程上下文中;
其中,基于所述第一业务数据继续执行所述第一业务请求,包括:
基于所述第一业务数据以及所述协程上下文中记录的所述第一业务请求的执行状态,继续执行所述第一业务请求。
4.如权利要求1所述的方法,其特征在于,当调用API接口向所述外部系统发起网络请求时,所述方法还包括:
从预先设置的连接池中获取目标网络连接通道,所述目标网络连接通道用于建立与所述外部系统之间的网络连接,所述连接池中存储有多个不同的网络连接通道;
基于所述目标网络连接通道,建立与所述外部系统之间的网络连接;
基于所述网络连接向所述外部系统发送所述网络请求。
5.如权利要求1所述的方法,其特征在于,所述业务请求中包括用户信息,所述用户信息包括用户的个人信息和行为数据;
其中,在接收到来自客户端的并发的多个业务请求后,所述方法还包括:
针对任一业务请求执行以下操作:
确定发起所述业务请求的目标用户的用户信息;
基于预先设置的多个业务策略,确定与所述目标用户的用户信息相匹配的目标业务策略;
基于所述目标业务策略从所述外部系统获取与所述业务请求对应的业务数据。
6.如权利要求1所述的方法,其特征在于,对所述多个业务数据执行指定业务处理,包括:
将所述多个业务数据发送至所述客户端,以便所述客户端向用户展示所述多个业务数据。
7.一种业务处理装置,其特征在于,包括:
接收单元,接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
任务执行单元,将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
数据获取单元,由所述多个PHP协程执行所述多个业务请求中的第一业务请求;在执行所述第一业务请求的过程中,当调用应用程序编程接口API向所述外部系统发起网络请求时,中断执行所述第一业务请求,并执行所述多个业务请求中的第二业务请求,所述网络请求用于请求从所述外部系统获取与所述第一业务请求对应的第一业务数据;异步执行从所述外部系统获取所述第一业务数据;在获取到所述第一业务数据时,中断执行所述第二业务请求,并基于所述第一业务数据继续执行所述第一业务请求;
业务处理单元,在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
8.一种电子设备,其特征在于,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:
接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
由所述多个PHP协程执行所述多个业务请求中的第一业务请求;
在执行所述第一业务请求的过程中,当调用应用程序编程接口API向所述外部系统发起网络请求时,中断执行所述第一业务请求,并执行所述多个业务请求中的第二业务请求,所述网络请求用于请求从所述外部系统获取与所述第一业务请求对应的第一业务数据;
异步执行从所述外部系统获取所述第一业务数据;
在获取到所述第一业务数据时,中断执行所述第二业务请求,并基于所述第一业务数据继续执行所述第一业务请求;
在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:
接收来自客户端的并发的多个业务请求,所述多个业务请求用于请求从外部系统获取多个业务数据;
将所述多个业务请求分配给多个超级文本预处理语言PHP协程,由所述多个PHP协程并发执行所述多个业务请求;
由所述多个PHP协程执行所述多个业务请求中的第一业务请求;
在执行所述第一业务请求的过程中,当调用应用程序编程接口API向所述外部系统发起网络请求时,中断执行所述第一业务请求,并执行所述多个业务请求中的第二业务请求,所述网络请求用于请求从所述外部系统获取与所述第一业务请求对应的第一业务数据;
异步执行从所述外部系统获取所述第一业务数据;
在获取到所述第一业务数据时,中断执行所述第二业务请求,并基于所述第一业务数据继续执行所述第一业务请求;
在获取到所述多个业务数据后,对所述多个业务数据执行指定业务处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010690013.1A CN111913792B (zh) | 2020-07-17 | 2020-07-17 | 一种业务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010690013.1A CN111913792B (zh) | 2020-07-17 | 2020-07-17 | 一种业务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111913792A CN111913792A (zh) | 2020-11-10 |
CN111913792B true CN111913792B (zh) | 2023-12-01 |
Family
ID=73281264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010690013.1A Active CN111913792B (zh) | 2020-07-17 | 2020-07-17 | 一种业务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913792B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495783A (zh) * | 2021-07-08 | 2021-10-12 | 上海哔哩哔哩科技有限公司 | 业务数据处理方法及装置 |
CN113626011B (zh) * | 2021-07-21 | 2024-02-13 | 北京万维之道信息技术有限公司 | 基于php架构的数据请求处理方法、装置和设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110247984A (zh) * | 2019-06-27 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置及存储介质 |
WO2020024469A1 (zh) * | 2018-07-31 | 2020-02-06 | 平安科技(深圳)有限公司 | 一种业务处理方法、调用管理系统和计算机设备 |
WO2020125265A1 (zh) * | 2018-12-21 | 2020-06-25 | 中兴通讯股份有限公司 | 容器的业务监控方法、系统和计算机可读存储介质 |
-
2020
- 2020-07-17 CN CN202010690013.1A patent/CN111913792B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020024469A1 (zh) * | 2018-07-31 | 2020-02-06 | 平安科技(深圳)有限公司 | 一种业务处理方法、调用管理系统和计算机设备 |
WO2020125265A1 (zh) * | 2018-12-21 | 2020-06-25 | 中兴通讯股份有限公司 | 容器的业务监控方法、系统和计算机可读存储介质 |
CN111355622A (zh) * | 2018-12-21 | 2020-06-30 | 中兴通讯股份有限公司 | 容器的业务监控方法、系统和计算机可读存储介质 |
CN110247984A (zh) * | 2019-06-27 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 业务处理方法、装置及存储介质 |
Non-Patent Citations (2)
Title |
---|
基于PHP的网络教育管理系统平台的构建;丁智;;中国科技信息(23);全文 * |
面向高并发复杂民航业务的服务器架构设计;李永进;田丰;倪兆阳;;计算机应用与软件(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111913792A (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11146502B2 (en) | Method and apparatus for allocating resource | |
EP2893444B1 (en) | Quota-based resource management | |
CN111475235B (zh) | 函数计算冷启动的加速方法、装置、设备及存储介质 | |
CN106899649B (zh) | 一种任务请求处理方法、装置和用户设备 | |
CN111913792B (zh) | 一种业务处理方法和装置 | |
CN107577523B (zh) | 一种任务执行的方法及装置 | |
US11782756B2 (en) | Method and apparatus for scheduling processor core, and storage medium | |
EP4242843A1 (en) | Graphics card memory management method and apparatus, device, and system | |
CN106897299B (zh) | 一种数据库访问方法及装置 | |
CN108845876B (zh) | 一种业务分配的方法及装置 | |
CN113419846B (zh) | 资源配置方法和装置、电子设备及计算机可读存储介质 | |
US20170212581A1 (en) | Systems and methods for providing power efficiency via memory latency control | |
CN115237589A (zh) | 一种基于sr-iov的虚拟化方法、装置和设备 | |
CN112764676B (zh) | 一种资源分配系统及方法 | |
CN111813541B (zh) | 一种任务调度方法、装置、介质和设备 | |
CN111338803A (zh) | 一种线程处理方法和装置 | |
CN113157415B (zh) | 农场渲染方法、装置、电子设备和存储介质 | |
CN114489978A (zh) | 资源调度方法、装置、设备及存储介质 | |
CN114138427A (zh) | Slo保障方法、装置、节点及存储介质 | |
CN114296897A (zh) | 一种广告请求的发送方法和装置 | |
CN113535378A (zh) | 一种资源调配方法、存储介质及终端设备 | |
CN115114020B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN117785486B (zh) | 环境资源调配方法、装置、设备和介质 | |
US20240179102A1 (en) | Systems and methods for managing message queuing | |
CN114584625B (zh) | 一种消息处理方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |