一种***间调用方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种***间调用方法及装置。
背景技术
在大型企业的信息技术(InformationTechnology,IT)***或者互联网大型***架构中,基于***扩展性、稳定性的需求,往往需要将大型***部署成分布式多***架构。
在分布式多***架构中,基于业务逻辑的需求,不同应用***之间需要基于远程过程调用协议(Remote Procedure Call Protocol,RPC)来实现接口数据通信。当一个业务请求需要多个应用***配合完成时,每一级应用***会根据自己的需求对传递的方法参数对象进行处理,并将处理后的方法参数对象传递给下一级应用***继续处理。可见,最后一级应用***接收的方法参数对象是经过多级处理后的数据,如果数据出现问题(比如某个属性缺失或者不符合格式约定),当需要进行问题定位时,只能自下而上,依次对每一级应用***进行追查定位,定位效率较低。
为了避免对应用***一级一级进行追查定位,有方案提出,通过第三方***如消息总线,提供中转服务,每次调用下一级应用***时,将调用方法和传递的方法参数对象发送到消息总线,消息总线基于调用方法获取并记录传递的方法参数对象对应的上下文信息,下一级应用***可以通过消息总线来获取传递的方法参数对象对应的上下文信息,但这种方式需要额外引入消息总线,增加了***成本和实施复杂度,对现有***改造太大。
发明内容
本申请实施例提供一种***间调用方法,用以实现在不引入消息总线等第三方***的前提下,提高分布式多***架构下的问题定位效率。
本申请实施例提供一种***间调用方法,包括:
第一应用***在确定需要调用第二应用***时,基于远程过程调用协议RPC框架为该第一应用***待传输的方法参数对象配置上下文信息;
所述第一应用***基于RPC框架对所述方法参数对象和配置的上下文信息进行序列化处理后,传输给第二应用***。
可选地,第一应用***基于RPC框架为该第一应用***待传输的方法参数对象配置上下文信息,包括:
所述第一应用***在通过RPC框架检测到所述方法参数对象具有上下文信息配置指示标识后,为所述方法参数对象配置上下文信息。
可选地,所述第一应用***基于RPC框架对所述方法参数对象和配置的上下文信息进行序列化处理,包括:
创建包含所述方法参数对象和配置的上下文信息的复合对象,对创建的复合对象进行序列化处理;或者,
分别对所述方法参数对象和配置的上下文信息进行序列化处理。
可选地,所述上下文信息包括以下信息中的一种或多种:
第一应用***的名称、第一应用***的服务器IP地址、调用的类名、方法名。
本申请另一实施例提供一种***间调用方法,包括:
第二应用***基于远程过程调用协议RPC框架对第一应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理;
所述第二应用***基于RPC框架,对反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
可选地,第二应用***基于RPC框架对第一应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理,包括:
对序列化后的包含方法参数对象和上下文信息的复合对象进行反序列化处理;或者,
分别对序列化后的方法参数对象和序列化后的上下文信息进行反序列化处理。
可选地,所述第二应用***基于RPC框架,对反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息之后,还包括:
在确定需要调用第三应用***时,基于RPC框架为该第二应用***进行方法调用后得到的待传输的方法参数对象配置上下文信息;
基于RPC框架,对该第二应用***待传输的方法参数对象、为该待传输的方法参数对象配置的上下文信息、以及所述第一应用***发送的上下文信息进行序列化处理后,传输给所述第三应用***。
可选地,所述第二应用***基于RPC框架,对反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息之后,还包括:
在接收到针对所述上下文信息的查询请求后,提取并反馈保存的所述上下文信息。
本申请实施例提供一种***间调用装置,包括:
配置模块,用于在确定需要调用第二应用***时,基于远程过程调用协议RPC框架为该第一应用***待传输的方法参数对象配置上下文信息;
传输模块,用于基于RPC框架对所述方法参数对象和配置的上下文信息进行序列化处理后,传输给第二应用***。
本申请另一实施例提供一种***间调用装置,包括:
处理模块,用于基于远程过程调用协议RPC框架对第一应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理;
执行模块,用于基于RPC框架,对反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
本申请实施例中,在通过第一应用***的RPC框架调用第二应用***时,为传递的方法参数对象配置上下文信息,并将配置的上下文信息与传递的方法参数对象一起进行序列化处理后传输给第二应用***。如此,每一级应用***都可以在基于RPC框架进行方法参数对象的序列化处理时,增加自己传递的方法参数对象对应的上下文信息;这样,最后一级应用***,也即底层应用***保存的上下文信息中,记载了最终输出的方法参数对象对应的整个调用链路的信息,从而可以在不引入消息总线等第三方***的前提下,提高分布式多***架构下的问题定位效率。
附图说明
图1为本申请实施例一提供的***间调用方法流程图;
图2为本申请实施例二提供的***间调用方法流程图;
图3为本申请实施例三提供的***间调用方法流程图;
图4为进行***间调用的示意图;
图5为本申请实施例四提供的***间调用装置结构示意图;
图6为本申请实施例五提供的***间调用装置结构示意图。
具体实施方式
本申请实施例的基本思想是:对进行***间调用的RPC框架进行扩展,在进行序列化处理时增加上下文信息。具体地,在通过第一应用***的RPC框架调用第二应用***时,为传递的方法参数对象配置上下文信息,并将配置的上下文信息与传递的方法参数对象一起进行序列化处理后传输给第二应用***。如此,每一级应用***都可以在基于RPC框架进行方法参数对象的序列化处理时,增加自己传递的方法参数对象对应的上下文信息;这样,最后一级应用***,也即底层应用***保存的上下文信息中,记载了最终输出的方法参数对象对应的整个调用链路的信息,从而可以在不引入消息总线等第三方***的前提下,提高分布式多***架构下的问题定位效率。
下面结合说明书附图对本申请实施例作进一步详细描述。
实施例一
如图1所示,为本申请实施例一提供的***间调用方法流程图,包括以下步骤:
S101:第一应用***在确定需要调用第二应用***时,基于远程过程调用协议RPC框架为该第一应用***待传输的方法参数对象配置上下文信息。
在涉及多***调用的业务处理中,第一应用***在完成业务逻辑处理后,需要将处理后得到的方法参数对象传递给第二应用***继续进行处理,也即通过第一应用***的RPC框架,向第二应用***的RPC框架发起调用第二应用***的请求,以调用第二应用***的业务方法继续进行业务逻辑处理。
这里,上下文信息可以包括以下信息中的一种或多种:
第一应用***的名称、第一应用***的服务器IP地址、调用的类名、方法名。
通过第一应用***配置的上下文信息,可以追踪在方法参数对象的整个调用链路中由第一应用***负责的方法调用过程。
S102:第一应用***基于RPC框架对所述方法参数对象和配置的上下文信息进行序列化处理后,传输给第二应用***。
该步骤中,第一应用***的RPC框架将需要传递的上下文信息和方法参数对象一起进行序列化处理后传输给下一级应用***。实际上,这里利用了RPC调用的序列化处理机制,在序列化处理过程中完成了上下文信息的添加。
S103:第二应用***基于远程过程调用协议RPC框架对第一应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理。
这里,第二应用***的RPC框架对接收的序列化后的方法参数对象和上下文信息进行反序列化处理,得到原始的方法参数对象和上下文信息。
S104:第二应用***基于反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
这里,第二应用***基于反序列化后的方法参数对象,调用业务方法,进行自身业务逻辑的处理;将反序列化后的上下文信息保存起来,保存的上下文信息可以用于继续向下一级应用***传递,或者用于查询。
实施例二
如图2所示,为本申请实施例二提供的***间调用方法流程图,包括以下步骤:
S201:第一应用***在需要调用第二应用***时,通过RPC框架检测待传输的方法参数对象是否具有上下文信息配置指示标识,若是,则进入S203,否则,进入S202。
在具体实施中,可以预先设置哪些类、方法或属性等需要配置上下文信息,并在需要配置上下文信息的类/方法/属性的名称等设定位置处添加上下文信息配置指示标识,比如@HoldContext;在进行业务逻辑处理得到相关方法参数对象后,通常查找该方法参数对象对应的类/方法/属性的设定位置处是否具有上下文信息配置指示标识来确定是否需要配置该方法参数对象对应的上下文信息。
S202:第一应用***基于RPC框架,对待传输的方法参数对象进行序列化处理后传输给第二应用***。
这里,若待传输的方法参数对象无需进行上下文信息配置,则可以第一应用***的RPC框架可以直接对改方法参数对象进行序列化处理后传输给第二应用***。
S203:第一应用***基于RPC框架,为所述方法参数对象配置上下文信息,并创建包含所述方法参数对象和配置的上下文信息的复合对象,对创建的复合对象进行序列化处理后传输给第二应用***;或者,分别对所述方法参数对象和配置的上下文信息进行序列化处理后传输给第二应用***。
这里,第一应用***的RPC框架可以将方法参数对象和配置的上下文信息作为一个复合对象进行序列化处理,也可以分别对这两种对象进行序列化处理。
S204:第二应用***基于RPC框架,对序列化后的包含方法参数对象和上下文信息的复合对象进行反序列化处理;或者,分别对序列化后的方法参数对象和序列化后的上下文信息进行反序列化处理。
与S203对应,第二应用***的RPC框架在进行反序列化处理时,可以是对方法参数对象和上下文信息的复合对象进行反序列化处理,也可以是分别对方法参数对象和上下文信息这两种对象进行反序列化处理。
S205:第二应用***基于RPC框架,对反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
这里,第二应用***的RPC框架基于反序列化后的方法参数对象,调用业务方法,第二应用***进行自身业务逻辑的处理;第二应用***的RPC框架将反序列化后的上下文信息保存起来,保存的上下文信息可以用于继续向下一级应用***传递,或者用于查询。具体地,若第二应用***不是当前业务的最底层的应用***,则第二应用***基于RPC框架,将进行业务逻辑后得到的方法参数对象与该方法参数对象对应的上下文信息,以及之前接收的上下文信息进行序列化处理后传输至下一级应用***。若第二应用***是当前业务的最底层的应用***,可以保存该上下文信息,供后续查询使用。该思想将在实施例三中作进一步介绍。
实施例三
如图3所示,为本申请实施例三提供的***间调用方法流程图,图4为与之对应的***间调用示意图,该实施例三包括以下步骤:
S301:第一应用***在确定需要调用第二应用***时,基于RPC框架为该第一应用***待传输的方法参数对象配置上下文信息。
如图4所示,首先,开发人员可以通过第一应用***的开发接口为需要保持上下文的类/属性/方法等的设定位置处添加上下文信息配置指示标识,比如@HoldContext。
第一应用***的RPC框架在接收到调用第二应用***的指令后,检测待传输的方法参数对象对应的设定位置处是否具有对应的上下文信息配置指示标识,若有,则为该待传输的方法参数对象配置上下文信息。
S302:第一应用***基于RPC框架对所述方法参数对象和配置的上下文信息进行序列化处理后,传输给第二应用***。
如图4所示,第一应用***的RPC框架将待传输的方法参数对象和配置的上下文信息进行序列化处理后,将序列化后的方法参数对象和配置的上下文信息传输给第二应用***的RPC框架,也即第二应用***继续进行处理。
S303:第二应用***基于RPC框架对第一应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理;基于反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
如图4所示,第二应用***的RPC框架对接收的列化后的方法参数对象和上下文信息进行反序列化处理;第二应用***的RPC框架基于反序列化后的方法参数对象进行业务方法调用,第二应用***基于调用的业务方法,进行自身业务逻辑处理。
S304:第二应用***在确定需要调用第三应用***时,基于RPC框架为该第二应用***进行方法调用后得到的待传输的方法参数对象配置上下文信息。
S305:第二应用***基于RPC框架,对该第二应用***待传输的方法参数对象、为该待传输的方法参数对象配置的上下文信息、以及所述第一应用***发送的上下文信息进行序列化处理后,传输给第三应用***。
如图4所示,第二应用***的RPC框架在接收到调用第三应用***的指令后,为进行业务方法调用后得到的待传输的方法参数对象配置上下文信息,并将该方法参数对象、配置上下文信息、以及之前的上下文信息一起进行序列化处理后传输给第三应用***。
S306:第三应用***基于RPC框架对第二应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理;基于反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
如图4所示,第三应用***的RPC框架对接收的序列化的信息进行反序列化处理,保存反序列化后的所有上下文信息;使用反序列化后的方法参数对象进行业务方法调用,第三应用***基于调用的业务方法,进行自身业务逻辑处理(比如风险识别业务逻辑处理)。
第三应用***的RPC框架提供上下文信息服务接口,在接收到针对任一方法参数对象的上下文信息查询请求后,基于RPC框架查询该方法参数对象对应的调用链路,并提取该调用链路上的每个方法参数对象对应的上下文信息。
基于同一发明构思,本申请实施例中还提供了与***间调用方法对应的***间调用装置,由于该装置解决问题的原理与本申请实施例***间调用方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
实施例四
如图5所示,为本申请实施例四提供的***间调用装置结构示意图,包括:
配置模块51,用于在确定需要调用第二应用***时,基于远程过程调用协议RPC框架为该第一应用***待传输的方法参数对象配置上下文信息;
传输模块52,用于基于RPC框架对所述方法参数对象和配置的上下文信息进行序列化处理后,传输给第二应用***。
可选地,所述配置模块51具体用于:
在通过RPC框架检测到所述方法参数对象具有上下文信息配置指示标识后,为所述方法参数对象配置上下文信息。
可选的,所述传输模块52具体用于:
创建包含所述方法参数对象和配置的上下文信息的复合对象,对创建的复合对象进行序列化处理;或者,
分别对所述方法参数对象和配置的上下文信息进行序列化处理。
可选地,所述上下文信息包括以下信息中的一种或多种:
第一应用***的名称、第一应用***的服务器IP地址、调用的类名、方法名。
实施例五
如图6所示,为本申请实施例五提供的***间调用装置结构示意图,包括:
处理模块61,用于基于远程过程调用协议RPC框架对第一应用***传输的序列化后的方法参数对象和上下文信息进行反序列化处理;
执行模块62,用于基于RPC框架,对反序列化后的方法参数对象进行方法调用,并保存反序列化后的上下文信息。
可选地,所述处理模块61具体用于:
对序列化后的包含方法参数对象和上下文信息的复合对象进行反序列化处理;或者,
分别对序列化后的方法参数对象和序列化后的上下文信息进行反序列化处理。
可选地,所述执行模块62还用于:
在确定需要调用第三应用***时,基于RPC框架为该第二应用***进行方法调用后得到的待传输的方法参数对象配置上下文信息;基于RPC框架,对该第二应用***待传输的方法参数对象、为该待传输的方法参数对象配置的上下文信息、以及所述第一应用***发送的上下文信息进行序列化处理后,传输给所述第三应用***。
可选地,所述执行模块62还用于:
在接收到针对所述上下文信息的查询请求后,提取并反馈保存的所述上下文信息。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。