CN111240857A - 一种远程服务调用***及调用方法 - Google Patents
一种远程服务调用***及调用方法 Download PDFInfo
- Publication number
- CN111240857A CN111240857A CN202010006224.9A CN202010006224A CN111240857A CN 111240857 A CN111240857 A CN 111240857A CN 202010006224 A CN202010006224 A CN 202010006224A CN 111240857 A CN111240857 A CN 111240857A
- Authority
- CN
- China
- Prior art keywords
- service
- request
- unit
- service request
- remote
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000012545 processing Methods 0.000 claims abstract description 50
- 238000012790 confirmation Methods 0.000 claims abstract description 17
- 239000000284 extract Substances 0.000 claims abstract description 7
- 238000001514 detection method Methods 0.000 claims description 51
- 230000007246 mechanism Effects 0.000 claims description 17
- 238000011156 evaluation Methods 0.000 claims description 11
- 238000012423 maintenance Methods 0.000 claims description 5
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
Images
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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种远程服务调用***及调用方法,属于RPC调用技术领域;其中,服务管理端连接多个服务请求端,以及连接多个服务提供端。服务管理端接收服务请求端发送的请求数据并暂存,同时广播服务请求给服务提供端;服务提供端根据服务请求上传自身的执行能力;服务管理端根据服务请求对执行能力进行匹配,以选择出相应的服务提供端并下发执行确认指令;服务提供端根据执行确认指令反馈执行反馈信息,以建立任务执行链接;随后当服务提供端准备开始处理服务请求时,服务提供端从服务管理端提取请求数据并进行处理。上述技术方案的有益效果是:从服务提供方的角度来进行调用服务的分配和管理,减少调用服务的等待时间,提高服务执行效率。
Description
技术领域
本发明涉及RPC调用技术领域,尤其涉及一种远程服务调用***及调用方法。
背景技术
远程过程调用(Remote Procedure Call,RPC)是一种远程数据或者服务调用的机制,概括来说,一个程序运行端可以通过RPC调用机制向另一个远程的服务端发起调用请求,请求调用该服务端的应用商部署的函数/方法,或者请求调用该服务端内保存的数据。在RPC调用的过程中,调用方无需了解被调用方的底层操作,而可以很方便地实现服务调用,例如调用方在调用函数时无需获知被调用方的函数实现方式,只需要获得函数计算结果即可。在RPC调用过程中,当调用方向被调用方发起调用请求时,调用方相关的进程会被挂起(程序运行中断),被调用方的被调用的进程开始执行,调用方可以直接通过参数传输的方式将请求服务的相关数据发送给被调用方,然后根据被调用方的数据处理得到相应的结果,从而恢复相关进程(程序恢复运行)。整个过程对于使用者来说是不可知的,看不到任何消息传递的过程。
现有技术中的RPC调用机制中,如图1中所示,在网络上可能发布了多个服务提供方,多个服务提供方都可以提供相同的功能服务,这些服务提供方都可以作为被调用方进行调用。当调用方产生某个服务调用需求时,该调用方会根据某种预定的选择策略选择其中一个服务提供方作为被调用方并向其发送请求数据,被调用方根据请求数据进行处理后向调用方反馈处理结果,整个调用过程结束。
由于网络中可能存在多个服务提供方,因此调用方需要采用预定的选择策略对服务提供方进行选择,以避免某个被调用方的负担过重导致调用服务不畅,常用的选择策略包括平均分配原则或者依序分配原则等。然而,所有选择策略均是从调用方的角度进行的选择,并不考虑各个服务提供方当前的实际运行状态和处理能力,有时候的分配结果无法跟被调用方的当前状态相匹配,从而导致调用服务处于长期等待的过程中,或者导致服务执行失败,综合考虑往往无法达到最佳的服务调用效果。
发明内容
根据现有技术中存在的问题,现提供一种远程服务调用***及调用方法的技术方案,旨在从服务提供方的角度来进行调用服务的分配和管理,使得分配情况更贴合于各个服务提供方的实际运行状态,从而减少调用服务的等待时间,提高调用服务的执行效率。
上述技术方案具体包括:
一种远程服务调用***,所述远程服务调用***连接多个服务请求端,所述服务请求端在正常运行程序的过程中若需要调用特定服务,则所述服务请求端中断运行程序,并向所述远程服务调用***发送相应的请求数据;
其中,所述远程服务调用***包括一服务管理端以及多个服务提供端,每个所述服务提供端分别连接所述服务管理端;
所述服务管理端包括:
数据接收单元,用于接收所述服务请求端发送的所述请求数据并进行暂存;
请求生成单元,连接所述数据接收单元,用于根据所述请求数据生成相应的服务请求,并将所述服务请求广播至各个所述服务提供端;
能力接收单元,用于接收各个所述服务提供端根据所述服务请求上报的执行能力;
能力匹配单元,分别连接所述请求生成单元和所述能力接收单元,用于根据所述服务请求对各个所述服务提供端上报的所述执行能力进行匹配,以选择至少一个所述服务提供端并输出选择结果;
指令下发单元,连接所述能力匹配单元,用于根据所述选择结果,向被选择的所述服务提供端下发执行确认指令;
第一反馈单元,用于将被选择的所述服务提供端回传的对于所述请求数据的处理结果反馈至所述服务请求端;
每个所述服务提供端包括:
能力上报单元,在接收到所述服务请求后,所述能力上报单元将所述服务提供端自身的执行能力上报至所述服务管理端;
指令反馈单元,在接收到所述执行确认指令后,所述指令反馈单元向所述服务管理端发送相应的执行反馈信息,以确认将对所述服务请求进行处理;
服务提供单元,当所述服务提供端准备对所述服务请求进行处理时,所述服务提供单元从所述服务管理端提取暂存的所述请求数据并进行处理,输出相应的处理结果;
结果反馈单元,连接所述服务提供单元,用于将所述处理结果反馈至所述服务管理端;
当所述服务请求端接收到所述处理结果后,恢复运行程序。
优选的,该远程服务调用***,其中,所述能力上报单元进一步包括:
能力获取模块,在接收到所述服务请求后,所述能力获取模块获取所述服务提供端自身的当前运行状态;
能力评估模块,连接所述能力获取模块,用于根据所述当前运行状态评估得到所述执行能力;
能力上报模块,连接所述能力评估模块,用于向所述服务管理端上报所述执行能力。
优选的,该远程服务调用***,其中,所述当前运行状态包括下述中的至少一种:
所述服务提供端的线程数;
所述服务提供端的内存容量;
所述服务提供端当前正在执行的任务状态;以及
所述服务提供端当前正等待执行的任务状态。
优选的,该远程服务调用***,其中:
每个所述服务提供端还包括:
第一检测单元,用于检测所述服务提供端是否出现能够被检测到的故障,并输出第一检测结果;
列表生成单元,分别连接所述第一检测单元和所述服务提供单元,用于在所述第一检测结果表示所述服务提供端出现故障时形成一服务请求列表,所述服务请求列表中包括所述服务提供端尚未开始处理的所述服务请求;
列表发送单元,连接所述列表生成单元,用于将所述服务请求列表发送至所述服务管理端;
所述服务管理端还包括:
列表接收单元,连接所述能力匹配单元,用于接收所述服务请求列表并发送至所述能力匹配单元;
所述能力匹配单元还用于根据所述服务请求列表中包括的各项所述服务请求,分别对之前已经接收到的各个所述服务提供端上报的所述执行能力重新进行匹配,以针对各项所述服务请求重新选择所述服务提供端并重新输出所述选择结果。
优选的,该远程服务调用***,其中,所述故障服务提供端是否出现能够被检测到的故障包括下述中的至少一种:
所述服务提供端进行例行维护;以及
所述服务提供端接收到外部输入的指令以停止对所述服务请求进行处理。
优选的,该远程服务调用***,其中,所述服务管理端还包括:
第二检测单元,用于检测各个所述服务提供端与所述服务管理端之间的连接是否出现故障,并输出第二检测结果;
第二反馈单元,分别连接所述第二检测单元和所述能力匹配单元,用于在所述第二检测结果表示所述服务管理端与所述服务提供端之间的连接出现故障时,根据出现故障的所述服务提供端所对应的所有所述服务请求,分别向对应的所述服务请求端发送用于表示服务提供出错的故障反馈结果;
当所述服务请求端接收到所述故障反馈结果后,恢复运行程序。
优选的,该远程服务调用***,其中,所述第二检测单元采用心跳检测的方式检测各个所述服务提供端与所述服务管理端之间的连接是否出现故障。
优选的,该远程服务调用***,其中,每个所述服务请求端还分别连接所有所述服务提供端;
每个所述服务请求端中还包括:
第三检测单元,用于检测所述服务管理端与所述服务请求端之间的连接是否出现故障,并输出第三检测结果;
服务选择单元,连接所述第三检测单元,用于在所述第三检测结果表示所述服务管理端与所述服务请求端之间的连接出现故障时,直接选择一个所述服务提供端并下发所述请求数据;
所述服务提供端接收所述请求数据并进行处理后直接向所述服务请求端反馈所述处理结果;
当所述服务请求端接收到所述处理结果后,恢复运行程序。
优选的,该远程服务调用***,其中,所述第三检测单元采用心跳检测的方式检测所述服务管理端与所述服务请求端之间的连接是否出现故障。
优选的,该远程服务调用***,其中,所述服务管理端为网关。
一种远程服务调用方法,其中,应用于上述的远程服务调用***,并包括:
步骤S1,所述服务请求端在正常运行程序的过程中,若需要调用特定服务,则所述服务请求端中断运行程序,并向所述远程服务调用***发送相应的请求数据;
步骤S2,所述远程服务调用***中的所述服务管理端暂存所述请求数据,随后根据所述请求数据生成相应的服务请求,并将所述服务请求广播至各个所述服务提供端;
步骤S3,各个所述服务提供端接收到所述服务请求后,将所述服务提供端自身的执行能力上报至所述服务管理端;
步骤S4,所述服务管理端根据所述服务请求对各个所述服务提供端上报的所述执行能力进行匹配,以选择至少一个所述服务提供端并输出选择结果;
步骤S5,所述服务管理端根据所述选择结果,向被选择的所述服务提供端下发执行确认指令,随后接收所述服务提供端反馈的执行反馈信息;
步骤S6,当接收到所述执行确认指令的所述服务提供端准备对所述服务请求进行处理时,所述服务提供端从所述服务管理端提取暂存的所述请求数据并进行处理,输出相应的处理结果;
步骤S7,所述服务管理端将所述处理结果反馈至所述服务请求端;
步骤S8,所述服务请求端根据所述处理结果恢复运行程序,随后返回所述步骤S1。
优选的,该远程服务调用方法,其中,还包括所述服务提供端主动检测故障的机制,具体包括:
步骤A1,所述服务提供端检测所述服务提供端是否出现能够被检测到的故障,并在检测出现故障时转向步骤A2;
步骤A2,所述服务提供端形成一服务请求列表并发送至所述服务管理端,所述服务请求列表中包括所述服务提供端尚未开始处理的所述服务请求;
步骤A3,所述服务管理端根据所述服务请求列表中包括的各项所述服务请求,分别对之前已经接收到的各个所述服务提供端上报的所述执行能力重新进行匹配,以针对各项所述服务请求重新选择所述服务提供端并重新输出所述选择结果,随后转向所述步骤S5。
优选的,该远程服务调用方法,其中,还包括所述服务管理端检测故障的机制,具体包括:
步骤B1,所述服务管理端检测各个所述服务提供端与所述服务管理端之间的连接是否出现故障,并在检测出现故障时转向步骤B2;
步骤B2,所述服务管理端根据出现故障的所述服务提供端所对应的所有所述服务请求,分别向对应的所述服务请求端发送用于表示服务提供出错的故障反馈结果;
步骤B3,所述服务请求端接收到所述故障反馈结果后恢复运行程序,随后返回所述步骤S1。
优选的,该远程服务调用方法,其中,每个所述服务请求端还分别连接所有所述服务提供端;
所述远程服务调用方法中还包括所述服务请求端检测故障的机制,具体包括:
步骤C1,所述服务请求端检测所述服务管理端与所述服务请求端之间的连接是否出现故障,并在检测出现故障时转向步骤C2;
步骤C2,所述服务请求端直接选择一个所述服务提供端并下发所述请求数据;
步骤C3,所述服务提供端处理完所述服务请求后反馈给所述服务请求端相应的所述处理结果;
步骤C4,所述服务请求端根据所述处理结果恢复运行程序,随后返回所述步骤S1。
上述技术方案的有益效果是:
1)提供一种远程服务调用***,能够从服务提供方的角度来进行调用服务的分配和管理,使得分配情况更贴合于各个服务提供方的实际运行状态,从而减少调用服务的等待时间,提高调用服务的执行效率。
2)提供一种远程服务调用方法,使得远程服务调用***正常运行。
附图说明
图1是现有技术中的远程RPC调用机制的示意框图;
图2是本发明的较佳的实施例中,一种远程服务调用***的总体***结构示意图;
图3是本发明的较佳的实施例中,于图2的基础上,能力上报单元的具体结构示意图;
图4是本发明的较佳的实施例中,包括第一检测单元的远程服务调用***的***结构示意图;
图5是本发明的较佳的实施例中,包括第二检测单元的远程服务调用***的***结构示意图;
图6是本发明的较佳的实施例中,包括第三检测单元的远程服务调用***的***结构示意图;
图7是本发明的较佳的实施例中,一种远程服务调用方法的总体流程示意图;
图8是本发明的较佳的实施例中,服务提供端主动检测故障机制的流程示意图;
图9是本发明的较佳的实施例中,服务管理端检测故障机制的流程示意图;
图10是本发明的较佳的实施例中,服务请求端检测故障机制的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
本发明的较佳的实施例中,根据现有技术中存在的上述问题,现提供一种远程服务调用***,该远程服务调用***A具体如图2中所示,连接多个服务请求端B,服务请求端B在正常运行程序的过程中若需要调用特定服务,则服务请求端B中断运行程序,并向远程服务调用***A发送相应的请求数据。
则远程服务调用***A具体包括一服务管理端A1以及多个服务提供端A2,每个服务提供端A2分别连接服务管理端A1;
服务管理端A1包括:
数据接收单元A11,用于接收服务请求端发送的请求数据并进行暂存;
请求生成单元A12,连接数据接收单元A11,用于根据请求数据生成相应的服务请求,并将服务请求广播至各个服务提供端A2;
能力接收单元A13,用于接收各个服务提供端A2根据服务请求上报的执行能力;
能力匹配单元A14,分别连接请求生成单元A12和能力接收单元A13,用于根据服务请求对各个服务提供端A2上报的执行能力进行匹配,以选择至少一个服务提供端A2并输出选择结果;
指令下发单元A15,连接能力匹配单元A14,用于根据选择结果,向被选择的服务提供端A2下发执行确认指令;
第一反馈单元A16,用于将被选择的服务提供端A2回传的对于请求数据的处理结果反馈至服务请求端B;
每个服务提供端A2包括:
能力上报单元A21,在接收到服务请求后,能力上报单元A21将服务提供端A2自身的执行能力上报至服务管理端A1;
指令反馈单元A22,在接收到执行确认指令后,指令反馈单元A22向服务管理端A1发送相应的执行反馈信息,以确认将对服务请求进行处理;
服务提供单元A23,当服务提供端A2准备对服务请求进行处理时,服务提供单元A23从服务管理端A1提取暂存的请求数据并进行处理,输出相应的处理结果;
结果反馈单元A24,连接服务提供单元A23,用于将处理结果反馈至服务管理端A1;
当服务请求端B接收到处理结果后,恢复运行程序。
具体地,本实施例中,多个服务请求端B(图中仅示出一个)连接远程服务调用***,即连接其中的服务管理端A1服务管理端A1连接各个服务提供端A2(图中仅示出一个),并代替现有技术中的服务请求方来承担调用任务分配和管理的职责。首先服务请求端B在运行程序的过程中产生了调用服务的请求,则会将相应的请求数据(调用服务需要用到的实际数据)发送至服务管理端A1中暂存,该请求数据同样指示了服务请求端B需要调用的服务类型。此时服务管理端A1根据请求数据形成相应的服务请求,该服务请求用于指示本次请求所涉及的调用服务的类型。上述服务管理端A1通过广播的方式向所有能够提供该服务的服务提供端A2发送上述服务请求。
进一步地,每个服务提供端A2在初始上线并接入服务管理端A1时,会将自身能够提供的服务一并注册到服务管理端A1中,因此服务管理端A1在广播服务请求时,可以根据服务请求所涉及的调用服务的类型选择相应的多个能够提供服务的服务提供端A2并进行广播。
本实施例中,服务提供端A2根据接收到的服务请求,将自身的执行能力上报至服务管理端A1。服务管理端A1根据本次服务请求,从所有上报的执行能力中进行匹配得到最优的服务提供端A2,随后服务管理端A1将该服务提供端A2选为被调用方并下发执行确认指令,以告知该服务提供端A2任务已经分配。若该服务提供端A2接受该分配,则向服务管理端A1反馈一个执行反馈信息,从而建立关于该调用服务的任务执行链接。当然,若服务管理端A1没有收到服务提供端A2反馈的执行反馈信息(例如设定一个接收反馈信息的等待时间),则服务管理端A1根据之前收到的其他执行能力重新开始匹配,即重新选择服务提供端A2并下发执行确认指令。上述过程可以重复执行,直至成功建立任务执行链接为止。
本实施例中,当任务执行链接建立之后,服务提供端A2会在需要开始执行调用服务时再去服务管理端A1中提取暂存的请求数据。通常来说,现有技术中都是调用方直接将数据推送至被调用方,但是若此时被调用方暂时没有空闲资源来接收并处理数据,那么调用方的数据推送进程就会一直被挂起,直到被调用方接收数据为止,这是调用方才有可能去做其他事情。本实施例中采用服务提供端A2在执行服务时再去服务管理端A1提取请求数据的方式,避免了服务管理端A1中有可能长期挂起数据传输进程的问题,并且服务提供端A2处理服务请求更为灵活。
本实施例中,当服务提供端A2处理完服务请求后,会将处理结果反馈给服务管理端A1,则服务管理端A1将该处理结果反馈给服务请求端B,以使服务请求端B能够重新恢复运行程序,本次服务调用的过程结束。
本发明的较佳的实施例中,如图3中所示,上述能力上报单元A21进一步包括:
能力获取模块A211,在接收到服务请求后,能力获取模块A211获取服务提供端自身的当前运行状态;
能力评估模块A212,连接能力获取模块A211,用于根据当前运行状态评估得到执行能力;
能力上报模块A213,连接能力评估模块A212,用于向服务管理端A1上报执行能力。
当前运行状态包括下述中的至少一种:
服务提供端的线程数;
服务提供端的内存容量;
服务提供端当前正在执行的任务状态;以及
服务提供端当前正等待执行的任务状态。
具体地,本实施例中,上述服务提供端A2在接收到服务管理端A1广播的服务请求后再将自身的执行能力上报至服务管理端A1。
上述执行能力实际上是服务提供端A2根据自身当前的运行情况来预测接下来可能的运行情况,从而对自身的执行能力做出一定的评估。具体而言,在接收到上述服务请求后,服务提供端A2实时检测自身的当前运行状态,例如服务提供端能够提供的总线程数以及总内存容量,服务提供端当前正在执行以及正在等待执行的任务状态和数量,服务提供端当前已被占用的线程数和内存容量,以及服务提供端当前空闲的线程数和内存容量等。随后服务提供端A2根据检测到的当前运行状态评估得到一个该服务提供端A2的执行能力,用来表示该服务提供端A2接下来执行服务请求所对应的调用服务的预测效果。该评估方法可以为根据上述当前运行状态进行综合加权后得到的评分分数,或者根据上述当前运行状态中的某一项或者某几项重要参数进行加权后得到的评分分数,在此不再赘述。应当注意的是,为了便于服务管理端A1进行匹配和选择,所有服务提供端A2所采用的评估方法应当是相同的。
由于执行能力的预测结果可以为评估分数,因此在服务管理端A1对执行能力的匹配过程可以简化为评估分数的排序过程,即选择评估分数最优的服务提供端A2。
在一些情况下,服务请求端B请求调用的服务可能并不看中综合的执行能力,反而比较看中一些单项能力,例如对于一些复杂运算类的调用服务,其占用的内存容量可能较大,对于其他的运行参数反倒并不十分关心。在这种情况下,服务管理端A1根据服务提供端A2上传的执行能力中关联于单项能力的评分进行选择,而不需要根据执行能力整体进行选择。
本发明的较佳的实施例中,如图4中所示,远程服务调用***中的每个服务提供端A2还包括:
第一检测单元A25,用于检测服务提供端A2是否出现能够被检测到的故障,并输出第一检测结果;
列表生成单元A26,分别连接第一检测单元A25和服务提供单元A23,用于在第一检测结果表示服务提供端A2出现故障时形成一服务请求列表,服务请求列表中包括服务提供端A2尚未开始处理的服务请求;
列表发送单元A27,连接列表生成单元A26,用于将服务请求列表发送至服务管理端A1;
则服务管理端A1还包括:
列表接收单元A17,连接能力匹配单元A14,用于接收服务请求列表并发送至能力匹配单元A14;
能力匹配单元A14还用于根据服务请求列表中包括的各项服务请求,分别对之前已经接收到的各个服务提供端A2上报的执行能力重新进行匹配,以针对各项服务请求重新选择服务提供端A2并重新输出选择结果。
具体地,本实施例中所述的“能够被检测到的故障”一般指的是预期故障,例如服务器的例行维护,或者服务器根据外部输入指令停止提供服务(例如临时维护或者指示不提供服务等),这些故障通常是可以被预知并且被预先提供给服务管理端A1的。在即将发生上述故障时,正在执行调用服务的服务提供端A2会将当前尚未开始处理的服务请求包括在一服务请求列表中发送给服务管理端A1。所谓“尚未开始处理”的服务请求,是指尚未从服务管理端A1中获取请求数据的服务请求,此类服务请求适合于服务管理端A1进行重新分配。则服务管理端A1根据之前已经获得的各个服务提供端A2的执行能力,依照服务请求列表中包括的服务请求依次重新进行匹配,并根据重新匹配的结果重新向不同的服务提供端A2下发执行确认指令,即重新进行一次服务请求的分配过程。
本发明的较佳的实施例中,如图5中所示,远程服务调用***中的服务管理端A1还包括:
第二检测单元A18,用于检测各个服务提供端A2与服务管理端A1之间的连接是否出现故障,并输出第二检测结果;
第二反馈单元A19,分别连接第二检测单元A18和能力匹配单元A14,用于在第二检测结果表示服务管理端A1与服务提供端A2之间的连接出现故障时,根据出现故障的服务提供端A2所对应的所有服务请求,分别向对应的服务请求端B发送用于表示服务提供出错的故障反馈结果;
当服务请求端B接收到故障反馈结果后,恢复运行程序。
第二检测单元A18采用心跳检测的方式检测各个服务提供端A2与服务管理端A1之间的连接是否出现故障。
具体地,本实施例中,上述服务管理端A1检测的故障通常属于网络异常故障,也就是服务提供端A2发生掉线或者***崩溃等故障,这种故障是服务提供端A2自身难以预知的,因此由服务管理端A1采用心跳检测的方式进行检测。当然,各个服务提供端A2之间也可以采用互相心跳检测的方式来检测服务提供端A2是否在线,并将检测结果回传给服务管理端A1。
相应地,当服务提供端A2因为例行维护或者外部指令指示离线或不提供服务等原因停止服务时,此类情况也由第二检测单元A18通过心跳检测的方式探测得到。
本实施例中,服务管理端A1只检测成功建立任务执行链接(即已经接受调用任务)的服务提供端A2是否在线,或者只指示其他服务提供端A2检测已经与服务管理端A1成功建立任务执行链接的服务提供端A2是否在线,这样能够节省***资源。
本实施例中,当服务管理端A1探知到正在提供调用服务的服务提供端A2掉线时,该服务管理端A1不再进行重新分配,而是直接将错误信息告知服务请求端B,以供其恢复运行程序。这样做的原因是,一旦服务提供端A2掉线或者***崩溃,之前已经开始的调用服务的执行状态完全无法得知,因此出于业务安全的考虑不进行重新分配,只告知错误信息。
本发明的较佳的实施例中,如图6中所示,远程服务调用***中的每个服务请求端B还分别连接所有服务提供端A2;
每个服务请求端B中还包括:
第三检测单元B1,用于检测服务管理端A1与服务请求端B之间的连接是否出现故障,并输出第三检测结果;
服务选择单元B2,连接第三检测单元B1,用于在第三检测结果表示服务管理端A1与服务请求端B之间的连接出现故障时,直接选择一个服务提供端A2并下发请求数据;
服务提供端A2接收请求数据并进行处理后直接向服务请求端B反馈处理结果;
当服务请求端B接收到处理结果后,恢复运行程序。
第三检测单元B1采用心跳检测的方式检测服务管理端A1与服务请求端B之间的连接是否出现故障。
具体地,本实施例中检测的是服务管理端A1是否能够正常工作。为了避免网关无法正常工作引起的整个远程服务调用***崩溃,因此将服务请求端B直连至每个服务提供端A2,即在本发明技术方案中添加了现有技术中的RPC调用方式。当服务请求端B检测到服务管理端A1无法正常工作时,服务请求端B转为采用现有技术中的RPC调用方式来请求相应的服务提供端A2执行调用服务,相关过程在此不再赘述。
本发明的较佳的实施例中,上述三种检测方法可以同时适用,也可以任选其中一种或者两种适用,在此不再赘述。
本发明的较佳的实施例中,上述服务管理端A1为网关设备。
本发明的较佳的实施例中,基于上文中所述的远程服务调用***,现提供一种远程服务调用方法,具体如图7中所示,包括:
步骤S1,服务请求端在正常运行程序的过程中,若需要调用特定服务,则服务请求端中断运行程序,并向远程服务调用***发送相应的请求数据;
步骤S2,远程服务调用***中的服务管理端暂存请求数据,随后根据请求数据生成相应的服务请求,并将服务请求广播至各个服务提供端;
步骤S3,各个服务提供端接收到服务请求后,将服务提供端自身的执行能力上报至服务管理端;
步骤S4,服务管理端根据服务请求对各个服务提供端上报的执行能力进行匹配,以选择至少一个服务提供端并输出选择结果;
步骤S5,服务管理端根据选择结果,向被选择的服务提供端下发执行确认指令,随后接收服务提供端反馈的执行反馈信息;
步骤S6,当接收到执行确认指令的服务提供端准备对服务请求进行处理时,服务提供端从服务管理端提取暂存的请求数据并进行处理,输出相应的处理结果;
步骤S7,服务管理端将处理结果反馈至服务请求端;
步骤S8,服务请求端根据处理结果恢复运行程序,随后返回步骤S1。
本发明的较佳的实施例中,上述远程服务调用方法中还包括服务提供端主动检测故障的机制,具体如图8中所示,包括:
步骤A1,服务提供端检测服务提供端是否出现能够被检测到的故障,并在检测出现故障时转向步骤A2;
步骤A2,服务提供端形成一服务请求列表并发送至服务管理端,服务请求列表中包括服务提供端尚未开始处理的服务请求;
步骤A3,服务管理端根据服务请求列表中包括的各项服务请求,分别对之前已经接收到的各个服务提供端上报的执行能力重新进行匹配,以针对各项服务请求重新选择服务提供端并重新输出选择结果,随后转向步骤S5。
本发明的较佳的实施例中,上述远程服务调用方法中还包括服务管理端检测故障的机制,具体如图9中所示,包括:
步骤B1,服务管理端检测各个服务提供端与服务管理端之间的连接是否出现故障,并在检测出现故障时转向步骤B2;
步骤B2,服务管理端根据出现故障的服务提供端所对应的所有服务请求,分别向对应的服务请求端发送用于表示服务提供出错的故障反馈结果;
步骤B3,服务请求端接收到故障反馈结果后恢复运行程序,随后返回步骤S1。
本发明的较佳的实施例中,上述远程服务调用方法中还包括服务请求端检测故障的机制,具体如图10中所示,包括:
步骤C1,服务请求端检测服务管理端与服务请求端之间的连接是否出现故障,并在检测出现故障时转向步骤C2;
步骤C2,服务请求端直接选择一个服务提供端并下发请求数据;
步骤C3,服务提供端处理完服务请求后反馈给服务请求端相应的处理结果;
步骤C4,服务请求端根据处理结果恢复运行程序,随后返回步骤S1。
当然,如上文中所述,本发明技术方案中,可以选择上述三种检测机制中的至少一种应用在远程服务调用方法中,在此不再赘述。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。
Claims (14)
1.一种远程服务调用***,所述远程服务调用***连接多个服务请求端,所述服务请求端在正常运行程序的过程中若需要调用特定服务,则所述服务请求端中断运行程序,并向所述远程服务调用***发送相应的请求数据;
其特征在于,所述远程服务调用***包括一服务管理端以及多个服务提供端,每个所述服务提供端分别连接所述服务管理端;
所述服务管理端包括:
数据接收单元,用于接收所述服务请求端发送的所述请求数据并进行暂存;
请求生成单元,连接所述数据接收单元,用于根据所述请求数据生成相应的服务请求,并将所述服务请求广播至各个所述服务提供端;
能力接收单元,用于接收各个所述服务提供端根据所述服务请求上报的执行能力;
能力匹配单元,分别连接所述请求生成单元和所述能力接收单元,用于根据所述服务请求对各个所述服务提供端上报的所述执行能力进行匹配,以选择至少一个所述服务提供端并输出选择结果;
指令下发单元,连接所述能力匹配单元,用于根据所述选择结果,向被选择的所述服务提供端下发执行确认指令;
第一反馈单元,用于将被选择的所述服务提供端回传的对于所述请求数据的处理结果反馈至所述服务请求端;每个所述服务提供端包括:
能力上报单元,在接收到所述服务请求后,所述能力上报单元将所述服务提供端自身的执行能力上报至所述服务管理端;
指令反馈单元,在接收到所述执行确认指令后,所述指令反馈单元向所述服务管理端发送相应的执行反馈信息,以确认将对所述服务请求进行处理;
服务提供单元,当所述服务提供端准备对所述服务请求进行处理时,所述服务提供单元从所述服务管理端提取暂存的所述请求数据并进行处理,输出相应的处理结果;
结果反馈单元,连接所述服务提供单元,用于将所述处理结果反馈至所述服务管理端;当所述服务请求端接收到所述处理结果后,恢复运行程序。
2.如权利要求1所述的远程服务调用***,其特征在于,所述能力上报单元进一步包括:
能力获取模块,在接收到所述服务请求后,所述能力获取模块获取所述服务提供端自身的当前运行状态;
能力评估模块,连接所述能力获取模块,用于根据所述当前运行状态评估得到所述执行能力;
能力上报模块,连接所述能力评估模块,用于向所述服务管理端上报所述执行能力。
3.如权利要求1所述的远程服务调用***,其特征在于,所述当前运行状态包括下述中的至少一种:
所述服务提供端的线程数;
所述服务提供端的内存容量;
所述服务提供端当前正在执行的任务状态;以及
所述服务提供端当前正等待执行的任务状态。
4.如权利要求1所述的远程服务调用***,其特征在于:
每个所述服务提供端还包括:
第一检测单元,用于检测所述服务提供端是否出现能够被检测到的故障,并输出第一检测结果;
列表生成单元,分别连接所述第一检测单元和所述服务提供单元,用于在所述第一检测结果表示所述服务提供端出现故障时形成一服务请求列表,所述服务请求列表中包括所述服务提供端尚未开始处理的所述服务请求;
列表发送单元,连接所述列表生成单元,用于将所述服务请求列表发送至所述服务管理端;所述服务管理端还包括:
列表接收单元,连接所述能力匹配单元,用于接收所述服务请求列表并发送至所述能力匹配单元;
所述能力匹配单元还用于根据所述服务请求列表中包括的各项所述服务请求,分别对之前已经接收到的各个所述服务提供端上报的所述执行能力重新进行匹配,以针对各项所述服务请求重新选择所述服务提供端并重新输出所述选择结果。
5.如权利要求4所述的远程服务调用***,其特征在于,所述故障服务提供端是否出现能够被检测到的故障包括下述中的至少一种:
所述服务提供端进行例行维护;以及
所述服务提供端接收到外部输入的指令以停止对所述服务请求进行处理。
6.如权利要求1所述的远程服务调用***,其特征在于,所述服务管理端还包括:
第二检测单元,用于检测各个所述服务提供端与所述服务管理端之间的连接是否出现故障,并输出第二检测结果;
第二反馈单元,分别连接所述第二检测单元和所述能力匹配单元,用于在所述第二检测结果表示所述服务管理端与所述服务提供端之间的连接出现故障时,根据出现故障的所述服务提供端所对应的所有所述服务请求,分别向对应的所述服务请求端发送用于表示服务提供出错的故障反馈结果;
当所述服务请求端接收到所述故障反馈结果后,恢复运行程序。
7.如权利要求6所述的远程服务调用***,其特征在于,所述第二检测单元采用心跳检测的方式检测各个所述服务提供端与所述服务管理端之间的连接是否出现故障。
8.如权利要求1所述的远程服务调用***,其特征在于,每个所述服务请求端还分别连接所有所述服务提供端;
每个所述服务请求端中还包括:
第三检测单元,用于检测所述服务管理端与所述服务请求端之间的连接是否出现故障,并输出第三检测结果;
服务选择单元,连接所述第三检测单元,用于在所述第三检测结果表示所述服务管理端与所述服务请求端之间的连接出现故障时,直接选择一个所述服务提供端并下发所述请求数据;
所述服务提供端接收所述请求数据并进行处理后直接向所述服务请求端反馈所述处理结果;
当所述服务请求端接收到所述处理结果后,恢复运行程序。
9.如权利要求8所述的远程服务调用***,其特征在于,所述第三检测单元采用心跳检测的方式检测所述服务管理端与所述服务请求端之间的连接是否出现故障。
10.如权利要求1所述的远程服务调用***,其特征在于,所述服务管理端为网关。
11.一种远程服务调用方法,其特征在于,应用于如权利要求1-10中任意一项所述的远程服务调用***,并包括:
步骤S1,所述服务请求端在正常运行程序的过程中,若需要调用特定服务,则所述服务请求端中断运行程序,并向所述远程服务调用***发送相应的请求数据;
步骤S2,所述远程服务调用***中的所述服务管理端暂存所述请求数据,随后根据所述请求数据生成相应的服务请求,并将所述服务请求广播至各个所述服务提供端;
步骤S3,各个所述服务提供端接收到所述服务请求后,将所述服务提供端自身的执行能力上报至所述服务管理端;
步骤S4,所述服务管理端根据所述服务请求对各个所述服务提供端上报的所述执行能力进行匹配,以选择至少一个所述服务提供端并输出选择结果;
步骤S5,所述服务管理端根据所述选择结果,向被选择的所述服务提供端下发执行确认指令,随后接收所述服务提供端反馈的执行反馈信息;
步骤S6,当接收到所述执行确认指令的所述服务提供端准备对所述服务请求进行处理时,所述服务提供端从所述服务管理端提取暂存的所述请求数据并进行处理,输出相应的处理结果;
步骤S7,所述服务管理端将所述处理结果反馈至所述服务请求端;
步骤S8,所述服务请求端根据所述处理结果恢复运行程序,随后返回所述步骤S1。
12.如权利要求11所述的远程服务调用方法,其特征在于,还包括所述服务提供端主动检测故障的机制,具体包括:
步骤A1,所述服务提供端检测所述服务提供端是否出现能够被检测到的故障,并在检测出现故障时转向步骤A2;
步骤A2,所述服务提供端形成一服务请求列表并发送至所述服务管理端,所述服务请求列表中包括所述服务提供端尚未开始处理的所述服务请求;
步骤A3,所述服务管理端根据所述服务请求列表中包括的各项所述服务请求,分别对之前已经接收到的各个所述服务提供端上报的所述执行能力重新进行匹配,以针对各项所述服务请求重新选择所述服务提供端并重新输出所述选择结果,随后转向所述步骤S5。
13.如权利要求11所述的远程服务调用方法,其特征在于,还包括所述服务管理端检测故障的机制,具体包括:
步骤B1,所述服务管理端检测各个所述服务提供端与所述服务管理端之间的连接是否出现故障,并在检测出现故障时转向步骤B2;
步骤B2,所述服务管理端根据出现故障的所述服务提供端所对应的所有所述服务请求,分别向对应的所述服务请求端发送用于表示服务提供出错的故障反馈结果;
步骤B3,所述服务请求端接收到所述故障反馈结果后恢复运行程序,随后返回所述步骤S1。
14.如权利要求11所述的远程服务调用方法,其特征在于,每个所述服务请求端还分别连接所有所述服务提供端;
所述远程服务调用方法中还包括所述服务请求端检测故障的机制,具体包括:
步骤C1,所述服务请求端检测所述服务管理端与所述服务请求端之间的连接是否出现故障,并在检测出现故障时转向步骤C2;
步骤C2,所述服务请求端直接选择一个所述服务提供端并下发所述请求数据;
步骤C3,所述服务提供端处理完所述服务请求后反馈给所述服务请求端相应的所述处理结果;
步骤C4,所述服务请求端根据所述处理结果恢复运行程序,随后返回所述步骤S1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010006224.9A CN111240857B (zh) | 2020-01-03 | 2020-01-03 | 一种远程服务调用***及调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010006224.9A CN111240857B (zh) | 2020-01-03 | 2020-01-03 | 一种远程服务调用***及调用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111240857A true CN111240857A (zh) | 2020-06-05 |
CN111240857B CN111240857B (zh) | 2023-02-21 |
Family
ID=70865226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010006224.9A Active CN111240857B (zh) | 2020-01-03 | 2020-01-03 | 一种远程服务调用***及调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240857B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360314A (zh) * | 2011-10-28 | 2012-02-22 | 中国科学院计算技术研究所 | 一种数据中心资源管理***和方法 |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
CN103002039A (zh) * | 2012-12-13 | 2013-03-27 | 北京奇虎科技有限公司 | 服务器调度***和方法 |
CN105813102A (zh) * | 2014-12-30 | 2016-07-27 | 展讯通信(上海)有限公司 | 一种自动测试***及方法 |
US20170034310A1 (en) * | 2015-07-29 | 2017-02-02 | Netapp Inc. | Remote procedure call management |
CN108960773A (zh) * | 2018-06-28 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 业务管理方法、计算机设备和存储介质 |
CN109460980A (zh) * | 2018-09-27 | 2019-03-12 | 深圳市汇邦企业服务有限公司 | 一种管理平台、企业服务管理***及管理方法 |
-
2020
- 2020-01-03 CN CN202010006224.9A patent/CN111240857B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
CN102360314A (zh) * | 2011-10-28 | 2012-02-22 | 中国科学院计算技术研究所 | 一种数据中心资源管理***和方法 |
CN103002039A (zh) * | 2012-12-13 | 2013-03-27 | 北京奇虎科技有限公司 | 服务器调度***和方法 |
CN105813102A (zh) * | 2014-12-30 | 2016-07-27 | 展讯通信(上海)有限公司 | 一种自动测试***及方法 |
US20170034310A1 (en) * | 2015-07-29 | 2017-02-02 | Netapp Inc. | Remote procedure call management |
CN108960773A (zh) * | 2018-06-28 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 业务管理方法、计算机设备和存储介质 |
CN109460980A (zh) * | 2018-09-27 | 2019-03-12 | 深圳市汇邦企业服务有限公司 | 一种管理平台、企业服务管理***及管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111240857B (zh) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111818159B (zh) | 数据处理节点的管理方法、装置、设备及存储介质 | |
CA3168286A1 (en) | Data flow processing method and system | |
US6918051B2 (en) | Node shutdown in clustered computer system | |
CN111209110B (zh) | 一种实现负载均衡的任务调度管理方法、***和存储介质 | |
US20140026000A1 (en) | Highly available server system based on cloud computing | |
US20080288812A1 (en) | Cluster system and an error recovery method thereof | |
US7925922B2 (en) | Failover method and system for a computer system having clustering configuration | |
CN111858007A (zh) | 一种基于消息中间件的任务调度方法方法和装置 | |
CN108762932A (zh) | 一种集群任务调度***及处理方法 | |
CN111538585B (zh) | 一种基于node.js的服务器进程调度方法、***和装置 | |
CN115373799A (zh) | 一种集群管理的方法、装置及电子设备 | |
CN112162839A (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN111209098A (zh) | 一种智能渲染调度方法、服务器、管理节点及存储介质 | |
JP2003173272A (ja) | 情報処理システム,情報処理装置及び保守センタ | |
CN111240857B (zh) | 一种远程服务调用***及调用方法 | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
CN111309456B (zh) | 一种任务执行方法及*** | |
CN116719623A (zh) | 作业调度方法、作业结果处理方法及其装置 | |
CN112269693B (zh) | 一种节点自协调方法、装置和计算机可读存储介质 | |
CN115237558A (zh) | 一种任务调度方法及装置、***、存储介质、计算机设备 | |
CN111782364A (zh) | 服务调用方法、装置、电子设备及存储介质 | |
CN115811470B (zh) | 一种基于高可用消息框架的异步数据处理方法及其*** | |
CN107783855B (zh) | 虚拟网元的故障自愈控制装置及方法 | |
CN112328375B (zh) | 一种用于跟踪分布式***的数据片段的关联方法和装置 | |
CN111597037B (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231018 Address after: Room A320, 3rd Floor, No. 1359 Zhonghua Road, Huangpu District, Shanghai, 200010 Patentee after: Shanghai Jiaran Information Technology Co.,Ltd. Address before: 200001 4th floor, Fengsheng building, 763 Mengzi Road, Huangpu District, Shanghai Patentee before: SHANGHAI HANDPAL INFORMATION TECHNOLOGY SERVICE Co.,Ltd. |