CN109257411A - 一种业务处理方法、调用管理***和计算机设备 - Google Patents
一种业务处理方法、调用管理***和计算机设备 Download PDFInfo
- Publication number
- CN109257411A CN109257411A CN201810856671.6A CN201810856671A CN109257411A CN 109257411 A CN109257411 A CN 109257411A CN 201810856671 A CN201810856671 A CN 201810856671A CN 109257411 A CN109257411 A CN 109257411A
- Authority
- CN
- China
- Prior art keywords
- association
- service request
- journey
- processing
- service
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Exchange Systems With Centralized Control (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例提供一种业务处理方法、调用管理***和计算机设备,涉及通信技术领域。本发明实施例提供的业务处理方法包括:接收业务***转发的业务请求;根据所述业务请求生成协程;通过所述协程对所述业务请求需要调用的关联***的远程过程调用RPC接口进行同步调用;判断所述协程是否异常挂起;在判断出所述协程异常挂起时,将所述协程与底层线程的关系移除;在判断出所述协程未异常挂起时,从所述关联***接收处理结果,所述处理结果为所述关联***对所述业务请求进行处理获得的处理结果,并向所述业务***反馈所述处理结果。本发明的技术方案能够使远程接口调用简单,且可以降低所有线程堵死的概率。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种业务处理方法、调用管理***和计算机设备。
背景技术
在大型企业的信息技术***或者互联网大型***架构中,基于***扩展性、稳定性的需求,往往需要将大型***部署呈分布式多***架构。在分布式多***架构中,基于业务逻辑的需求,不同应用***之间需要基于远程过程调用(Remote Procedure Call,简称RPC)来实现接口数据通信。当用户在业务***上发起针对一个功能点的业务请求需要一个或多个关联***配合完成时,业务***需要对关联***进行RPC调用。
若需要对多个关联***的进行RPC调用,则需要进行RPC调用的编排管理,一般采用下面两种实施方案:
方案1、所有RPC调用进行同步处理,方案优点在于架构简单,开发测试难度相对较低。缺点是RPC调用与核心业务由同一个线程处理,一旦其他***提供的RPC服务出现IO阻塞则核心业务逻辑处理会受影响,在高并发时容易导致所有线程堵死。
方案2、所有RPC调用进行异步处理,方案优点在于高并发场景下某个RPC调用出现IO阻塞时不容易导致所有线程堵塞,缺点是多个RPC调用若全部依赖异步回调处理开发复杂度剧增,且会导致用户体验较差,且需额外引入客户端长连接方案,增加了开发与架构复杂度。
发明内容
本发明实施例提供一种业务处理方法、调用管理***和计算机设备,可以使远程接口调用简单,且可以降低所有线程堵死的概率。
第一方面,本发明实施例提供一种业务处理方法,采用如下技术方案:
所述业务处理方法包括:
接收业务***转发的业务请求;
根据所述业务请求生成协程;
通过所述协程对所述业务请求需要调用的关联***的远程过程调用RPC接口进行同步调用;
判断所述协程是否异常挂起;
在判断出所述协程异常挂起时,将所述协程与底层线程的关系移除;
在判断出所述协程未异常挂起时,从所述关联***接收处理结果,所述处理结果为所述关联***对所述业务请求进行处理获得的处理结果,并向所述业务***反馈所述处理结果。
可选地,所述根据所述业务请求生成协程,包括:根据所述业务请求、业务逻辑与所述关联***之间的映射关系,生成与所述业务请求对应的协程,所述业务逻辑用于对所述业务请求进行处理。
可选地,所述业务处理方法还包括:在判断出所述协程异常挂起时,将异常信息输出到日志中。
可选地,所述在判断出所述协程异常挂起时,将异常信息输出到日志中包括:
在判断出所述协程异常挂起时,获取异常信息;
对所述异常信息的等级进行判断;
将所述异常信息输出到对应等级的日志中。
可选地,所述方法还包括:接收所述业务***转发的用户信息,根据所述业务请求和所述用户信息,进行安全认证校验,判断所述用户信息对应的用户是否具有相应权限;所述根据所述业务请求生成协程,包括:在所述用户具有相应权限时,根据所述业务请求生成协程;所述方法还包括:在所述用户不具有相应权限时,向所述业务***报错。
第二方面,本发明实施例提供一种调用管理***,采用如下技术方案:
所述调用管理***包括:
第一RPC接口,用于接收转发的业务请求;
协程生成模块,用于根据所述业务请求生成协程;
调用模块,用于通过所述协程对所述业务请求需要调用的关联***的RPC接口进行同步调用;
第一反馈模块,用于向所述业务***反馈处理结果;
判断模块,用于判断所述协程是否异常挂起;
移除模块,用于在所述协程异常挂起时,将所述协程与底层线程的关系移除;
所述第一RPC接口,还用于在判断出协程未异常挂起时,从关联***接收处理结果,所述处理结果为所述关联***对所述业务请求进行处理获得的处理结果。
可选地,所述调用模块包括:
映射模块,用于生成所述业务请求、业务逻辑与所述关联***之间的映射关系;
所述协程生成模块具体用于根据所述映射关系,生成与所述业务请求对应的协程,所述业务逻辑用于对所述业务请求进行处理。
可选地,所述调用管理***还包括:异常输出模块,用于在所述协程异常挂起时,将异常信息输出到日志中。
可选地,所述调用管理***还包括:第一认证模块,用于根据用户信息和所述业务请求,进行安全认证校验,判断所述用户是否具有相应权限。
第三方面,本发明实施例提供一种计算机设备,采用如下技术方案:
该计算机设备包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上任一项所述的方法。
第四方面,本发明实施例提供一种业务处理***,采用如下技术方案:
所述业务处理***包括以上任一项所述的调用管理***、业务***和至少一个关联***。
本发明实施例提供了一种业务处理方法、调用管理***和业务处理***,该业务处理方法中,由于接收业务***转发的业务请求后,根据业务请求生成协程,通过协程对业务请求需要调用的不同关联***的RPC接口进行同步调用,以调用对应的关联***,一方面,仍然是采用同步调用进行多个关联***的RPC调用,可以避免异步调用带来的程序实现复杂度增加,另一方面,在该协程异常挂起时,将该协程与底层线程的关系移除,可以避免底层线程受这个挂起的协程的影响,可以有效降低同步方案中易导致线程池的全部线程堵死的概率,也就是说本方案是一种可有效利用现有方案1和方案2的优点,缓解二者的缺点的平衡方案。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的业务处理方法的流程图一;
图2为本发明实施例提供的业务处理方法的流程图二;
图3为本发明实施例提供的调用管理***的结构示意图;
图4为本发明实施例提供的业务处理***的结构示意图;
图5为本发明实施例提供的计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明实施例中的各技术特征均可以相互结合。
在大型企业的信息技术***或者互联网大型***架构中,基于***扩展性、稳定性的需求,往往需要将大型***部署呈分布式多***架构。在分布式多***架构中,基于业务逻辑的需求,不同应用***之间需要基于远程过程调用(Remote Procedure Call,简称RPC)来实现接口数据通信。当用户在业务***上发起针对一个功能点的业务请求需要一个或多个关联***配合完成时,业务***需要对关联***进行RPC调用。
发明人发现,上述对关联***的RPC调用往往是在本地的JVM(Java VirtualMachine,Java虚拟机)中进行同步处理,故一旦关联***的服务出现故障,不能返回处理结果,则业务***只能等待超时,将会导致当前线程被挂起,进行等待,不能向用户反馈处理结果。而用户此时往往会再重新发起请求,而此时关联***已经不能正常提供服务,很容易在大并发请求时导致当前业务***的线程全部堵塞甚至出现JVM内存溢出,导致业务***的一个功能点故障引发整个业务***不可以使用。
为了解决以上问题,业务***在接收用户发送的业务请求后,可以先判断业务请求是否需要调用关联***,若是,则将业务请求进行转发,若否,则根据业务请求进行业务逻辑处理,获得处理结果,并向用户反馈处理结果。
其中,用户发送的一项业务请求可能针对业务***的一个或多个功能点。业务请求可以为查询、业务处理、存储等。
业务请求是否需要调用关联***主要包括以下几种情况:第一种,业务请求无需调用关联***,即业务***自身业务逻辑即可对该业务请求进行处理;第二种,业务请求只需要调用一个或多个关联***,即业务请求只需要一个或多个关联***的业务逻辑进行处理,无需业务***的业务逻辑进行处理;第三种,业务请求需要业务***的业务逻辑进行处理,同时还需要调用一个或多个关联***的业务逻辑进行处理。
当判断出该业务请求需要调用关联***时,业务***将用户发送的业务请求进行转发,例如发送给调用管理***,以使该调用管理***对该业务请求进行处理,获得处理结果,并将该处理结果反馈至用户。
当判断出该业务请求不需要调用关联***时,业务***直接对业务请求进行业务逻辑处理,获得处理结果。
业务***还可以在接收用户发送的业务请求之后,并在判断业务请求是否需要调用关联***之前,对所有业务逻辑进行划分,确定不需要调用关联***的业务逻辑,以及需要调用关联***的业务逻辑,对不需要调用关联***的各业务逻辑进行编号,确定需要调用关联***的各业务逻辑具体需要调用的关联***,并根据具体需要调用的关联***,对需要调用关联***的各业务逻辑进行编号。
例如,业务***A中包含有n个业务逻辑,n为大于1的正整数,例如100,业务逻辑A1~Ax为不需要调用关联***的业务逻辑,业务逻辑Ax+1~An为需要调用关联***的业务逻辑,x为大于或等于1且小于或等于n的正整数,例如90,将不需要调用关联***的业务逻辑A1~Ax编号为RPC(A1)~RPC(Ax),确定出业务逻辑A91~A100需要调用的关联***分别为B、B、C、D、E、C、E、B、D、E,将业务逻辑A91~A100分别编号为RPC(B1)、RPC(B2)、RPC(C1)、RPC(D1)、RPC(E1)、RPC(C2)、RPC(E2)、RPC(B2)、RPC(D2)和RPC(E3)。
以业务逻辑A91的编号RPC(B1)为例,其中的“B”指的是该业务逻辑A91需要调用关联***B,“1”指的是该业务逻辑为业务***A的所有业务逻辑中第一个(即编号最靠前的)需要调用关联***B的业务逻辑。其他类似描述理解方式同上,此处不再一一进行赘述。
需要说明的是,一个业务请求与一个或多个业务逻辑相对应,但每个业务逻辑均与一个***(业务***或者关联***)相对应,例如,业务请求1仅对应业务逻辑A1,业务请求2对应3个业务逻辑,业务逻辑A2、业务逻辑A3和业务逻辑A4,业务请求3对应3个业务逻辑,业务逻辑A91、业务逻辑A93和业务逻辑A94,业务请求4对应3个业务逻辑,业务逻辑A5、业务逻辑A95和业务逻辑A96。
与之对应地,“业务***直接对业务请求进行业务逻辑处理,获得处理结果”具体为根据业务请求调用对应编号的业务逻辑,获得处理结果。
在此实施例中,对业务***中的各业务逻辑进行了编号,可以应用该编号制定出处理业务请求的接口调用策略,可以更方便快速地对业务请求进行处理。
与之对应地,本发明实施例提供一种业务处理方法,适用于调用管理***(RPCManager),如图1所示,图1为本发明实施例提供的业务处理方法的流程图一,该业务处理方法包括:
步骤101、接收业务***转发的业务请求。
具体为,在根据用户发送的业务请求,判断业务请求需要调用关联***时,业务***将用户发送的业务请求进行转发,调用管理***接收业务***转发的业务请求。
步骤102、根据业务请求生成协程。
其中,协程(coroutine)是一种程序组件,其不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。一个程序可以包含多个协程,协程相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。
步骤103、通过协程对业务请求需要调用的关联***的RPC接口进行同步调用。
具体实现方式可以为,使用go语言编写调用管理***中的程序,进而标识该程序由协程进行调度。程序里面根据实际业务场景将来自业务***的业务请求进行处理,协调组织对不同的关联***的RPC接口的调用。
其中,调用管理***中可以设置有业务请求、业务逻辑与关联***之间的映射关系,业务逻辑用于对业务请求进行处理,步骤102具体为:根据业务请求、业务逻辑与关联***之间的映射关系,生成与业务请求对应的协程,以通过协程对关联***的RPC接口进行同步调用,以调用对应的关联***。例如,映射关系一:业务请求3对应3个业务逻辑,业务逻辑A91(RPC(B1))、业务逻辑A93(RPC(C1))和业务逻辑A94(RPC(D1)),三者执行顺序为RPC(B1)->RPC(C1)->RPC(D1),则调用管理***根据该映射关系生成对应的协程,进而依次调用关联***B、关联***C和关联***D;映射关系二:业务请求4对应3个业务逻辑,业务逻辑A5(RPC(A5))、业务逻辑A95(RPC(E1))和业务逻辑A96(RPC(C2)),三者执行顺序为RPC(A5)->RPC(E1)->RPC(C2),则调用管理***根据该映射关系生成对应的协程,进而依次调用业务***A、关联***E和关联***C。
需要说明的是,以业务逻辑A91(RPC(B1))为例,其中的“A91”指的是该业务逻辑在业务***A中的编号,“RPC(B1)中的B”指的是该业务逻辑需要调用关联***B,“RPC(B1)中的1”指的是该业务逻辑为业务***A的所有业务逻辑中第一个(即编号最靠前的)需要调用关联***B的业务逻辑。其他类似描述理解方式同上,此处不再一一进行赘述。
步骤104、判断协程是否异常挂起。
步骤105、在判断出协程异常挂起时,将协程与底层线程的关系移除。
如此设置可以避免底层线程受这个挂起的协程的影响。协程和底层线程的管理由虚拟机进行管理。此时,在判断出该协程异常挂起时,可以重新接收业务***转发的业务请求,该业务请求为用户重新发出的业务请求,上述重新发出的业务请求可以与之前的业务请求相同,也可以不同。
步骤106、在判断出协程未异常挂起时,从关联***接收处理结果。
具体为,管理调用***从最后调用的关联***接收处理结果。上述处理结果为关联***对业务请求进行处理获得的处理结果。
步骤107、向业务***反馈处理结果。
管理调用***将处理结果反馈给业务***。该处理结果为步骤106中接收的处理结果。
上述技术方案具有如下有益效果:由于接收转发的业务请求后,根据业务请求生成协程,通过协程对业务请求需要调用的关联***的RPC接口进行同步调用,以调用对应的关联***,一方面,仍然是采用同步调用进行多个关联***的RPC调用,可以避免异步调用带来的程序实现复杂度增加,另一方面,在该协程异常挂起时,将该协程与底层线程的关系移除,可以避免底层线程受这个挂起的协程的影响,可以有效降低同步方案中易导致线程池的全部线程堵死的概率,也就是说本方案是一种可有效利用现有方案1和方案2的优点,缓解二者的缺点的平衡方案。
可选地,在执行步骤104,判断出协程异常挂起之后,将异常信息输出到日志中,由于是同步调用,维护人员可以比较容易定位问题并进行改进。
具体地,在判断出协程异常挂起时,将异常信息输出到日志中包括:
在判断出协程异常挂起时,获取异常信息;对异常信息的等级进行判断;将异常信息输出到对应等级的日志中。以上等级包括但不限于debug、info、warn、Error和Fatal,其中,等级由低到高的顺序为debug<info<warn<Error<Fatal。
可选地,如图2所示,图2为本发明实施例提供的业务处理方法的流程图二,当业务***转发业务请求和用户信息时,上述业务处理方法还包括在步骤101中,接收业务***转发的业务请求时,接收业务***转发的用户信息,在步骤101之后,执行步骤108,根据业务请求和用户信息,进行安全认证校验,判断用户信息对应的用户是否具有相应权限;与之对应地,步骤102,根据业务请求生成协程,包括:在用户具有相应权限时根据业务请求生成协程。业务处理方法还包括:在用户不具有相应权限时,执行步骤109,向业务***报错。
此外,本发明实施例还提供一种调用管理***(RPC Manager),如图3所示,图3为本发明实施例提供的调用管理***的结构示意图,调用管理***包括第一RPC接口31、调用模块32、第一反馈模块33、判断模块34、移除模块35和协程生成模块36;第一RPC接口31用于接收业务***转发的业务请求;协程生成模块36用于根据业务请求生成协程;调用模块32用于通过协程对业务请求需要调用的关联***的RPC接口进行同步调用;第一反馈模块33用于向业务***反馈处理结果;判断模块34用于判断协程是否异常挂起;移除模块35用于在协程异常挂起时,将协程与底层线程的关系移除;第一RPC接口31还用于在判断出协程未异常挂起时,从关联***接收处理结果,处理结果为所述关联***对业务请求进行处理获得的处理结果。
可选地,如图3所示,本发明实施例提供的调用管理***还包括映射模块37,映射模块37用于生成业务请求、业务逻辑与关联***之间的映射关系,协程生成模块36具体用于根据映射关系,通过生成与业务请求对应的协程,业务逻辑用于对业务请求进行处理。
可选地,如图3所示,调用管理***还包括异常输出模块38,用于在协程异常挂起时,将异常信息输出到日志中。具体为,异常输出模块38在判断出协程异常挂起时,获取异常信息,对异常信息的等级进行判断,将异常信息输出到对应等级的日志中。
可选地,如图3所示,调用管理***还包括第一认证模块39,用于根据用户信息和业务请求,进行安全认证校验,判断用户是否具有相应权限。具体为,第一RPC接口31还用于接收业务***转发的用户信息,第一认证模块39根据业务请求和用户信息进行安全认证校验,判断用户信息对应的用户是否具有相应权限,协程生成模块36在用户具有相应权限时,根据业务请求生成协程,第一RPC接口31还用于在用户不具有相应权限时,向业务***报错。
另外,调用管理***还可以提供资源监控功能,对CPU、内存、协程等进行监控,相关信息同步给专门的分析***,该***可提供信息进行数据挖掘分析功能,以便开发、运维人员对遇到的问题进行分析。
此外,本发明实施例还提供一种业务处理***,如图4所示,图4为本发明实施例提供的业务处理***的结构示意图,该业务处理***包括业务***41、之前所述的调用管理***42和至少一个关联***43。调用管理***的具体内容可以参见之前所述内容,此处不再进行赘述。
可选地,该业务***包括:接收模块、第二RPC接口、业务判断模块、业务处理模块和第二反馈模块。其中,接收模块用于接收用户发送的业务请求;第二RPC接口用于在业务请求需要调用关联***时,将业务请求进行转发;业务判断模块用于根据业务请求,判断业务请求是否需要调用关联***;业务处理模块用于根据业务请求进行业务逻辑处理,获得处理结果;第二反馈模块用于向用户反馈处理结果。
可选地,该业务***还包括第二认证模块,第二认证模块用于根据用户信息和业务请求,进行安全认证校验,判断用户是否具有相应权限。接收模块具体用于在用户具有相应权限时,接收用户发送的业务请求和用户信息,以及在用户不具有相应权限时,拒绝接收用户发送的业务请求;第二RPC接口具体用于在业务请求需要调用关联***时,将用户发送的业务请求和用户信息进行转发;第二反馈模块还用于在拒绝接收用户发送的业务请求时,向用户报错。
可选地,该业务***还包括业务逻辑划分模块和编号模块;业务逻辑划分模块用于对业务***中的业务逻辑进行划分,获得不需要调用关联***的业务逻辑,以及需要调用关联***的业务逻辑;编号模块用于对不需要调用关联***的各业务逻辑进行编号,以及确定需要调用关联***的各业务逻辑具体需要调用的关联***,并根据具体需要调用的关联***,对需要调用关联***的各业务逻辑进行编号。与之对应地,业务处理模块具体用于根据业务请求调用对应编号的业务逻辑,获得处理结果。
此外,本发明实施例还提供一种计算机设备,如图5所示,图5为本发明实施例提供的计算机设备的结构示意图,该计算机设备包括存储器51、处理器52以及存储在存储器51中并可在处理器52上运行的计算机程序53,所述处理器执行所述计算机程序时实现以下方法:
步骤101、接收业务***转发的业务请求。
具体为,在根据用户发送的业务请求,判断业务请求需要调用关联***时,业务***将用户发送的业务请求进行转发,调用管理***接收业务***转发的业务请求。
步骤102、根据业务请求生成协程。
其中,协程(coroutine)是一种程序组件,其不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。一个程序可以包含多个协程,协程相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。
步骤103、通过协程对业务请求需要调用的关联***的RPC接口进行同步调用。
具体实现方式可以为,使用go语言编写调用管理***中的程序,进而标识该程序由协程进行调度。程序里面根据实际业务场景将来自业务***的业务请求进行处理,协调组织对不同的关联***的RPC接口的调用。
其中,调用管理***中可以设置有业务请求、业务逻辑与关联***之间的映射关系,业务逻辑用于对业务请求进行处理,步骤102具体为:根据业务请求、业务逻辑与关联***之间的映射关系,生成与业务请求对应的协程,以通过协程对关联***的RPC接口进行同步调用,以调用对应的关联***。例如,映射关系一:业务请求3对应3个业务逻辑,业务逻辑A91(RPC(B1))、业务逻辑A93(RPC(C1))和业务逻辑A94(RPC(D1)),三者执行顺序为RPC(B1)->RPC(C1)->RPC(D1),则调用管理***根据该映射关系生成对应的协程,进而依次调用关联***B、关联***C和关联***D;映射关系二:业务请求4对应3个业务逻辑,业务逻辑A5(RPC(A5))、业务逻辑A95(RPC(E1))和业务逻辑A96(RPC(C2)),三者执行顺序为RPC(A5)->RPC(E1)->RPC(C2),则调用管理***根据该映射关系生成对应的协程,进而依次调用业务***A、关联***E和关联***C。
需要说明的是,以业务逻辑A91(RPC(B1))为例,其中的“A91”指的是该业务逻辑在业务***A中的编号,“RPC(B1)中的B”指的是该业务逻辑需要调用关联***B,“RPC(B1)中的1”指的是该业务逻辑为业务***A的所有业务逻辑中第一个(即编号最靠前的)需要调用关联***B的业务逻辑。其他类似描述理解方式同上,此处不再一一进行赘述。
步骤104、判断协程是否异常挂起。
步骤105、在判断出协程异常挂起时,将协程与底层线程的关系移除。
如此设置可以避免底层线程受这个挂起的协程的影响。协程和底层线程的管理由虚拟机进行管理。此时,在判断出该协程异常挂起时,可以重新接收业务***转发的业务请求,该业务请求为用户重新发出的业务请求,上述重新发出的业务请求可以与之前的业务请求相同,也可以不同。
步骤106、在判断出协程未异常挂起时,从关联***接收处理结果。
具体为,管理调用***从最后调用的关联***接收处理结果。上述处理结果为关联***对业务请求进行处理获得的处理结果。
步骤107、向业务***反馈处理结果。
管理调用***将处理结果反馈给业务***。该处理结果为步骤106中接收的处理结果。
需要说明的是,之前所述的业务处理方法中的其他细节也均适用于此计算机设备,此处不再进行赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种业务处理方法,其特征在于,包括:
接收业务***转发的业务请求;
根据所述业务请求生成协程;
通过所述协程对所述业务请求需要调用的关联***的远程过程调用RPC接口进行同步调用;
判断所述协程是否异常挂起;
在判断出所述协程异常挂起时,将所述协程与底层线程的关系移除;
在判断出所述协程未异常挂起时,从所述关联***接收处理结果,所述处理结果为所述关联***对所述业务请求进行处理获得的处理结果,并向所述业务***反馈所述处理结果。
2.根据权利要求1所述的业务处理方法,其特征在于,所述根据所述业务请求生成协程,包括:
根据所述业务请求、业务逻辑与所述关联***之间的映射关系,生成与所述业务请求对应的协程,所述业务逻辑用于对所述业务请求进行处理。
3.根据权利要求1所述的业务处理方法,其特征在于,所述方法还包括:
在判断出所述协程异常挂起时,将异常信息输出到日志中。
4.根据权利要求3所述的业务处理方法,其特征在于,所述在判断出所述协程异常挂起时,将异常信息输出到日志中包括:
在判断出所述协程异常挂起时,获取异常信息;
对所述异常信息的等级进行判断;
将所述异常信息输出到对应等级的日志中。
5.根据权利要求1所述的业务处理方法,其特征在于,所述方法还包括:接收所述业务***转发的用户信息,根据所述业务请求和所述用户信息进行安全认证校验,判断所述用户信息对应的用户是否具有相应权限;
所述根据所述业务请求生成协程,包括:在所述用户具有相应权限时,根据所述业务请求生成协程;
所述方法还包括:在所述用户不具有相应权限时,向所述业务***报错。
6.一种调用管理***,其特征在于,包括:
第一RPC接口,用于接收业务***转发的业务请求;
协程生成模块,用于根据所述业务请求生成协程;
调用模块,用于通过所述协程对所述业务请求需要调用的关联***的RPC接口进行同步调用;
第一反馈模块,用于向所述业务***反馈处理结果;
判断模块,用于判断所述协程是否异常挂起;
移除模块,用于在所述协程异常挂起时,将所述协程与底层线程的关系移除;
所述第一RPC接口,还用于在判断出协程未异常挂起时,从关联***接收处理结果,所述处理结果为所述关联***对所述业务请求进行处理获得的处理结果。
7.根据权利要求6所述的调用管理***,其特征在于,还包括:
映射模块,用于生成所述业务请求、业务逻辑与所述关联***之间的映射关系;
所述协程生成模块具体用于根据所述映射关系,生成与所述业务请求对应的协程,所述业务逻辑用于对所述业务请求进行处理。
8.根据权利要求6所述的调用管理***,其特征在于,还包括:
异常输出模块,用于在所述协程异常挂起时,将异常信息输出到日志中。
9.根据权利要求6所述的调用管理***,其特征在于,还包括:
第一认证模块,用于根据用户信息和所述业务请求,进行安全认证校验,判断所述用户是否具有相应权限。
10.一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1~5任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810856671.6A CN109257411B (zh) | 2018-07-31 | 2018-07-31 | 一种业务处理方法、调用管理***和计算机设备 |
PCT/CN2018/113399 WO2020024469A1 (zh) | 2018-07-31 | 2018-11-01 | 一种业务处理方法、调用管理***和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810856671.6A CN109257411B (zh) | 2018-07-31 | 2018-07-31 | 一种业务处理方法、调用管理***和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109257411A true CN109257411A (zh) | 2019-01-22 |
CN109257411B CN109257411B (zh) | 2021-12-24 |
Family
ID=65049027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810856671.6A Active CN109257411B (zh) | 2018-07-31 | 2018-07-31 | 一种业务处理方法、调用管理***和计算机设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109257411B (zh) |
WO (1) | WO2020024469A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110336690A (zh) * | 2019-05-23 | 2019-10-15 | 平安银行股份有限公司 | 业务请求处理方法、装置、设备以及计算机可读存储介质 |
CN111859082A (zh) * | 2020-05-27 | 2020-10-30 | 伏羲科技(菏泽)有限公司 | 标识解析方法及装置 |
CN112328410A (zh) * | 2020-11-04 | 2021-02-05 | 网易(杭州)网络有限公司 | 远程过程调用的实现方法、装置、设备及存储介质 |
CN112905267A (zh) * | 2019-12-03 | 2021-06-04 | 阿里巴巴集团控股有限公司 | 虚拟机接入协程库的方法、装置及设备 |
CN113568686A (zh) * | 2020-10-30 | 2021-10-29 | 深圳市九九互动科技有限公司 | Lua语言的异步处理方法、装置、计算机设备和存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913792B (zh) * | 2020-07-17 | 2023-12-01 | 郑州阿帕斯数云信息科技有限公司 | 一种业务处理方法和装置 |
CN114090196A (zh) * | 2020-08-24 | 2022-02-25 | 华为技术有限公司 | 一种协程切换的方法、装置及设备 |
CN113360807B (zh) * | 2021-06-24 | 2023-03-31 | 平安普惠企业管理有限公司 | 混合模式移动应用的页面显示方法、装置及相关设备 |
CN114584500B (zh) * | 2022-02-25 | 2024-03-22 | 网易(杭州)网络有限公司 | 异步通信的测试方法、装置及电子设备 |
CN114760312B (zh) * | 2022-04-27 | 2024-06-18 | 泽拓科技(深圳)有限责任公司 | 分布式任务协调方法、装置、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130041540A (ko) * | 2011-10-17 | 2013-04-25 | 엔에이치엔(주) | 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치 |
CN104142858A (zh) * | 2013-11-29 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 阻塞任务调度方法及装置 |
US20150220352A1 (en) * | 2014-02-05 | 2015-08-06 | Travis T. Wilson | Method and System for Executing Third-Party Agent Code in a Data Processing System |
CN106598801A (zh) * | 2015-10-15 | 2017-04-26 | 中兴通讯股份有限公司 | 一种协程监控方法及装置 |
CN106844017A (zh) * | 2015-12-03 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 用于网站服务器处理事件的方法和设备 |
CN106980546A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及*** |
CN107147641A (zh) * | 2017-05-10 | 2017-09-08 | 深圳市万游引力科技有限公司 | 一种信息处理方法、***及计算机存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589925B2 (en) * | 2007-10-25 | 2013-11-19 | Microsoft Corporation | Techniques for switching threads within routines |
CN108123820B (zh) * | 2016-11-29 | 2021-04-30 | 北京神州泰岳软件股份有限公司 | 一种网络设备信息采集方法和装置 |
-
2018
- 2018-07-31 CN CN201810856671.6A patent/CN109257411B/zh active Active
- 2018-11-01 WO PCT/CN2018/113399 patent/WO2020024469A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130041540A (ko) * | 2011-10-17 | 2013-04-25 | 엔에이치엔(주) | 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치 |
CN104142858A (zh) * | 2013-11-29 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 阻塞任务调度方法及装置 |
US20160246643A1 (en) * | 2013-11-29 | 2016-08-25 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for scheduling blocking tasks |
US20150220352A1 (en) * | 2014-02-05 | 2015-08-06 | Travis T. Wilson | Method and System for Executing Third-Party Agent Code in a Data Processing System |
CN106598801A (zh) * | 2015-10-15 | 2017-04-26 | 中兴通讯股份有限公司 | 一种协程监控方法及装置 |
CN106844017A (zh) * | 2015-12-03 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 用于网站服务器处理事件的方法和设备 |
CN106980546A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及*** |
CN107147641A (zh) * | 2017-05-10 | 2017-09-08 | 深圳市万游引力科技有限公司 | 一种信息处理方法、***及计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
MARCELO COHEN: "Using Coroutines for RPC in Sensor Networks", 《2007 IEEE INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110336690A (zh) * | 2019-05-23 | 2019-10-15 | 平安银行股份有限公司 | 业务请求处理方法、装置、设备以及计算机可读存储介质 |
CN110336690B (zh) * | 2019-05-23 | 2022-09-20 | 平安银行股份有限公司 | 业务请求处理方法、装置、设备以及计算机可读存储介质 |
CN112905267A (zh) * | 2019-12-03 | 2021-06-04 | 阿里巴巴集团控股有限公司 | 虚拟机接入协程库的方法、装置及设备 |
CN112905267B (zh) * | 2019-12-03 | 2024-05-10 | 阿里巴巴集团控股有限公司 | 虚拟机接入协程库的方法、装置及设备 |
CN111859082A (zh) * | 2020-05-27 | 2020-10-30 | 伏羲科技(菏泽)有限公司 | 标识解析方法及装置 |
CN113568686A (zh) * | 2020-10-30 | 2021-10-29 | 深圳市九九互动科技有限公司 | Lua语言的异步处理方法、装置、计算机设备和存储介质 |
CN113568686B (zh) * | 2020-10-30 | 2023-11-28 | 深圳市九九互动科技有限公司 | Lua语言的异步处理方法、装置、计算机设备和存储介质 |
CN112328410A (zh) * | 2020-11-04 | 2021-02-05 | 网易(杭州)网络有限公司 | 远程过程调用的实现方法、装置、设备及存储介质 |
CN112328410B (zh) * | 2020-11-04 | 2023-08-08 | 网易(杭州)网络有限公司 | 远程过程调用的实现方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020024469A1 (zh) | 2020-02-06 |
CN109257411B (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109257411A (zh) | 一种业务处理方法、调用管理***和计算机设备 | |
Lin et al. | Moon: Mapreduce on opportunistic environments | |
CN109800160B (zh) | 机器学习***中的集群服务器故障测试方法和相关装置 | |
US11146641B2 (en) | Internet of things information system | |
US8291070B2 (en) | Determining an operating status of a remote host upon communication failure | |
CN109726004B (zh) | 一种数据处理方法及装置 | |
CN106354566B (zh) | 一种命令处理的方法以及服务器 | |
CN106201754A (zh) | 任务信息分析方法及装置 | |
US20190140982A1 (en) | Communication Methods and Systems, Electronic Devices, and Computer Clusters | |
US11656902B2 (en) | Distributed container image construction scheduling system and method | |
CN106933664A (zh) | 一种Hadoop集群的资源调度方法及装置 | |
CN110781009A (zh) | 浏览器页面实时通信的方法及装置 | |
CN116841705A (zh) | 一种基于云原生的分布式调度监控***及其部署方法 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
US10783007B2 (en) | Load distribution for integration scenarios | |
WO2024088026A1 (zh) | 一种云数据迁移的优化方法及*** | |
CN109246071A (zh) | 业务处理方法、业务***、调用管理***和业务处理*** | |
CN106502842A (zh) | 数据恢复方法及*** | |
CN114756301B (zh) | 日志处理方法、装置和*** | |
US20180309702A1 (en) | Method and device for processing data after restart of node | |
CN110412947A (zh) | 工业设备控制方法及其***、存储设备 | |
CN113672374A (zh) | 用于联邦学习和隐私计算的任务调度方法及*** | |
CN107818122A (zh) | 一种代理组件、搜索管理方法及搜索管理*** | |
WO2016077570A1 (en) | System for cross-host, multi-thread session alignment | |
CN109189753A (zh) | 一种在hue中添加用户信息的方法及装置 |
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 |