远程服务调用方法、装置、电子设备及存储介质
文献发布时间:2023-06-19 19:38:38
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种远程服务调用方法、装置、电子设备及存储介质。
背景技术
分布式系统会设计统一的接入层,各个模块的前端接口设计在接入层,现有模式下,当接口变更时,需要修改接入层代码并且重启接入层服务才能生效。接入层接口耦合的方式,会导致不同业务模块服务互相受到影响,非常不利于管理维护。并且系统达到一定量级时,需要设计一个基础网关统一处理异常处理、数据安全、流量控制、版本控制,而后端的业务系统只用关心自身业务逻辑。网关其实就是业务系统的一个前置层,把一些业务系统需要处理的通用逻辑前置到网关,避免业务系统的重复开发,提高开发效率。分布式服务内部通过RPC(Remote Procedure Call,远程过程调用)的方式实现服务间的调用,并且实现了服务负载均衡、服务容错、服务治理等功能,但并未提供服务网关的功能,导致微服务集群无法打通和外部服务的通讯。
Dubbo是一种高性能的服务框架,能够使应用通过高性能的RPC实现服务的输出和输入功能,目前Dubbo对于服务调用提供了两种方式:服务接口直接调用和泛化调用。而现有技术普遍使用构建服务网关,通过Dubbo泛化调用的方式,实现外部服务同Dubbo构建的服务集群进行通讯。泛化调用虽然屏蔽外部系统不需了解微服务内部调用的复杂性,但是,由于参数传递复杂,在后续调用时的配置数据操作时间较长,导致存在调用效率低的问题。此外,通过Dubbo泛化调用的方式,还会导致Dubbo回声测试不可用。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种远程服务调用方法、装置、电子设备及存储介质,以至少解决现有技术中存在的远程服务调用效率低的技术问题。
根据本发明实施例的一个方面,提供了一种远程服务调用方法,包括:接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务;对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息;基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务;基于目标服务接口调用目标服务。
进一步地,在基于解析结果从服务接口缓存区域中获取目标服务接口之前,获取多个服务的元数据信息,其中,元数据信息用于表征每个服务对应的接口信息;基于元数据信息生成多个接口文件,其中,每个服务与一个接口文件相对应;对多个接口文件进行处理,生成多个服务接口,并将多个服务接口存储至服务接口缓存区域中。
进一步地,在获取多个服务的元数据信息之后,对根目录进行监测,其中,根目录用于存储多个服务;在监测到根目录中存在第一服务时,获取第一服务的元数据信息,其中,第一服务为根目录中新增的服务;基于第一服务的元数据信息生成第一服务对应的服务接口,并将服务接口存储至服务接口缓存区域中。
进一步地,在对调用参数进行解析,得到解析结果之后,基于解析结果检测目标服务是否满足限流规则,其中,限流规则用于对目标服务的流量传输上限进行限制;在目标服务不满足限流规则时,依据限流规则对目标服务进行限流处理。
进一步地,解析结果中至少包括目标服务接口的唯一标识,基于解析结果从服务接口缓存区域中获取目标服务接口,包括:检测服务接口缓存区域中是否存在与唯一标识对应的服务接口;在服务接口缓存区域中存在与唯一标识对应的服务接口时,确定唯一标识对应的服务接口为目标服务接口;在服务接口缓存区域中不存在与唯一标识对应的服务接口时,执行服务接口加载操作,其中,服务接口加载操作用于基于每个服务的元数据信息生成与每个服务对应的服务接口。
进一步地,在执行服务接口加载操作之后,检测服务接口加载操作是否执行成功;在服务接口加载操作执行成功时,根据目标服务接口的唯一标识重新从服务接口缓存区域中获取目标服务接口;在服务接口加载操作执行失败时,确定目标服务接口不存在。
根据本发明实施例的另一方面,还提供了一种远程服务调用装置,包括:接收模块,用于接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务;解析模块,用于对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息;获取模块,用于基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务;调用模块,用于基于目标服务接口调用目标服务。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的远程服务调用方法。
根据本发明实施例的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的远程服务调用方法。
根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的远程服务调用方法。
在本发明实施例中,采用基于解析结果从服务接口缓存区域中获取目标服务接口的方式,首先通过接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务;然后对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息;基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务;最后基于目标服务接口调用目标服务。
在上述过程中,通过从服务接口缓存区域中确定目标服务接口,减少了服务调用时的配置数据操作的时间,进而提升了远程服务调用的效率,解决了现有技术中存在的远程服务调用效率低的技术问题。
由此可见,本申请所提供的方案达到了基于目标服务接口调用目标服务的目的,从而实现了提高远程服务调用效率的技术效果,进而解决了现有技术中存在的远程服务调用效率低技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的远程服务调用方法的示意图;
图2是根据本发明实施例的一种可选的分布式系统整体架构的示意图;
图3根据本发明实施例的一种可选的远程服务调用方法的流程图;
图4根据本发明实施例的一种可选的网关启动逻辑的流程图;
图5是根据本发明实施例的一种可选的远程服务调用装置的示意图;
图6根据本发明实施例的一种可选的电子设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本发明所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
实施例1
根据本发明实施例,提供了一种远程服务调用方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
其中,为了方便理解本申请的技术方案,以下为对本申请中的一些关键术语的具体定义:
网关服务:网关服务是一种API网关,为服务的访问提供单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的路由转发、过滤和公共处理等。服务网关屏蔽服务的底层通讯,降低服务访问的复杂性,解决异构系统的通讯问题。
泛化调用:泛化调用就是服务消费者端因为某种原因没有该服务接口,例如是跨语言的服务接口,若想调用某个java接口,不能按照约定去写一个个的接口,Dubbo不是跨语言的RPC框架,但可以通过搭建一个简单的javaweb项目,引入了Dubbo的jar包,使用Dubbo的泛化调用,然后利用web返回json,这样便能完成跨语言的调用。简而言之,泛化调用是指在调用方没有服务方提供的API(SDK)的情况下,对服务方进行调用,并且可以拿到调用结果。
编译期:编译期是指把源码交给编译器编译成计算机可以执行的文件的过程。在Java中也就是把Java代码编成class文件的过程。编译期只是做了一些翻译功能,并没有把代码放在内存中运行起来,而只是把代码当成文本进行操作,比如检查错误。
运行期:运行期是把编译后的文件交给计算机执行,直到程序运行结束。运行期就是把在磁盘中的代码放到内存中执行起来。
Java反射机制:Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信息。在Java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。
图1是根据本发明实施例的远程服务调用方法的示意图,如图1所示,该方法包括如下步骤:
步骤S101,接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务。
在步骤S101中,可以基于系统接收远程服务调用请求,在本实施中,通过系统的服务网关接收远程服务调用请求,其中,该系统可以为分布式系统。
可选的,服务网关提供路由转发、过滤、公共处理等功能,屏蔽服务的底层通讯。如图2所示,异构系统发起http服务请求,通过F5(F5方案)负载均衡服务器或nginx负载均衡服务器将http请求(即远程服务调用请求)分发到服务网关集群,从服务网关集群中任选一台服务网关完成远程服务调用请求接收。
可选的,系统的服务网关接收远程服务调用请求,通过服务网关的servlet容器实现该请求的拦截,根据HttpRequest获取目标服务的调用参数。
步骤S102,对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息。
在步骤S102中,如图3所示,解析结果包括目标服务对应的接口名称、接口地址、所属群组、所属应用、版本、接口全部方法名、方法的入参、返回结果等信息。系统通过对远程服务调用请求中包含的目标服务的调用参数进行解析得到上述信息。
步骤S103,基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务。
步骤S104,基于目标服务接口调用目标服务。
在步骤S103-步骤S104中,解析结果中至少包括目标服务接口的唯一标识,系统通过解析结果中包含的唯一标识,从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域为服务网关启动时生成的JVM缓存区域,存储了所有服务对应的服务接口,其静态变量类型为HashMap,key为服务名+群组+版本。在获取目标服务接口之后,如图3所示,基于目标服务接口开始Dubbo的RPC调用目标服务,从zookeeper注册集群中心获取到远程服务地址,然后发起远程调用。
可选的,如图2所示,可通过服务网关集群进行RPC调用,调用分布式服务集群中的服务,从zookeeper注册集群中心获取到远程服务地址。
需要说明的是,通过从服务接口缓存区域中确定目标服务接口,减少了服务调用时的配置数据操作的时间,进而提升了远程服务调用的效率,解决了现有技术中存在的远程服务调用效率低的技术问题。并且通过从服务接口缓存区域中确定目标服务接口调用目标接口,解决了现有技术通过Dubbo泛化调用的方式,导致Dubbo回声测试不可用的问题。
基于上述步骤S101至步骤S104所限定的方案,可以获知,在本发明实施例中,采用基于解析结果从服务接口缓存区域中获取目标服务接口的方式,首先通过接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务;然后对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息;基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务;最后基于目标服务接口调用目标服务。
容易注意到的是,在上述过程中,通过从服务接口缓存区域中确定目标服务接口,减少服务调用时的配置数据操作的时间,进而提升了远程服务调用的效率,解决了现有技术中存在的远程服务调用效率低的技术问题。
由此可见,本申请所提供的方案达到了基于目标服务接口调用目标服务的目的,从而实现了提高远程服务调用效率的技术效果,进而解决了现有技术中存在的远程服务调用效率低技术问题。
在一种可选的实施例中,在基于解析结果从服务接口缓存区域中获取目标服务接口之前,系统通过获取多个服务的元数据信息,其中,元数据信息用于表征每个服务对应的接口信息;基于元数据信息生成多个接口文件,其中,每个服务与一个接口文件相对应;对多个接口文件进行处理,生成多个服务接口,并将多个服务接口存储至服务接口缓存区域中。
可选的,在本实施例中,如图4所示,服务网关启动时,服务网关的容器进行初始化,系统调用钩子Context Refreshed Event,注册zookeeper注册中心,获取所有的服务节点的节点信息,其中,节点信息包括每个服务的元数据信息,例如,每个服务对应的接口名、路径、方法名、方法的入参、返回结果等信息,然后清空classes目录下前次服务网关启动生成的接口文件,例如.class接口文件,并通过javaassist根据获取的各个服务的元数据信息生成新的接口文件(例如.class接口文件),并将上述接口文件存储在WEB-INF/classes/*目录下,然后通过java的反射机制,将新的接口文件加载到JVM中,然后生成每个服务对应的服务接口,并将每个服务对应的服务接口存储至JVM的服务接口缓存区域中,其中,JVM的服务接口缓存区域的静态变量类型为HashMap,key为服务名+群组+版本。
可选的,在服务网关的启动流程中,需要注册zookeeper注册中心并从注册中心中拉取各个服务的元数据信息,而Dubbo本身的服务注册其实并不包含此部分信息,因此需要拓展Dubbo元服务,将服务的元数据信息注册到注册中心。具体实现为:设计注册中心服务节点,服务节点全部存储在/servermeta目录下,例如com.xxx.apiServer存储为/servermeta/com.xxx.apiServer,而在此节点下存储元数据信息,例如,设计一个json,[{method:testA,params:[java.lang.String],version:1.0},{method:testA,params:[java.lang.String],version:1.0}]。然后拓展注册接口,在服务注册同时,注册元数据信息。
需要说明的是,通过预先生成每个服务对应的服务接口,并将该服务接口存储至JVM的服务接口缓存区域中,减少了后续服务调用时的配置数据操作的时间,进而提升了远程服务调用的效率。
进一步的,在获取多个服务的元数据信息之后,系统通过对根目录进行监测,其中,根目录用于存储多个服务;在监测到根目录中存在第一服务时,获取第一服务的元数据信息,其中,第一服务为根目录中新增的服务;基于第一服务的元数据信息生成第一服务对应的服务接口,并将服务接口存储至服务接口缓存区域中。
可选的,如图2所示,服务网关集群可对zookeeper注册中心进行服务获取和监听的操作。在获取多个服务的元数据信息之后,在注册zookeeper注册中心时,系统通过动态监听根目录所在节点,在根目录中存在新增的服务时,基于新增的服务的元数据信息生成服务接口,并将服务接口存储至服务接口缓存区域中。
可选的,如图2所示,系统的服务网关启动时,同时容器初始化时,会加载服务配置文件,获取基础配置信息,其中,基础配置信息包括线程池基础信息、限流规则、负载均衡策略等信息,然后初始化服务网关的servlet容器。
需要说明的是,通过对服务根目录进行监听,能够及时发现新增的服务,并生成服务接口,减少了从服务接口缓存区域中获取目标服务接口的失败次数,从而提高了远程服务调用的效率。
进一步的,在对调用参数进行解析,得到解析结果之后,系统基于解析结果检测目标服务是否满足限流规则,其中,限流规则用于对目标服务的流量传输上限进行限制;在目标服务不满足限流规则时,依据限流规则对目标服务进行限流处理。
可选的,如图3所示,在对调用参数进行解析,得到解析结果之后,系统通过基于解析结果检测目标服务是否满足限流规则,来确定是否对目标服务进行限流处理。其中,限流规则为服务名+群组+版本组成的key以及对应的value(例如流量传输参数)。在目标服务不满足限流规则时,依据限流规则对目标服务进行限流处理,例如,目标服务对应的流量传输参数value为1000,限流规则对应的流量传输参数value为800,此时目标服务不满足限流规则,对目标服务进行限流处理。
需要说明的是,通过基于限流规则对目标服务进行限流处理,在不满足限流规则时,能够保证不会因为某个微服务出现异常导致流量过大,进而造成其他微服务无法正常使用的问题,提高了系统的稳定性。
进一步的,解析结果中至少包括目标服务接口的唯一标识,基于解析结果从服务接口缓存区域中获取目标服务接口,包括:检测服务接口缓存区域中是否存在与唯一标识对应的服务接口;在服务接口缓存区域中存在与唯一标识对应的服务接口时,确定唯一标识对应的服务接口为目标服务接口;在服务接口缓存区域中不存在与唯一标识对应的服务接口时,执行服务接口加载操作,其中,服务接口加载操作用于基于每个服务的元数据信息生成与每个服务对应的服务接口。
可选的,如图3所示,在目标服务满足限流规则时,通过解析结果中包括的目标服务接口的唯一标识,来检测服务接口缓存区域中是否存在与唯一标识对应的服务接口,在服务接口缓存区域中存在与唯一标识对应的服务接口时,确定唯一标识对应的服务接口为目标服务接口,并从服务接口缓存区域中成功获取目标服务接口;在服务接口缓存区域中不存在与唯一标识对应的服务接口时,执行服务接口加载操作,通过重新加载服务接口缓存区域以及服务接口,来获取唯一标识对应的服务接口。
可选的,上述限流通过sentinel限拦截实现,其限流参数在服务网管的容器初始化时获取。可选的,上述限流还可通过hystrix组件或者自研实现。
需要说明的是,通过解析结果中包括的目标服务接口的唯一标识,来检测服务接口缓存区域中是否存在与唯一标识对应的服务接口,减少了系统获取服务接口的时间,进而提高了远程服务调用的效率。
进一步的,在执行服务接口加载操作之后,系统通过检测服务接口加载操作是否执行成功;在服务接口加载操作执行成功时,根据目标服务接口的唯一标识重新从服务接口缓存区域中获取目标服务接口;在服务接口加载操作执行失败时,确定目标服务接口不存在。
可选的,如图3所示,在执行服务接口加载操作之后,系统检测服务接口加载操作是否执行成功,在服务接口加载操作执行成功时,根据目标服务接口的唯一标识重新从服务接口缓存区域中获取目标服务接口;在服务接口加载操作执行失败时,确定目标服务接口不存在,返回异常RPC调用。
需要说明的是,通过检测执行服务接口加载操作是否执行成功来获取目标服务接口,无需处理复杂参数,可直接重新加载服务接口,从服务接口缓存区域中获取目标服务接口,提高了远程服务调用的效率。
由此可见,本发明提供了一种远程服务调用方法,通过从服务接口缓存区域中确定目标服务接口,减少后续调用时的配置数据操作的时间,进而提升了远程服务调用的效率,解决了现有技术中存在的远程服务调用效率低的技术问题。通过创建服务接口并存储在服务接口缓存区域,让服务最终是以Dubbo原生RPC的方式调用保障了服务的性能、同时规避了回声测试不可用的情况;并且通过zookeeper事件监听保证新服务上线也不必重启服务,进一步提高了服务调用效率。
实施例2
根据本发明实施例,提供了一种远程服务调用装置的实施例,其中,图5根据本发明实施例的一种可选的远程服务调用装置的示意图,如图5所示,该装置包括:
接收模块501,用于接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务;解析模块502,用于对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息;获取模块503,用于基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务;调用模块504,用于基于目标服务接口调用目标服务。
需要说明的是,上述接收模块501、解析模块502、获取模块503以及调用模块504对应于上述实施例中的步骤S101至步骤S104,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
可选的,远程服务调用装置还包括:第一获取模块、第一生成模块以及第一处理模块。第一获取模块用于在基于解析结果从服务接口缓存区域中获取目标服务接口之前,获取多个服务的元数据信息,其中,元数据信息用于表征每个服务对应的接口信息;第一生成模块用于基于元数据信息生成多个接口文件,其中,每个服务与一个接口文件相对应;第一处理模块用于对多个接口文件进行处理,生成多个服务接口,并将多个服务接口存储至服务接口缓存区域中。
可选的,远程服务调用装置还包括:监测模块、第二获取模块以及第二生成模块。监测模块用于在获取多个服务的元数据信息之后,对根目录进行监测,其中,根目录用于存储多个服务;第二获取模块用于在监测到根目录中存在第一服务时,获取第一服务的元数据信息,其中,第一服务为根目录中新增的服务;第二生成模块用于基于第一服务的元数据信息生成第一服务对应的服务接口,并将服务接口存储至服务接口缓存区域中。
可选的,远程服务调用装置还包括:第一检测模块以及第二处理模块。第一检测模块用于在对调用参数进行解析,得到解析结果之后,基于解析结果检测目标服务是否满足限流规则,其中,限流规则用于对目标服务的流量传输上限进行限制;第二处理模块用于在目标服务不满足限流规则时,依据限流规则对目标服务进行限流处理。
可选的,获取模块还包括:第二检测模块、第一确定模块以及第一执行模块。第二检测模块用于解析结果中至少包括目标服务接口的唯一标识,检测服务接口缓存区域中是否存在与唯一标识对应的服务接口;第一确定模块用于在服务接口缓存区域中存在与唯一标识对应的服务接口时,确定唯一标识对应的服务接口为目标服务接口;第一执行模块用于在服务接口缓存区域中不存在与唯一标识对应的服务接口时,执行服务接口加载操作,其中,服务接口加载操作用于基于每个服务的元数据信息生成与每个服务对应的服务接口。
可选的,远程服务调用装置还包括:第三检测模块、第三获取模块以及第二确定模块。第三检测模块用于在执行服务接口加载操作之后,检测服务接口加载操作是否执行成功;第三获取模块用于在服务接口加载操作执行成功时,根据目标服务接口的唯一标识重新从服务接口缓存区域中获取目标服务接口;第二确定模块用于在服务接口加载操作执行失败时,确定目标服务接口不存在。
实施例3
根据本发明实施例的另一方面,还提供了计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的远程服务调用方法。
实施例4
根据本发明实施例的另一方面,还提供了一种电子设备,其中,图6是根据本发明实施例的一种可选的电子设备的示意图,如图6所示,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的远程服务调用方法。
如图6所示,本申请实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
接收远程服务调用请求,其中,远程服务调用请求中至少包含目标服务的调用参数,目标服务为远程服务调用请求所要调用的服务;对调用参数进行解析,得到解析结果,其中,解析结果至少包括目标服务对应的服务接口信息;基于解析结果从服务接口缓存区域中获取目标服务接口,其中,服务接口缓存区域用于储存多个服务接口,目标服务接口用于调用目标服务;基于目标服务接口调用目标服务。
可选的,处理器执行程序时还实现以下步骤:在基于解析结果从服务接口缓存区域中获取目标服务接口之前,获取多个服务的元数据信息,其中,元数据信息用于表征每个服务对应的接口信息;基于元数据信息生成多个接口文件,其中,每个服务与一个接口文件相对应;对多个接口文件进行处理,生成多个服务接口,并将多个服务接口存储至服务接口缓存区域中。
可选的,处理器执行程序时还实现以下步骤:在获取多个服务的元数据信息之后,对根目录进行监测,其中,根目录用于存储多个服务;在监测到根目录中存在第一服务时,获取第一服务的元数据信息,其中,第一服务为根目录中新增的服务;基于第一服务的元数据信息生成第一服务对应的服务接口,并将服务接口存储至服务接口缓存区域中。
可选的,处理器执行程序时还实现以下步骤:在对调用参数进行解析,得到解析结果之后,基于解析结果检测目标服务是否满足限流规则,其中,限流规则用于对目标服务的流量传输上限进行限制;在目标服务不满足限流规则时,依据限流规则对目标服务进行限流处理。
可选的,处理器执行程序时还实现以下步骤:解析结果中至少包括目标服务接口的唯一标识,基于解析结果从服务接口缓存区域中获取目标服务接口,包括:检测服务接口缓存区域中是否存在与唯一标识对应的服务接口;在服务接口缓存区域中存在与唯一标识对应的服务接口时,确定唯一标识对应的服务接口为目标服务接口;在服务接口缓存区域中不存在与唯一标识对应的服务接口时,执行服务接口加载操作,其中,服务接口加载操作用于基于每个服务的元数据信息生成与每个服务对应的服务接口。
可选的,处理器执行程序时还实现以下步骤:在执行服务接口加载操作之后,检测服务接口加载操作是否执行成功;在服务接口加载操作执行成功时,根据目标服务接口的唯一标识重新从服务接口缓存区域中获取目标服务接口;在服务接口加载操作执行失败时,确定目标服务接口不存在。
实施例5
根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的远程服务调用方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
- 调用方法、调用装置、服务器、终端及计算机可读存储介质
- 接口调用方法、装置、计算机设备和存储介质
- 接口调用方法、装置及计算机可读存储介质
- 异步调用方法、计算机装置及存储介质
- 电子设备的显示控制方法、装置、电子设备和存储介质
- 一种远程服务调用方法、装置、电子设备及可读存储介质
- 一种远程服务的调用方法、装置、电子设备及存储介质