CN111698205A - 服务调用方法及相关设备 - Google Patents
服务调用方法及相关设备 Download PDFInfo
- Publication number
- CN111698205A CN111698205A CN202010358865.0A CN202010358865A CN111698205A CN 111698205 A CN111698205 A CN 111698205A CN 202010358865 A CN202010358865 A CN 202010358865A CN 111698205 A CN111698205 A CN 111698205A
- Authority
- CN
- China
- Prior art keywords
- interface
- target
- name
- class
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1073—Registration or de-registration
-
- 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/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及区块链技术,提供一种服务调用方法、装置、计算机设备及计算机可读存储介质。方法包括:请求调用目标接口的目标方法;生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;将所述代理类注册至spring容器;通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。其中,相关数据和信息可存储于区块链节点中。本发明通过服务调用方从服务提供方调用目标接口的目标方法。
Description
技术领域
本发明涉及区块链的微服务技术领域,具体涉及一种服务调用方法、装置、计算机设备及计算机可读存储介质。
背景技术
大多数传统应用随着业务的扩展和时间的推移,已难以满足系统维护及运营的需要,而此时系统微服务化是一种有效的解决方案。微服务架构下的应用系统在解决各个服务之间的服务资源调用时需要借助一个高可用的注册中心实现,服务提供方必须对这个注册中心进行强依赖才可以实现服务资源的调用,而且对于大多数使用微服架构的企业而言难以维护一个高可用的服务注册中心,也很难做到实时保证服务注册中心的高可用。
发明内容
鉴于以上内容,有必要提出一种服务调用方法、装置、计算机设备及计算机可读存储介质,本发明可应用于智慧城市领域,其可以通过服务调用方从服务提供方调用目标接口的目标方法。
本申请的第一方面提供一种服务调用方法,所述方法包括:
请求调用目标接口的目标方法;
生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
将所述代理类注册至spring容器;
通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
另一种可能的实现方式中,在所述请求调用目标接口的目标方法之前,所述方法还包括:
扫描服务调用方中的目标注解;
对所述目标注解对应的接口进行去重;
将去重后的接口确定为所述目标接口。
另一种可能的实现方式中,所述方法还包括:
根据所述目标接口对应的注解确定所述入口地址。
另一种可能的实现方式中,所述生成所述目标接口的代理类包括:
通过JAVA动态代理方法生成所述目标接口的代理类。
另一种可能的实现方式中,所述将所述代理类注册至spring容器包括:
使用Spring框架根据所述目标接口的目标注解生成抽象对象;
通过DefaultListableBeanFactory的registerBeanDefinition方法根据所述抽象类将所述代理类注册到spring容器。
另一种可能的实现方式中,所述通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求包括:
封装所述接口名称、所述方法名称、所述参数类型和所述参数值;
通过所述注册后的代理类将封装后的接口名称、方法名称、参数类型和参数值向所述入口地址发送接口调用请求,使所述服务提供方通过所述接口名称确定所述目标接口的实现类,通过所述方法名称和所述参数类型确定所述实现类中的目标方法,将所述参数值传入所述实现类的目标方法。
另一种可能的实现方式中,所述实现类包括实现所述目标接口的业务逻辑和数据操作的代码。
本申请的第二方面提供一种服务调用装置,所述装置包括:
请求模块,用于请求调用目标接口的目标方法;
生成模块,用于生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
注册模块,用于将所述代理类注册至spring容器;
发送模块,用于通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
返回模块,用于通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
本申请的第三方面提供一种计算机设备,所述计算机设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述服务调用方法。
本申请的第四方面提供一种计算机可读存储介质,包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述服务调用方法。
本发明实现了通过服务调用方从服务提供方调用目标接口的目标方法。本发明不需要通过注册中心进行服务注册和服务发现,减少了服务调用的时间消耗,提升了微服务的调用效率;不依赖注册中心,增强了场景适应性;并且没有注册中心的微服务架构更精简、不易出现故障。
附图说明
图1是本发明实施例提供的服务调用方法的流程图。
图2是本发明实施例提供的服务调用装置的结构图。
图3是本发明实施例提供的计算机设备的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明的服务调用方法应用在一个或者多个计算机设备中。所述计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
实施例一
图1是本发明实施例一提供的服务调用方法的流程图。所述服务调用方法应用于计算机设备,用于在运行于计算机设备的软件系统中通过服务调用方从服务提供方调用目标接口的目标方法。
通常,微服务架构下的应用系统在解决各个服务之间的服务资源调用时需要借助一个高可用的注册中心实现,即服务提供方需要在注册中心进行服务注册,以使服务提供方提供的服务可以被服务调用方调用。服务调用方通过注册中心进行服务发现,以获取需要调用的服务提供方的服务地址。
维护并运行注册中心需要额外的存储及运行资源消耗。通过注册中心进行微服务调用需要额外的调用时间消耗,使得服务调用效率低。如果注册中心出现故障,将影响整个微服务框架的运行。
如图1所示,所述服务调用方法包括:
101,请求调用目标接口的目标方法。
在一具体实施例中,在所述请求调用目标接口的目标方法之前,所述方法还包括:
扫描服务调用方中的目标注解;
对所述目标注解对应的接口进行去重;
将去重后的接口确定为所述目标接口。
例如,请求调用目标方法的代码为“@RpcService public interfaceHelloService{String sayHello(String name);}”,其中“RpcService”为目标注解,该目标注解对应的接口为“HelloService”,对目标注解对应的接口进行去重后,得到目标接口“HelloService”。“sayHello”为该目标接口的目标方法。
目标注解“RpcService”用以标明哪些类(接口)是目标接口,目标注解包含属性value和属性serviceName,这两个属性互为别名,配置其中任意一个即可,若两个属性的属性值都不为空则serviceName优先级更高。
服务调用方可以调用目标接口“HelloService”的目标方法“sayHello”。
102,生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值。
可以根据所述目标接口对应的注解确定所述入口地址。
属性serviceName的属性值可用于确定一个配置项的key,通过该key可以找到请求的服务提供方的入口地址,如服务提供方的域名。
服务提供方的域名可以为rpc.service.server.uri=http://XXX:port/rpc/server。其中XXX为服务端域名或者IP地址,port为端口号,/rpc/server为预设字段。
在一具体实施例中,所述生成所述目标接口的代理类包括:
通过JAVA动态代理方法生成所述目标接口的代理类。
所述代理类用来对所述目标接口的现有功能进行增强。如所述目标接口中的所述目标方法是打印一句“hello”,通过所述代理类可以在打印“hello”之前打印“begin”,在打印“hello”之后打印“end”。再如,向所述入口地址发送接口调用请求。
在JAVA程序运行时,动态代理是根据用户提供类名、方法名、参数来执行相关方法,并返回结果的过程。在本实施例,动态代理的目的是对所述目标接口进行实例化以获得所述代理类。
参数类型和参数值可以由所述目标接口的具体功能确定。
如“public String sayHello(String name){return“Hello,”+name;}”,其中“String”为参数类型,“name”为参数值。具体功能为返回“人名”。
103,将所述代理类注册至spring容器。
在一具体实施例中,所述将所述代理类注册至spring容器包括:
使用Spring框架根据所述目标接口的目标注解生成抽象对象;
通过DefaultListableBeanFactory的registerBeanDefinition方法根据所述抽象类将所述代理类注册到spring容器。
根据目标接口HelloService的RpcService注解的属性value或属性serviceName,以及接口名称和方法名称,生成AbstractBeanDefinition对象;通过DefaultListableBeanFactory的registerBeanDefinition方法,将代理类注册到spring容器中。
在另一实施例中,在所述将所述代理类注册至spring容器之前,所述方法还包括:
初始化DefaultListableBeanFactory,通过DefaultListableBeanFactory的removeBeanDefinition方法删除spring容器中已经注册过的需要代理的类。
DefaultListableBeanFactory是spring框架的类,removeBeanDefinition方法用于删除spring容器中已经注册过的需要代理的类,防止注册时报错(Spring框架要求默认情况下(单例模式)同一个需要代理的类在spring容器中只存在一个)。
104,通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求。
在一具体实施例中,所述通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求包括:
(1)封装所述接口名称、所述方法名称、所述参数类型和所述参数值。
例如,通过实现Java中的Serializable接口的封装类(RpcRequestDTO)封装接口名称、方法名称、参数类型和参数值。public class RpcRequestDTO implementsSerializable{private String HelloService;private String sayHello;privateString[]parameterTypes;private Object[]parameters;},其中,“HelloService”为接口名,“sayHello”方法名称,“parameterTypes”为参数类型,“parameters”为参数值。
对所述接口名称、所述方法名称、所述参数类型和所述参数值进行封装可以便于网络传输。
(2)通过所述注册后的代理类将封装后的接口名称、方法名称、参数类型和参数值向所述入口地址发送接口调用请求,使所述服务提供方通过所述接口名称确定所述目标接口的实现类,通过所述方法名称和所述参数类型确定所述实现类中的目标方法,将所述参数值传入所述实现类的目标方法。
通过注册后的代理类可以通过HTTP协议将封装后的接口名称、方法名称、参数类型和参数值向所述入口地址发送接口调用请求。服务提供方可以对封装后的接口名称、方法名称、参数类型和参数值进行解封,得到接口名称、方法名称、参数类型和参数值。
所述实现类可以包括实现所述目标接口的业务逻辑和数据操作的代码。
所述实现类可以为“@Service public class HelloServiceImpl implementsHelloService{@Override public String sayHello(String name){return“Hello,”+name;}}”,“HelloServiceImpl”为该实现类的类名,“sayHello”为该实现类的方法,方法中的“return“Hello,”+name”为实现所述目标接口的业务逻辑和数据操作的代码。
105,通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
如上例,参数值为“zhangsan”,通过注册后的代理类接收所述服务提供方返回的调用结果为“Hello,zhangsan”。
实施例一的服务调用方法通过服务调用方从服务提供方调用目标接口的目标方法,还可应用于智慧城市领域中,从而推动智慧城市的建设。实施例一不需要通过注册中心进行服务注册和服务发现,减少了服务调用的时间消耗,提升了微服务的调用效率;不依赖注册中心,增强了场景适应性;并且没有注册中心的微服务架构更精简、不易出现故障。
实施例二
图2是本发明实施例二提供的服务调用装置的结构图。所述服务调用装置20应用于计算机设备。所述服务调用装置20用于在运行于计算机设备的软件系统中通过服务调用方从服务提供方调用目标接口的目标方法。
如图2所示,所述服务调用装置20可以包括请求模块201、生成模块202、注册模块203、发送模块204、返回模块205。
通常,微服务架构下的应用系统在解决各个服务之间的服务资源调用时需要借助一个高可用的注册中心实现,即服务提供方需要在注册中心进行服务注册,以使服务提供方提供的服务可以被服务调用方调用。服务调用方通过注册中心进行服务发现,以获取需要调用的服务提供方的服务地址。
维护并运行注册中心需要额外的存储及运行资源消耗。通过注册中心进行微服务调用需要额外的调用时间消耗,使得服务调用效率低。如果注册中心出现故障,将影响整个微服务框架的运行。
请求模块201,用于请求调用目标接口的目标方法。
在一具体实施例中,在所述请求调用目标接口的目标方法之前,所述方法还包括:
扫描服务调用方中的目标注解;
对所述目标注解对应的接口进行去重;
将去重后的接口确定为所述目标接口。
例如,请求调用目标方法的代码为“@RpcService public interfaceHelloService{String sayHello(String name);}”,其中“RpcService”为目标注解,该目标注解对应的接口为“HelloService”,对目标注解对应的接口进行去重后,得到目标接口“HelloService”。“sayHello”为该目标接口的目标方法。
目标注解“RpcService”用以标明哪些类(接口)是目标接口,目标注解包含属性value和属性serviceName,这两个属性互为别名,配置其中任意一个即可,若两个属性的属性值都不为空则serviceName优先级更高。
服务调用方可以调用目标接口“HelloService”的目标方法“sayHello”。
生成模块202,用于生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值。
可以根据所述目标接口对应的注解确定所述入口地址。
属性serviceName的属性值可用于确定一个配置项的key,通过该key可以找到请求的服务提供方的入口地址,如服务提供方的域名。
服务提供方的域名可以为rpc.service.server.uri=http://XXX:port/rpc/server。其中XXX为服务端域名或者IP地址,port为端口号,/rpc/server为预设字段。
在一具体实施例中,所述生成所述目标接口的代理类包括:
通过JAVA动态代理方法生成所述目标接口的代理类。
所述代理类用来对所述目标接口的现有功能进行增强。如所述目标接口中的所述目标方法是打印一句“hello”,通过所述代理类可以在打印“hello”之前打印“begin”,在打印“hello”之后打印“end”。再如,向所述入口地址发送接口调用请求。
在JAVA程序运行时,动态代理是根据用户提供类名、方法名、参数来执行相关方法,并返回结果的过程。在本实施例,动态代理的目的是对所述目标接口进行实例化以获得所述代理类。
参数类型和参数值可以由所述目标接口的具体功能确定。
如“public String sayHello(String name){return“Hello,”+name;}”,其中“String”为参数类型,“name”为参数值。具体功能为返回“人名”。
注册模块203,用于将所述代理类注册至spring容器。
在一具体实施例中,所述将所述代理类注册至spring容器包括:
使用Spring框架根据所述目标接口的目标注解生成抽象对象;
通过DefaultListableBeanFactory的registerBeanDefinition方法根据所述抽象类将所述代理类注册到spring容器。
根据目标接口HelloService的RpcService注解的属性value或属性serviceName,以及接口名称和方法名称,生成AbstractBeanDefinition对象;通过DefaultListableBeanFactory的registerBeanDefinition方法,将代理类注册到spring容器中。
在另一实施例中,在所述将所述代理类注册至spring容器之前,所述方法还包括:
初始化DefaultListableBeanFactory,通过DefaultListableBeanFactory的removeBeanDefinition方法删除spring容器中已经注册过的需要代理的类。
DefaultListableBeanFactory是spring框架的类,removeBeanDefinition方法用于删除spring容器中已经注册过的需要代理的类,防止注册时报错(Spring框架要求默认情况下(单例模式)同一个需要代理的类在spring容器中只存在一个)。
发送模块204,用于通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求。
在一具体实施例中,所述通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求包括:
(1)封装所述接口名称、所述方法名称、所述参数类型和所述参数值。
例如,通过实现Java中的Serializable接口的封装类(RpcRequestDTO)封装接口名称、方法名称、参数类型和参数值。public class RpcRequestDTO implementsSerializable{private String HelloService;private String sayHello;privateString[]parameterTypes;private Object[]parameters;},其中,“HelloService”为接口名,“sayHello”方法名称,“parameterTypes”为参数类型,“parameters”为参数值。
对所述接口名称、所述方法名称、所述参数类型和所述参数值进行封装可以便于网络传输。
(2)通过所述注册后的代理类将封装后的接口名称、方法名称、参数类型和参数值向所述入口地址发送接口调用请求,使所述服务提供方通过所述接口名称确定所述目标接口的实现类,通过所述方法名称和所述参数类型确定所述实现类中的目标方法,将所述参数值传入所述实现类的目标方法。
通过注册后的代理类可以通过HTTP协议将封装后的接口名称、方法名称、参数类型和参数值向所述入口地址发送接口调用请求。服务提供方可以对封装后的接口名称、方法名称、参数类型和参数值进行解封,得到接口名称、方法名称、参数类型和参数值。
所述实现类可以包括实现所述目标接口的业务逻辑和数据操作的代码。
所述实现类可以为“@Service public class HelloServiceImpl implementsHelloService{@Override public String sayHello(String name){return“Hello,”+name;}}”,“HelloServiceImpl”为该实现类的类名,“sayHello”为该实现类的方法,方法中的“return“Hello,”+name”为实现所述目标接口的业务逻辑和数据操作的代码。
返回模块205,用于通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
如上例,参数值为“zhangsan”,通过注册后的代理类接收所述服务提供方返回的调用结果为“Hello,zhangsan”。
实施例二的服务调用装置20通过服务调用方从服务提供方调用目标接口的目标方法。实施例二不需要通过注册中心进行服务注册和服务发现,减少了服务调用的时间消耗,提升了微服务的调用效率;不依赖注册中心,增强了场景适应性;并且没有注册中心的微服务架构更精简、不易出现故障。
实施例三
本实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述服务调用方法实施例中的步骤,例如图1所示的步骤101-105:
101,请求调用目标接口的目标方法;
102,生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
103,将所述代理类注册至spring容器;
104,通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
105,通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块的功能,例如图2中的模块201-205:
请求模块201,用于请求调用目标接口的目标方法;
生成模块202,用于生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
注册模块203,用于将所述代理类注册至spring容器;
发送模块204,用于通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
返回模块205,用于通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
实施例四
图3为本发明实施例三提供的计算机设备的示意图。所述计算机设备30包括存储器301、处理器302以及存储在所述存储器301中并可在所述处理器302上运行的计算机程序303,例如服务调用程序。所述处理器302执行所述计算机程序303时实现上述服务调用方法实施例中的步骤,例如图1所示的101-105:
101,请求调用目标接口的目标方法;
102,生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
103,将所述代理类注册至spring容器;
104,通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
105,通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块的功能,例如图2中的模块201-205:
请求模块201,用于请求调用目标接口的目标方法;
生成模块202,用于生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
注册模块203,用于将所述代理类注册至spring容器;
发送模块204,用于通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
返回模块205,用于通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
示例性的,所述计算机程序303可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器301中,并由所述处理器302执行,以完成本方法。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序303在所述计算机设备30中的执行过程。例如,所述计算机程序303可以被分割成图2中的请求模块201、生成模块202、注册模块203、发送模块204、返回模块205,各模块具体功能参见实施例二。
本领域技术人员可以理解,所述示意图3仅仅是计算机设备30的示例,并不构成对计算机设备30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备30还可以包括输入输出设备、网络接入设备、总线等。
所称处理器302可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器302也可以是任何常规的处理器等,所述处理器302是所述计算机设备30的控制中心,利用各种接口和线路连接整个计算机设备30的各个部分。
所述存储器301可用于存储所述计算机程序303,所述处理器302通过运行或执行存储在所述存储器301内的计算机程序或模块,以及调用存储在存储器301内的数据,实现所述计算机设备30的各种功能。所述存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备30的使用所创建的数据(比如音频数据等)等。此外,存储器301可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
所述计算机设备30集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他模块或步骤,单数不排除复数。系统权利要求中陈述的多个模块或装置也可以由一个模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种服务调用方法,其特征在于,所述方法包括:
请求调用目标接口的目标方法;
生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
将所述代理类注册至spring容器;
通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
2.如权利要求1所述的方法,其特征在于,在所述请求调用目标接口的目标方法之前,所述方法还包括:
扫描服务调用方中的目标注解;
对所述目标注解对应的接口进行去重;
将去重后的接口确定为所述目标接口。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述目标接口对应的注解确定所述入口地址。
4.如权利要求1所述的方法,其特征在于,所述生成所述目标接口的代理类包括:
通过JAVA动态代理方法生成所述目标接口的代理类。
5.如权利要求1所述的方法,其特征在于,所述将所述代理类注册至spring容器包括:
使用Spring框架根据所述目标接口的目标注解生成抽象对象;
通过DefaultListableBeanFactory的registerBeanDefinition方法根据所述抽象类将所述代理类注册到spring容器。
6.如权利要求1所述的方法,其特征在于,所述通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求包括:
封装所述接口名称、所述方法名称、所述参数类型和所述参数值;
通过所述注册后的代理类将封装后的接口名称、方法名称、参数类型和参数值向所述入口地址发送接口调用请求,使所述服务提供方通过所述接口名称确定所述目标接口的实现类,通过所述方法名称和所述参数类型确定所述实现类中的目标方法,将所述参数值传入所述实现类的目标方法。
7.如权利要求6所述的方法,其特征在于,所述实现类包括实现所述目标接口的业务逻辑和数据操作的代码。
8.一种服务调用装置,其特征在于,所述装置包括:
请求模块,用于请求调用目标接口的目标方法;
生成模块,用于生成所述目标接口的代理类,所述代理类包括服务提供方的入口地址、接口名称、方法名称、参数类型和参数值;
注册模块,用于将所述代理类注册至spring容器;
发送模块,用于通过注册后的代理类根据所述接口名称、所述方法名称、所述参数类型和所述参数值向所述入口地址发送接口调用请求;
返回模块,用于通过所述注册后的代理类接收所述服务提供方返回的所述调用结果。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1-7中任一项所述服务调用方法。
10.一种计算机可读存储介质,包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述服务调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010358865.0A CN111698205B (zh) | 2020-04-29 | 2020-04-29 | 服务调用方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010358865.0A CN111698205B (zh) | 2020-04-29 | 2020-04-29 | 服务调用方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111698205A true CN111698205A (zh) | 2020-09-22 |
CN111698205B CN111698205B (zh) | 2023-09-26 |
Family
ID=72476864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010358865.0A Active CN111698205B (zh) | 2020-04-29 | 2020-04-29 | 服务调用方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111698205B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637196A (zh) * | 2020-12-21 | 2021-04-09 | 上海销氪信息科技有限公司 | 一种第三方服务的调用方法、装置、电子设备和存储介质 |
CN112732468A (zh) * | 2021-04-01 | 2021-04-30 | 统信软件技术有限公司 | 数据处理方法、数据交互系统及计算设备 |
CN113342349A (zh) * | 2021-05-28 | 2021-09-03 | 中国工商银行股份有限公司 | 一种无存根的微服务调用方法及装置 |
CN113515379A (zh) * | 2021-07-08 | 2021-10-19 | 北京元年科技股份有限公司 | 提供微服务架构系统的方法和该微服务架构系统 |
CN114756309A (zh) * | 2022-06-14 | 2022-07-15 | 苏州万店掌网络科技有限公司 | 一种服务调用方法、框架、装置及存储介质 |
CN116132538A (zh) * | 2023-02-17 | 2023-05-16 | 税友软件集团股份有限公司 | 一种多应用间接口调用方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549510A (zh) * | 2003-05-16 | 2004-11-24 | 中国移动通信集团公司 | 被管系统注册接口代理访问信息的方法 |
CN103425462A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN104639603A (zh) * | 2014-11-27 | 2015-05-20 | 四川长虹电器股份有限公司 | 一种基于Spring MVC的RESTful服务设计方法 |
CN107301098A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于Thrift协议的远程过程调用装置、方法及系统 |
CN109766080A (zh) * | 2019-01-22 | 2019-05-17 | 努比亚技术有限公司 | 微服务注册方法、装置、电子设备及可读存储介质 |
WO2019104975A1 (zh) * | 2017-11-30 | 2019-06-06 | 平安科技(深圳)有限公司 | 基于dubbo框架的远程调用方法、服务器及存储介质 |
WO2019153544A1 (zh) * | 2018-02-12 | 2019-08-15 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN110290212A (zh) * | 2019-06-28 | 2019-09-27 | 浙江大搜车软件技术有限公司 | 服务调用记录方法、装置、计算机设备和存储介质 |
CN110968296A (zh) * | 2019-12-03 | 2020-04-07 | 政采云有限公司 | 一种数据获取方法、装置、设备及可读存储介质 |
-
2020
- 2020-04-29 CN CN202010358865.0A patent/CN111698205B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549510A (zh) * | 2003-05-16 | 2004-11-24 | 中国移动通信集团公司 | 被管系统注册接口代理访问信息的方法 |
CN103425462A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN104639603A (zh) * | 2014-11-27 | 2015-05-20 | 四川长虹电器股份有限公司 | 一种基于Spring MVC的RESTful服务设计方法 |
CN107301098A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于Thrift协议的远程过程调用装置、方法及系统 |
WO2019104975A1 (zh) * | 2017-11-30 | 2019-06-06 | 平安科技(深圳)有限公司 | 基于dubbo框架的远程调用方法、服务器及存储介质 |
WO2019153544A1 (zh) * | 2018-02-12 | 2019-08-15 | 平安科技(深圳)有限公司 | 注解后端校验方法、装置、计算机设备及存储介质 |
CN109766080A (zh) * | 2019-01-22 | 2019-05-17 | 努比亚技术有限公司 | 微服务注册方法、装置、电子设备及可读存储介质 |
CN110290212A (zh) * | 2019-06-28 | 2019-09-27 | 浙江大搜车软件技术有限公司 | 服务调用记录方法、装置、计算机设备和存储介质 |
CN110968296A (zh) * | 2019-12-03 | 2020-04-07 | 政采云有限公司 | 一种数据获取方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
SMALL0716: "像mybatis一样,Spring启动时为接口创建代理对象并自动注入", pages 1, Retrieved from the Internet <URL:https://blog.csdn.net/u014022405/article/details/89703609> * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637196A (zh) * | 2020-12-21 | 2021-04-09 | 上海销氪信息科技有限公司 | 一种第三方服务的调用方法、装置、电子设备和存储介质 |
CN112732468A (zh) * | 2021-04-01 | 2021-04-30 | 统信软件技术有限公司 | 数据处理方法、数据交互系统及计算设备 |
CN113342349A (zh) * | 2021-05-28 | 2021-09-03 | 中国工商银行股份有限公司 | 一种无存根的微服务调用方法及装置 |
CN113515379A (zh) * | 2021-07-08 | 2021-10-19 | 北京元年科技股份有限公司 | 提供微服务架构系统的方法和该微服务架构系统 |
CN114756309A (zh) * | 2022-06-14 | 2022-07-15 | 苏州万店掌网络科技有限公司 | 一种服务调用方法、框架、装置及存储介质 |
CN114756309B (zh) * | 2022-06-14 | 2023-04-21 | 苏州万店掌网络科技有限公司 | 一种服务调用方法、框架、装置及存储介质 |
CN116132538A (zh) * | 2023-02-17 | 2023-05-16 | 税友软件集团股份有限公司 | 一种多应用间接口调用方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111698205B (zh) | 2023-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111698205A (zh) | 服务调用方法及相关设备 | |
WO2022078345A1 (zh) | 多设备间的数据交互方法及相关设备 | |
CN110958218B (zh) | 基于多网通信的数据传输方法及相关设备 | |
AU779145B2 (en) | Entitlement management and access control system | |
CA2936956C (en) | An entity handle registry to support traffic policy enforcement | |
CN111290865A (zh) | 一种服务调用方法、装置、电子设备和存储介质 | |
CN111277432B (zh) | 配置信息更新方法、装置、电子设备及存储介质 | |
WO2021073202A1 (zh) | 智能合约处理方法、计算机设备及存储介质 | |
WO2019057055A1 (zh) | 一种任务处理方法、装置、电子设备及存储介质 | |
CN113055380B (zh) | 报文处理方法、装置、电子设备及介质 | |
CN112527420A (zh) | 接口数据流转处理方法、装置、计算机设备及介质 | |
CN104866976A (zh) | 面向多租户的管理信息系统 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN111988418B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN115086277A (zh) | 一种标识管理方法、系统、终端设备及存储介质 | |
CN204695386U (zh) | 面向多租户的管理信息系统 | |
CN112150030A (zh) | 基于多单位多身份的账号管理方法、终端设备及存储介质 | |
CN111881209A (zh) | 异构数据库的数据同步方法、装置、电子设备及介质 | |
CN114489954A (zh) | 基于虚拟化平台的租户创建方法、租户访问方法及设备 | |
US20040139144A1 (en) | Using web services to access computational grids by non-members of the grid | |
CN108964904B (zh) | 群密钥安全管理方法、装置、电子设备及存储介质 | |
CN112019596A (zh) | 基于消息路由配置的消息推送方法、装置和电子设备 | |
US20060195586A1 (en) | Sessions and terminals configured for binding in an extensible manner | |
WO2023005500A1 (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN116502283A (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 |