CN108255615B - 跨语言调用方法、服务器及存储介质 - Google Patents
跨语言调用方法、服务器及存储介质 Download PDFInfo
- Publication number
- CN108255615B CN108255615B CN201711239546.2A CN201711239546A CN108255615B CN 108255615 B CN108255615 B CN 108255615B CN 201711239546 A CN201711239546 A CN 201711239546A CN 108255615 B CN108255615 B CN 108255615B
- Authority
- CN
- China
- Prior art keywords
- class
- service
- interface
- address
- cross
- 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.)
- Active
Links
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
- H04L69/085—Protocols for interworking; Protocol conversion specially adapted for interworking of IP-based networks with other networks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种跨语言调用方法、服务器及存储介质,该方法包括:接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;根据接口信息创建一个接口类,保存到存储器;调用类加载器将接口类加载到内存;根据接口信息从注册中心查询服务方提供的服务信息;根据服务信息创建一个与接口类对应的代理类;根据代理类生成唯一的URL;接收请求方发出的http协议格式的请求;将请求转换为hessian协议格式;根据请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;由该invoker实体将hessian协议格式的请求发送给服务方的相应主机,发起服务访问请求,从而实现跨语言的调用。
Description
技术领域
本发明涉及服务调用领域,尤其涉及一种跨语言调用方法、服务器及计算机可读存储介质。
背景技术
dubbo是一种基于阿里巴巴开源的分布式服务框架,致力于提高性能和透明化的远程过程调用协议(Remote Procedure Call Protocol,RPC)服务调用方案,以及面向服务的体系结构(Service-Oriented Architecture,SOA)治理方案。目前,业内基于dubbo框架的服务平台,不支持跨语言的服务调用。也就是说,在基于dubbo框架的服务平台,服务方只能使用java语言提供服务,请求方也只能使用java语言来调用服务。这样使得服务调用语言单一,限制了服务调用。
发明内容
鉴于以上内容,本发明提供一种跨语言调用方法、服务器及计算机可读存储介质,能够兼容java、C++、paython、ruby等语言进行RPC调用,实现跨语言调用。
为实现上述目的,本发明提供一种跨语言调用方法,该方法包括:
接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
根据所述接口信息创建一个接口类,保存到存储器;
调用类加载器将接口类从存储器加载到内存;
根据所述接口信息从注册中心查询服务方提供的服务信息;
根据查询到的服务信息创建一个与上述接口类对应的代理类;
根据代理类生成唯一的统一资源定位器(Uniform Resoure Locator,URL);
接收请求方发出的http协议格式的服务调用请求;
将服务调用请求从http协议格式转换为hessian协议格式;
根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
优选地,所述接口类定义了接口包名、接口类名、接口类中方法名、请求参数及返回函数。
优选地,所述服务方通过注册中心发布服务信息,并获得接口信息。
优选地,所述服务方若有多台主机提供服务,则所述代理类也包括多个invoker实体与所述多台主机相关联。
优选地,所述URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。
此外,本发明还提供一种服务器,该服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的跨语言调用程序,所述跨语言调用程序被所述处理器执行,可实现如下步骤:
接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
根据所述接口信息创建一个接口类,保存到存储器;
调用类加载器将接口类从存储器加载到内存;
根据所述接口信息从注册中心查询服务方提供的服务信息;
根据查询到的服务信息创建一个与上述接口类对应的代理类;
根据代理类生成唯一的URL;
接收请求方发出的http协议格式的服务调用请求;
将服务调用请求从http协议格式转换为hessian协议格式;
根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
优选地,所述服务方通过注册中心发布服务信息,并获得接口信息。
优选地,所述服务方若有多台主机提供服务,则所述代理类也包括多个invoker实体与所述多台主机相关联。
优选地,所述URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括跨语言调用程序,所述跨语言调用程序被处理器执行时,可实现如上所述跨语言调用方法中的任意步骤。
本发明提出的跨语言调用方法、服务器及计算机可读存储介质,通过接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心,然后根据接口信息创建一个接口类,保存到存储器,调用类加载器将接口类从存储器加载到内存,再根据接口信息从注册中心查询服务方提供的服务信息,创建一个与上述接口类对应的代理类,根据代理类生成唯一的URL,最后接收请求方发出的http协议格式的服务调用请求,将服务调用请求从http协议格式转换为hessian协议格式,根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体,由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求,hessian协议是开源、通用协议,在平台和服务方实现hessian协议的情况下,服务方可以C、C++、PHYTHON等多种语言实现服务,从而解决服务方、请求方调用语言单一的问题,实现跨语言调用。
附图说明
图1为本发明服务器较佳实施例的示意图;
图2为跨语言调用方法的应用环境示意图;
图3为图1或图2中跨语言调用程序较佳实施例的模块示意图;
图4为本发明跨语言调用方法较佳实施例的流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明服务器1较佳实施例的示意图。
在本实施例中,服务器1可以是服务器、智能手机、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。
该服务器1包括:存储器11、处理器12、网络接口13、通信总线14及存储在存储器11上并可在所述处理器12上运行的跨语言调用程序10。
其中,网络接口13可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。通信总线14用于实现这些组件之间的连接通信。
存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述服务器1的内部存储单元,例如该服务器1的硬盘。在另一些实施例中,所述存储器11也可以是所述服务器1的外部存储单元,例如所述服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card,FC)等。
在本实施例中,所述存储器11不仅可以用于存储安装于所述服务器1的应用软件及各类数据,例如跨语言调用程序10、二进制编解码规范等,还可以用于暂时地存储已经输出或者将要输出的数据,如接口类。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行跨语言调用程序10的计算机程序代码和请求消息二进制的编解码等。
优选地,该服务器1还可以包括显示器,显示器可以称为显示屏或显示单元。在一些实施例中显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。显示器用于显示在服务器1中处理的信息以及用于显示可视化的工作界面。
优选地,该服务器1还可以包括用户接口,用户接口可以包括输入单元比如键盘(Keyboard)、语音输出装置比如音响、耳机等。
在图1所示的服务器1实施例中,作为一种计算机存储介质的存储器11中存储跨语言调用程序10的程序代码,处理器12执行跨语言调用程序10的程序代码时,实现如下步骤:
接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
根据所述接口信息创建一个接口类,保存到存储器;
调用类加载器将接口类从存储器加载到内存;
根据所述接口信息从注册中心查询服务方提供的服务信息;
根据查询到的服务信息创建一个与上述接口类对应的代理类;
根据代理类生成唯一的URL;
接收请求方发出的http协议格式的服务调用请求;
将服务调用请求从http协议格式转换为hessian协议格式;
根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
本实施例中,如图2所示,是跨语言调用方法的应用环境示意图,服务器1提供一个服务页面2,该页面用于接收服务方3填写的接口信息、主机集群IP地址和端口地址。其中所述接口信息是服务方3登录服务器1前,通过注册中心5发布服务信息来获得的。跨语言调用程序10接收到服务方3填写的接口信息、主机集群IP地址和端口地址后,将服务方3的主机集群IP地址和端口地址写入注册中心5。例如,当服务方S想在该服务器提供人脸识别服务时,先在zookeeper发布服务信息。zookeeper收到服务信息后返回一个接口信息给服务方S。服务方S将接口信息、主机集群IP地址和端口地址填写在该服务器的服务页面,该服务器将服务方S处理人脸识别的主机集群IP地址和端口地址写入zookeeper。
跨语言调用程序10根据接收到的接口信息创建一个接口类。其中,服务方所提供的接口信息包括包名、类名和方法名等。因此,所述接口类定义了包名、类名、方法名、请求参数及返回参数。例如:
package com.pa.api.user;//定义接口类
public interface IUserService//定义包名
{
public Map<String,String>getUser(String userId);//定义方法名,请求参数及返回参数为字符串
public String sayHello(String req);//定义方法名
}
再将生成的接口类保存到本地存储器,如硬盘、磁盘等。创建的接口类是将服务方3的服务暴露给请求方4的端口,方便调用。
跨语言调用程序10调用类加载器将接口类从本地存储器加载至虚拟机内存。其中,所述生成的接口类只是保存在本地的存储器,需使用该接口类时,跨语言调用程序10通过调用类加载器将接口类加载到虚拟机内存。假设需要调用服务方S的接口类时,启动虚拟机,然后将服务方S的接口类从硬盘加载到系统的运行内存上。
跨语言调用程序10根据接口信息从注册中心5查询服务方提供的服务信息。例如,跨语言调用程序接收到服务方S填写的接口信息后,在zookeeper中查询服务方S的关于人脸识别的服务信息。
跨语言调用程序10根据查询到的服务信息创建一个与上述接口类对应的代理类。其中,服务方3接口下若有多台主机提供服务,对应的代理类也有多个invoker实体与多个主机关联。例如,跨语言调用程序根据服务信息,自动重写dubbo初始化流程,创建一个与接口类对应的动态代理类。使得代理类与接口类进行绑定。
跨语言调用程序10根据创建的代理类生成唯一的URL。其中,URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。并将唯一的URL地址与对应的接口类进行绑定。其中URL是web页的地址,主要由两个主要的部分构成:协议和目的地。其中协议包括http、ftp、telnet等,目的地可以是某文件名、目录名或者某台计算机的名称。例如,跨语言调用程序将代理类生成的唯一的URL地址与虚拟机上的接口类进行绑定,使得请求方A在搜索服务时,能够找到服务方S。
当请求方4需要申请服务时,请求方4向跨语言调用程序10发送http协议格式的服务调用请求,跨语言调用程序10接收请求方4发出的http协议格式的服务调用请求。其中,服务调用请求由请求方法URI协议/版本、请求头、请求正文三部分组成。例如,请求方A向基于dubbo平台发送http协议格式的人脸识别服务调用请求。
跨语言调用程序10将服务调用请求从http协议格式转换为hessian协议格式。其中,跨语言调用程序10与服务方3预先确定服务调用请求的二进制编解码规范,hessian通过预先确定的二进制编解码规范将服务调用请求进行二进制编码,产生二进制码流。根据产生的二进制码流读取服务调用请求中的URL地址。其中,hessian协议是开源、通用协议,在跨语言调用程序10和服务方3实现hessian协议的情况下,请求方4可以java、C++、paython、ruby等多种语言对服务方3进行服务调用。例如,基于dubbo平台将请求方A的人脸识别服务调用请求从http协议格式转换为hessian协议格式,生成二进制码流。
跨语言调用程序10根据服务调用请求中的URL地址找到对应的代理类,再根据接口类与代理类的对应关系找到相对应的invoker实体。例如,基于dubbo平台根据人脸识别服务调用请求中的URL地址找到对应的代理类,再根据接口类与代理类的对应关系从接口类中找到相对应的invoker实体。
该invoker实体将hessian协议格式的服务调用请求的二进制码流发送给服务方3与该invoker实体相对应的主机,服务方3根据预先确定的二进制编解码规范对服务调用请求的二进制码流进行解码,读取出请求方4的服务调用请求,发起服务调用。例如,服务方S的人脸识别主机接收到invoker实体发送的hessian协议格式的人脸识别服务调用请求后,利用预先确定的二进制编解码规范对hessian协议格式的二进制码流进行解码,发起人脸识别服务调用。
上述实施例提出的跨语言调用方法,提供一个接收接口信息、主机集群IP地址和端口地址的服务页面,将主机集群IP地址和端口地址写入注册中心并根据接口信息创建接口类加载到虚拟机内存上,再根据接口信息从注册中心查询服务信息创建代理类并生成唯一的URL,然后接收请求方发出的http协议格式服务调用请求,将http协议格式转换为hessian协议格式,并根据URL地址找到对应的接口类,及对应的invoker实体,最后由该invoker实体将hessian协议格式的服务调用请求发送给服务方相应的主机,兼容了其它语言进行服务调用,实现请求方与服务方的跨语言调用。
如图3所示,是图1或图2中跨语言调用程序10较佳实施例的模块示意图。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
在本实施例中,跨语言调用程序10包括:接收模块110、接口类创建模块120、加载模块130、查询模块140、代理类创建模块150、URL生成模块160、转换模块170、查找模块180、发送模块190,所述模块110-190所实现的功能或操作步骤均与上文类似,此处不再详述,示例性地,例如其中:
接收模块110,用于接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心或接收请求方发出的http协议格式的服务调用请求;
接口类创建模块120,用于根据所述接口信息创建一个接口类,保存到存储器;
加载模块130,用于调用类加载器将接口类从存储器加载到内存;
查询模块140,用于根据所述接口信息从注册中心查询服务方提供的服务信息;
代理类创建模块150,用于根据查询到的服务信息创建一个与上述接口类对应的代理类;
URL生成模块160,用于根据代理类生成唯一的URL;
转换模块170,用于将服务调用请求从http协议格式转换为hessian协议格式;
查找模块180,用于根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
发送模块190,用于由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
如图4所示,是本发明跨语言调用方法较佳实施例的流程图。
在本实施例中,处理器12执行存储器11中存储的跨语言调用程序10的计算机程序时实现跨语言调用方法的如下步骤:
步骤S10,接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
步骤S20,根据所述接口信息创建一个接口类,保存到存储器;
步骤S30,调用类加载器将接口类从存储器加载到内存;
步骤S40,根据所述接口信息从注册中心查询服务方提供的服务信息;
步骤S50,根据查询到的服务信息创建一个与上述接口类对应的代理类;
步骤S60,根据代理类生成唯一的URL;
步骤S70,接收请求方发出的http协议格式的服务调用请求;
步骤S80,将服务调用请求从http协议格式转换为hessian协议格式;
步骤S90,根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
步骤S100,由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
本实施例中,如图2所示,是跨语言调用方法的应用环境示意图,服务器1提供一个服务页面2,该页面用于接收服务方3填写的接口信息、主机集群IP地址和端口地址。其中所述接口信息是服务方3登录服务器1前,通过注册中心5发布服务信息来获得的。跨语言调用程序10接收到服务方3填写的接口信息、主机集群IP地址和端口地址后,将服务方3的主机集群IP地址和端口地址写入注册中心5。例如,当服务方S想在服务器提供声纹识别服务时,先在zookeeper发布服务信息。zookeeper收到服务信息后返回一个接口信息给服务方S。服务方S将接口信息、主机集群IP地址和端口地址填写在服务器的服务页面,该平台将服务方S处理声纹识别的主机集群IP地址和端口地址写入zookeeper。
跨语言调用程序10根据接收到的接口信息创建一个接口类。其中,服务方3所提供的接口信息包括包名、类名和方法名等。因此,所述接口类定义了包名、类名、方法名、请求参数及返回参数。例如:
package com.pa.api.user;//定义接口类
public interface IUserService//定义包名
{
public Map<String,String>getUser(String userId);//定义方法名,请求参数及返回参数为字符串
public String sayHello(String req);//定义方法名
}
再将生成的接口类保存到本地存储器,如硬盘、磁盘等。创建的接口类是将服务方3的服务暴露给请求方4的端口,方便调用。
跨语言调用程序10调用类加载器将接口类从本地存储器加载至虚拟机内存上。其中,所述生成的接口类只是保存在本地的存储器,需要使用该接口类时,调用类加载器将接口类加载到虚拟机内存。假设需要调用服务方S的接口类时,启动虚拟机,然后将服务方S的接口类从硬盘加载到系统的运行内存上。
跨语言调用程序10根据接口信息从注册中心5查询服务方3提供的服务信息。例如,基于dubbo平台接收到服务方S填写的接口信息后,在zookeeper中查询服务方S的关于声纹识别的服务信息。
跨语言调用程序10根据查询到的服务信息创建一个与上述接口类对应的代理类。其中,服务方3接口下若有多台主机提供服务,对应的代理类也有多个invoker实体与多个主机关联。例如,跨语言调用程序根据服务信息,自动重写dubbo初始化流程,创建一个与接口类对应的动态代理类。使得代理类与接口类进行绑定。
跨语言调用程序10根据创建的代理类生成唯一的URL。其中,URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。并将唯一的URL地址与对应的接口类进行绑定。其中URL是web页的地址,主要由两个主要的部分构成:协议和目的地。其中协议包括http、ftp、telnet等,目的地可以是某文件名、目录名或者某台计算机的名称。例如,跨语言调用程序将代理类生成的唯一的URL地址与虚拟机上的接口类进行绑定,使得请求方A在搜索服务时,能够找到服务方S。
当请求方4需要申请服务时,请求方4向跨语言调用程序10发送http协议格式的服务调用请求,跨语言调用程序10接收请求方4发出的http协议格式的服务调用请求。其中,服务调用请求由请求方法URI协议/版本、请求头、请求正文三部分组成。例如,请求方A向基于dubbo平台发送http协议格式的声纹识别服务调用请求。
跨语言调用程序10将服务调用请求从http协议格式转换为hessian协议格式。其中,跨语言调用程序10与服务方3预先确定服务调用请求的二进制编解码规范,hessian通过预先确定的二进制编解码规范将服务调用请求进行二进制编码,产生二进制码流。根据产生的二进制码流读取服务调用请求中的URL地址。其中,hessian协议是开源、通用协议,在服务器和服务方3实现hessian协议的情况下,请求方4可以java、C++、paython、ruby等多种语言对服务方3进行服务调用。例如,跨语言调用程序将请求方A的声纹识别服务调用请求从http协议格式转换为hessian协议格式,生成二进制码流。
跨语言调用程序10根据服务调用请求中的URL地址找到对应的接口类,再根据接口类与代理类的对应关系从代理类中找到相对应的invoker实体。例如,跨语言调用程序根据声纹识别服务调用请求中的URL地址找到对应的代理类,再根据接口类与代理类的对应关系从接口类中找到相对应的invoker实体。
该invoker实体将hessian协议格式的服务调用请求的二进制码流发送给服务方3与该invoker实体相对应的主机,服务方3根据预先确定的二进制编解码规范对服务调用请求的二进制码流进行解码,读取出请求方4的服务调用请求,发起服务调用。例如,服务方S的声纹识别主机接收到invoker实体发送的hessian协议格式的声纹识别服务调用请求后,利用预先确定的二进制编解码规范对hessian协议格式的二进制码流进行解码,发起声纹识别服务调用。
上述实施例提出的跨语言调用方法,通过将服务页面接收的主机集群IP地址和端口地址写入注册中心,根据接收的接口信息创建接口类并加载到虚拟机内存上,然后根据接口信息查询服务信息并创建代理类生成唯一的URL,最后将接收到服务调用请求的http协议格式转换为hessian协议格式,并找到对应的invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,使得基于dubbo平台能够兼容java、C++、paython、ruby等语言进行调用,扩大服务调用范围。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中包括跨语言调用程序10,所述跨语言调用程序10被处理器执行时实现如下操作:
接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
根据所述接口信息创建一个接口类,保存到存储器;
调用类加载器将接口类从存储器加载到内存;
根据所述接口信息从注册中心查询服务方提供的服务信息;
根据查询到的服务信息创建一个与上述接口类对应的代理类;
根据代理类生成唯一的URL;
接收请求方发出的http协议格式的服务调用请求;
将服务调用请求从http协议格式转换为hessian协议格式;
根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
优选地,所述接口类定义了接口包名、接口类名、接口类中方法名、请求参数及返回函数。
优选地,所述服务方通过注册中心发布服务信息,并获得接口信息。
优选地,所述服务方若有多台主机提供服务,则所述代理类也包括多个invoker实体与所述多台主机相关联。
优选地,所述URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。
本发明之计算机可读存储介质的具体实施方式与上述跨语言调用方法的具体实施方式大致相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种跨语言调用方法,其特征在于,所述方法包括:
接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
根据所述接口信息创建一个接口类,保存到存储器;
调用类加载器将接口类从存储器加载到内存;
根据所述接口信息从注册中心查询服务方提供的服务信息;
根据查询到的服务信息创建一个与上述接口类对应的代理类;
根据代理类生成唯一的URL,将唯一的URL地址与对应的接口类进行绑定;
接收请求方发出的http协议格式的服务调用请求;
将服务调用请求从http协议格式转换为hessian协议格式;
根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
2.根据权利要求1所述的跨语言调用方法,其特征在于,所述接口类定义了接口包名、接口类名、接口类中方法名、请求参数及返回函数。
3.根据权利要求1所述的跨语言调用方法,其特征在于,所述服务方通过注册中心发布服务信息,并获得接口信息。
4.根据权利要求1所述的跨语言调用方法,其特征在于,所述服务方若有多台主机提供服务,则所述代理类也包括多个invoker实体与所述多台主机相关联。
5.根据权利要求1-4任一项所述的跨语言调用方法,其特征在于,所述URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。
6.一种服务器,其特征在于,所述服务器包括:存储器、处理器,所述存储器上存储有跨语言调用程序,所述跨语言调用程序被所述处理器执行,可实现如下步骤:
接收服务方的接口信息、主机集群IP地址和端口地址,将服务方的主机集群IP地址和端口地址写入注册中心;
根据所述接口信息创建一个接口类,保存到存储器;
调用类加载器将接口类从存储器加载到内存;
根据所述接口信息从注册中心查询服务方提供的服务信息;
根据查询到的服务信息创建一个与上述接口类对应的代理类;
根据代理类生成唯一的URL,将唯一的URL地址与对应的接口类进行绑定;
接收请求方发出的http协议格式的服务调用请求;
将服务调用请求从http协议格式转换为hessian协议格式;
根据调用请求中的URL地址找到对应的代理类,根据代理类与接口类的对应关系找到相应的invoker实体;
由该invoker实体将hessian协议格式的服务调用请求发送给服务方的相应主机,发起服务访问请求。
7.根据权利要求6所述的服务器,其特征在于,所述服务方通过注册中心发布服务信息,并获得接口信息。
8.根据权利要求6或7所述的服务器,其特征在于,所述服务方若有多台主机提供服务,则所述代理类也包括多个invoker实体与所述多台主机相关联。
9.根据权利要求6或7所述的服务器,其特征在于,所述URL的生成规则是根据每一个方法名自动生产一个唯一的URL地址。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括跨语言调用程序,所述跨语言调用程序被处理器执行时,可实现如权利要求1至5中任一项所述跨语言调用方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711239546.2A CN108255615B (zh) | 2017-11-30 | 2017-11-30 | 跨语言调用方法、服务器及存储介质 |
PCT/CN2018/089135 WO2019104973A1 (zh) | 2017-11-30 | 2018-05-31 | 跨语言调用方法、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711239546.2A CN108255615B (zh) | 2017-11-30 | 2017-11-30 | 跨语言调用方法、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108255615A CN108255615A (zh) | 2018-07-06 |
CN108255615B true CN108255615B (zh) | 2022-03-01 |
Family
ID=62722078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711239546.2A Active CN108255615B (zh) | 2017-11-30 | 2017-11-30 | 跨语言调用方法、服务器及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108255615B (zh) |
WO (1) | WO2019104973A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298954B (zh) * | 2018-09-14 | 2019-10-25 | 北京数聚鑫云信息技术有限公司 | 一种智能调用Dubbo远程服务的方法及装置 |
CN109151091B (zh) * | 2018-09-21 | 2022-01-21 | 福建南威软件有限公司 | 一种支持dubbo协议调用的API网关服务 |
CN109150904A (zh) * | 2018-09-25 | 2019-01-04 | 深圳市佰仟金融服务有限公司 | 接口服务调用方法及终端设备 |
CN109922148B (zh) * | 2019-03-04 | 2022-02-25 | 网易(杭州)网络有限公司 | 跨平台服务方法、装置和系统 |
CN111782413B (zh) * | 2019-04-04 | 2024-02-27 | 杭州海康威视系统技术有限公司 | 跨应用程序的组件通信方法及装置 |
CN110032458B (zh) * | 2019-04-12 | 2020-07-10 | 重庆天蓬网络有限公司 | 一种php跨语言统一调用系统 |
CN110191164B (zh) * | 2019-05-20 | 2022-03-22 | 中国工商银行股份有限公司 | 分布式服务接入系统及方法 |
CN111176626B (zh) * | 2019-08-05 | 2022-04-19 | 腾讯科技(深圳)有限公司 | 跨编程语言的代码调用方法及装置、介质、设备 |
CN112422309B (zh) * | 2019-08-23 | 2023-03-28 | 阿里巴巴集团控股有限公司 | 分布式服务发现的系统及方法、存储介质及终端 |
CN110659017B (zh) * | 2019-09-19 | 2024-03-29 | 上海客佳信息科技有限公司 | 一种外部请求处理方法及相关装置 |
CN112579212A (zh) * | 2019-09-29 | 2021-03-30 | 北京国双科技有限公司 | 跨语言调用的方法、调用方装置及被调用方装置 |
CN110708319A (zh) * | 2019-10-10 | 2020-01-17 | 广州趣丸网络科技有限公司 | 服务请求的处理方法及装置 |
CN110647411A (zh) * | 2019-10-10 | 2020-01-03 | 广州趣丸网络科技有限公司 | 服务请求的处理方法及装置 |
CN110855782B (zh) * | 2019-11-14 | 2022-12-02 | 北京顺丰同城科技有限公司 | 一种服务调用系统、方法、电子设备及可读存储介质 |
CN111212119B (zh) * | 2019-12-24 | 2023-09-01 | 国电南瑞科技股份有限公司 | 一种dubbo服务调用方法及系统 |
CN111209122B (zh) * | 2019-12-24 | 2024-06-11 | 广州华多网络科技有限公司 | 接口调用方法、装置、电子设备及存储介质 |
CN111625243B (zh) * | 2020-05-13 | 2023-07-18 | 北京字节跳动网络技术有限公司 | 跨语言任务处理方法、装置及电子设备 |
CN111741118B (zh) * | 2020-06-28 | 2023-06-02 | 中国平安财产保险股份有限公司 | 接口调用方法、装置、计算机设备及计算机可读存储介质 |
CN111917838B (zh) * | 2020-07-14 | 2023-08-29 | 浙江大华技术股份有限公司 | 基于微服务的处理方法及装置、存储介质、电子装置 |
CN112035276B (zh) * | 2020-08-06 | 2024-07-16 | 上海视云网络科技有限公司 | 一种基于java的跨平台可扩展的RPC框架设计方法 |
CN112114979B (zh) * | 2020-08-31 | 2024-03-19 | 厦门安胜网络科技有限公司 | 远程过程调用方法和装置 |
CN112256246A (zh) * | 2020-09-18 | 2021-01-22 | 许继集团有限公司 | 一种用于电力系统中支持跨语言调用的微服务集成架构 |
CN112199219A (zh) * | 2020-11-17 | 2021-01-08 | 南开大学 | 一种跨语言作业远程调用方法 |
CN112612460B (zh) * | 2020-12-28 | 2024-08-06 | 北京锐安科技有限公司 | 接口的封装和调用方法、电子设备、及存储介质 |
CN112804303B (zh) * | 2020-12-31 | 2023-11-03 | 网银在线(北京)科技有限公司 | 服务提供方法、装置、系统、中转平台及存储介质 |
CN114721842A (zh) * | 2021-01-05 | 2022-07-08 | 中国移动通信有限公司研究院 | 服务调用方法、装置及电子设备 |
CN113821352A (zh) * | 2021-02-02 | 2021-12-21 | 北京沃东天骏信息技术有限公司 | 一种远程服务的调用方法和装置 |
CN112905470A (zh) * | 2021-02-23 | 2021-06-04 | 中国平安人寿保险股份有限公司 | 接口调用方法、装置、计算机设备及介质 |
CN113127081B (zh) * | 2021-04-19 | 2023-09-15 | 浪潮金融信息技术有限公司 | 一种用于终端的轻量级交互方法、系统及介质 |
CN113242221B (zh) * | 2021-04-29 | 2022-08-23 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种基于http微服务网关的协议转换方法及协议转换装置 |
CN113448689A (zh) * | 2021-07-09 | 2021-09-28 | 中国银行股份有限公司 | 运行期Dubbo协议转换装置及方法 |
CN113590231B (zh) * | 2021-08-17 | 2024-05-10 | 上海微盟企业发展有限公司 | 组件加载方法、系统、装置及存储介质 |
CN114900383B (zh) * | 2022-03-28 | 2024-04-19 | 青岛海尔科技有限公司 | 接口处理方法、装置、电子设备及计算机可读存储介质 |
CN117270833B (zh) * | 2023-11-21 | 2024-04-26 | 支付宝(杭州)信息技术有限公司 | 服务调用及发布方法、介质和计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136095A (zh) * | 2011-11-28 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种测试应用程序接口的方法、装置及系统 |
CN103283209A (zh) * | 2011-04-18 | 2013-09-04 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN103425462A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN104270470A (zh) * | 2014-10-24 | 2015-01-07 | 杭州高达软件系统股份有限公司 | 一种远程服务调用方法、装置及系统 |
CN105450589A (zh) * | 2014-07-31 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 远程调用方法及系统 |
CN106411933A (zh) * | 2016-11-15 | 2017-02-15 | 深圳市彬讯科技有限公司 | 一种可进行服务治理与语言调用的轻量级rpc框架 |
CN106506509A (zh) * | 2016-11-15 | 2017-03-15 | 深圳市彬讯科技有限公司 | 可进行服务治理与语言调用的轻量级rpc框架实现方法 |
CN107301098A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于Thrift协议的远程过程调用装置、方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002024120A (ja) * | 2000-07-11 | 2002-01-25 | Mitsubishi Electric Corp | 分散アプリケーションサーバシステム |
GB201108709D0 (en) * | 2011-05-24 | 2011-07-06 | Corethree Ltd | Core engine |
US9699249B2 (en) * | 2014-12-05 | 2017-07-04 | Vmware, Inc. | Runtime generation of application programming interfaces for remote procedure call services |
CN105450757A (zh) * | 2015-12-02 | 2016-03-30 | 联动优势电子商务有限公司 | 一种服务管理方法及系统 |
-
2017
- 2017-11-30 CN CN201711239546.2A patent/CN108255615B/zh active Active
-
2018
- 2018-05-31 WO PCT/CN2018/089135 patent/WO2019104973A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103283209A (zh) * | 2011-04-18 | 2013-09-04 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN103136095A (zh) * | 2011-11-28 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种测试应用程序接口的方法、装置及系统 |
CN103425462A (zh) * | 2012-05-14 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN105450589A (zh) * | 2014-07-31 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 远程调用方法及系统 |
CN104270470A (zh) * | 2014-10-24 | 2015-01-07 | 杭州高达软件系统股份有限公司 | 一种远程服务调用方法、装置及系统 |
CN106411933A (zh) * | 2016-11-15 | 2017-02-15 | 深圳市彬讯科技有限公司 | 一种可进行服务治理与语言调用的轻量级rpc框架 |
CN106506509A (zh) * | 2016-11-15 | 2017-03-15 | 深圳市彬讯科技有限公司 | 可进行服务治理与语言调用的轻量级rpc框架实现方法 |
CN107301098A (zh) * | 2017-06-15 | 2017-10-27 | 搜易贷(北京)金融信息服务有限公司 | 一种基于Thrift协议的远程过程调用装置、方法及系统 |
Non-Patent Citations (2)
Title |
---|
Resource-Oriented Architecture for Business Processes;Xiwei Xu等;《2008 15th Asia-Pacific Software Engineering Conference》;IEEE;20081222;第1卷;第395-402页 * |
一种分布式服务治理框架的设计与实现;张羽;《中国优秀硕士学位论文全文数据库 信息科技辑》;中国学术期刊(光盘版)电子杂志社;20170115(第1期);I138-280 * |
Also Published As
Publication number | Publication date |
---|---|
WO2019104973A1 (zh) | 2019-06-06 |
CN108255615A (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255615B (zh) | 跨语言调用方法、服务器及存储介质 | |
CN108055248B (zh) | 基于dubbo框架的远程调用方法、服务器及存储介质 | |
WO2016192556A1 (zh) | 接口调用方法、装置及终端 | |
CN111045833B (zh) | 接口调用的方法和装置 | |
CN110838071B (zh) | 保单数据的处理方法、装置及服务器 | |
CN111722947A (zh) | 服务调用方法及系统 | |
CN109617647B (zh) | 报文转换方法、装置、计算机设备及计算机可读存储介质 | |
US20080307058A1 (en) | Message handling for user interfaces | |
JP2005251171A (ja) | 情報提供装置、情報提供方法、情報提供プログラム及び記録媒体 | |
CN113448756B (zh) | 一种进程间通信系统、方法及计算设备 | |
CN105468709A (zh) | 基于HBase的数据查询装置及数据查询方法 | |
CN112507005A (zh) | 一种处理报文的方法和装置 | |
CN112214334A (zh) | 微服务调用方法、装置、电子设备及计算机可读存储介质 | |
US8495664B2 (en) | System, method and program product for invoking a remote method | |
CN106357713B (zh) | 实现远程过程调用的方法和客户端装置以及服务器装置 | |
WO2017143747A1 (zh) | 一种移动终端网络请求方法及系统 | |
CN112905273A (zh) | 一种服务调用方法和装置 | |
CN110413423B (zh) | 数据处理方法、相关装置、设备及存储介质 | |
JP2013229021A (ja) | モバイル・ブロードバンド・デバイス、及びモバイル・ブロードバンド・デバイスのモバイル・ブロードバンド・サービス処理方法 | |
US7792921B2 (en) | Metadata endpoint for a generic service | |
CN113779122B (zh) | 导出数据的方法和装置 | |
CN113992622B (zh) | 一种基于统一模型的多模板聚合消息通知发送系统及方法 | |
CN115080274A (zh) | 业务处理方法、装置和系统、以及接口映射系统 | |
JP4864022B2 (ja) | モバイル配信フレームワークにおけるコンテンツ処理の調和のための方法およびシステム | |
CN112650601B (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 |