CN111324467B - 业务服务调用方法、装置、设备和存储介质 - Google Patents
业务服务调用方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN111324467B CN111324467B CN201811526121.4A CN201811526121A CN111324467B CN 111324467 B CN111324467 B CN 111324467B CN 201811526121 A CN201811526121 A CN 201811526121A CN 111324467 B CN111324467 B CN 111324467B
- Authority
- CN
- China
- Prior art keywords
- service
- interface
- business
- business service
- calling
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种业务服务调用方法、装置、设备和存储介质,其中,方法包括:响应于接收到的业务服务的调用请求,确定业务服务对应的服务接口;根据服务接口对调用请求的解析结果,确定对应的分发接口;根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序加载至服务接口。通过本发明的技术方案,实现了跨编程语言的业务服务的调用,而且业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种业务服务调用方法、一种业务服务调用装置、一种服务器和一种计算机可读存储介质。
背景技术
相关技术中,通过采用分布式服务框架以进行远程服务调用以实现调用操作的高性能以及调用过程的透明化,但是在实际的使用过程中仍存在以下缺陷:
(1)如果对内部的程序函数库进行更新操作时,会导致整个分布式服务框架都停止运行,即服务之间造成干扰;
(2)如果分布式服务框架采用两种开发语言构造形成的话,这两种开发语言在相互调用时会造成性能损失。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明目的在于提供一种业务服务调用方法、一种业务服务调用装置、一种服务器、一种移动终端和一种计算机可读存储介质。
为了实现上述目的,本发明的第一方面的技术方案提供了一种业务服务调用方法,适用于服务器,包括:响应于接收到的业务服务的调用请求,确定业务服务对应的服务接口;根据服务接口对调用请求的解析结果,确定对应的分发接口;根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序加载至服务接口。
在上述技术方案中,优选地,根据服务接口对调用请求的解析结果,确定对应的分发接口,具体包括:在解析到业务服务采用第一编程语言实现的情况下,直接调用对应的业务服务实现端口确定为分发接口;在解析到业务数据采用第二编程语言实现的情况下,调用第一编程语言的本地接口确定为分发接口。
在上述任一技术方案中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序以指定的格式加载至服务接口,具体包括:根据服务接口对调用请求的解析结果,提取业务服务的名称标识,以根据名称标识确定对应的业务服务实现接口;根据服务接口对调用请求的解析结果,提取业务服务的方法标识,以根据方法标识确定对应的实现程序,并将实现程序反馈给调用端。
在上述任一技术方案中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以将业务服务的实现程序注册至业务服务的调用接口中,具体还包括:在调用第一编程语言的本地接口确定为分发接口的情况下,通过本地接口访问第二编程语言的服务器,以通过服务器获取业务服务的实现程序。
在上述任一技术方案中,优选地,通过服务器获取业务服务的实现程序,具体还包括:通过服务器访问其它服务客户端,以通过其它服务客户端获取业务服务的实现程序。
在上述任一技术方案中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以将业务服务的实现程序注册至业务服务的调用接口中,具体还包括:在直接调用对应的业务服务实现端口的情况下,通过本地接口调用第二编程语言的服务端,以通过服务端获取业务服务的实现程序。
在上述任一技术方案中,优选地,由业务服务实现接口将业务服务的实现程序加载至服务接口,具体包括:将业务服务注册到分发接口;以及将实现程序注册到业务服务中。
在上述任一技术方案中,优选地,还包括:将调用请求转化为JSON格式请求,以对JSON格式请求进行解析。
在上述任一技术方案中,优选地,第一编程语言为Java语言,第二编程语言为C++语言或C语言。
在上述任一技术方案中,优选地,还包括采用分布式服务框架反馈调用请求对应的业务服务的实现程序。
本发明的第二方面的技术方案提出了一种业务服务调用装置,适用于服务器,包括:存储器和处理器;存储器,用于存储存储器用于存储程序代码;处理器,用于调用程序代码执行:响应于接收到的业务服务的调用请求,确定业务服务对应的服务接口;根据服务接口对调用请求的解析结果,确定对应的分发接口;根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序加载至服务接口。
在上述技术方案中,优选地,处理器,具体用于:在解析到业务服务采用第一编程语言实现的情况下,直接调用对应的业务服务实现端口确定为分发接口;在解析到业务数据采用第二编程语言实现的情况下,调用第一编程语言的本地接口确定为分发接口。
在上述任一技术方案中,优选地,处理器,具体用于:根据服务接口对调用请求的解析结果,提取业务服务的名称标识,以根据名称标识确定对应的业务服务实现接口;根据服务接口对调用请求的解析结果,提取业务服务的方法标识,以根据方法标识确定对应的实现程序,并将实现程序反馈给调用端。
在上述任一技术方案中,优选地,处理器,具体用于:在调用第一编程语言的本地接口确定为分发接口的情况下,通过本地接口访问第二编程语言的服务器,以通过服务器获取业务服务的实现程序。
在上述任一技术方案中,优选地,处理器,具体用于:通过服务器访问其它服务客户端,以通过其它服务客户端获取业务服务的实现程序。
在上述任一技术方案中,优选地,处理器,具体用于:在直接调用对应的业务服务实现端口的情况下,通过本地接口调用第二编程语言的服务端,以通过服务端获取业务服务的实现程序。
在上述任一技术方案中,优选地,处理器,具体用于:将业务服务注册到分发接口;以及将实现程序注册到业务服务中。
在上述任一技术方案中,优选地,处理器,具体用于:将调用请求转化为JSON格式请求,以对JSON格式请求进行解析。
在上述任一技术方案中,优选地,第一编程语言为Java语言,第二编程语言为C++语言或C语言。
在上述任一技术方案中,优选地,处理器,具体用于:采用分布式服务框架反馈调用请求对应的业务服务的实现程序。
本发明的第三方面的技术方案提出了一种服务器,包括:如本发明第二方面的实施例中任一项所述的业务服务调用装置。
本发明的第四方面的技术方案提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的第一方面的技术方案提出的任一项的业务服务调用方法的步骤。
在该技术方案中,计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的第一方面和/或第二方面的技术方案提出的任一项的业务服务调用方法的步骤,因此具有上述本发明的第一方面和/或第二方面的技术方案提出的任一项的业务服务调用方法的全部有益效果,在此不再赘述。
本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明的一个实施例的业务服务调用方法的示意流程图;
图2示出了根据本发明的一个实施例的业务服务调用装置的示意结构图;
图3示出了根据本发明的再一个实施例的业务服务调用方法的示意流程图;
图4示出了根据本发明的再一个实施例的业务服务调用装置的示意结构图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
实施例1
图1示出了根据本发明的一个实施例的业务服务调用方法的示意流程图。
如图1所示,根据本发明的实施例的业务服务调用方法,包括:
步骤102,响应于接收到的业务服务的调用请求,确定业务服务对应的服务接口;
步骤104,根据服务接口对调用请求的解析结果,确定对应的分发接口;
步骤106,根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序加载至服务接口。
在该实施例中,通过根据解析结果确定分发接口,以通过设置分发接口将服务接口层与实现层之间进行解耦,通过进行解耦,在采用C/C++实现业务逻辑(即一个实体单元向另一个实体单元提供服务应具有的规则与流程,也就是实现程序)中对某一个.so格式文件(包括业务服务中的方法的程序函数库)进行内容更新时,不会影响其它业务服务的正常提供,从而保证了所需的业务服务的正常调用。
在上述实施例中,优选地,根据服务接口对调用请求的解析结果,确定对应的分发接口,具体包括:在解析到业务服务采用第一编程语言实现的情况下,直接调用对应的业务服务实现端口确定为分发接口;在解析到业务数据采用第二编程语言实现的情况下,调用第一编程语言的本地接口确定为分发接口。
在该实施例中,通过在第二编程语言与第一编程语言不同时,控制分发接口则调用JNI分发业务服务的调用请求至业务逻辑,以返回对应的业务服务调用接口数据,供客户端调用对应的业务服务,实现了跨编程语言的业务服务的调用,而且业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
具体地,通过设置不同的分发结构类型,以构造出衔接交互层,通过衔接交互,在实现服务接口层与实现层之间的解耦的同时,实现承上启下的功能,并且在其中一个服务业务的程序函数库(即.so文件)进行更新时,不会影响其它服务业务的正常调用。
需要说明的是,预先定义对外提供的服务接口,服务接口的调用参数Lang来区别调用采用哪种编程语言开发的分发接口,比如String Lang=“CPlusplus”,即调用采用C++开发的分发接口,再比如String Lang=“Java”,即调用采用Java开发的分发接口。
还需要说明的是,分发接口接收服务接口传递过来的业务服务的调用请求,分发给业务逻辑处理层的业务逻辑来进行相关处理,然后处理结果对应的业务服务调用接口数据以格式化的形式经分发接口,返回给服务接口,以返回给业务服务的调用方。
第一编程语言的本地接口可以为JNI(Java Native Interface),它提供了若干的API应用程序编程接口,实现了Java和其他编程语言的通信。
在上述任一实施例中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序以指定的格式加载至服务接口,具体包括:根据服务接口对调用请求的解析结果,提取业务服务的名称标识,以根据名称标识确定对应的业务服务实现接口;根据服务接口对调用请求的解析结果,提取业务服务的方法标识,以根据方法标识确定对应的实现程序,并将实现程序反馈给调用端。
在该实施例中,通过对调用指令的控制分发接口根据业务服务名称,确定业务逻辑的注册服务层,有利于准确的找到对应的业务逻辑,通过控制分发接口根据服务方法名称,在注册服务层中确定对应的业务逻辑,有利于实现分发业务服务的调用请求给对应的业务逻辑进行处理,通过控制分发接口调用JNI分发业务服务的调用请求至业务逻辑,实现了将业务服务的调用请求传达到具体的业务逻辑,业务逻辑进行处理后返回对应的业务服务调用接口数据,实现了业务服务的调用,提高了业务服务调用的效率,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
在上述任一实施例中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以将业务服务的实现程序注册至业务服务的调用接口中,具体还包括:在调用第一编程语言的本地接口确定为分发接口的情况下,通过本地接口访问第二编程语言的服务器,以通过服务器获取业务服务的实现程序。
在该实施例中,在第二编程语言为C/C++服务器时,通过调用JNI访问C/C++服务器,以实现调用请求的衔接交互处理,衔接交互层是开发框架的核心,它起到承上启下的作用,在C/C++里接受请求,并调用JNI-API,分发给对应的业务逻辑进行处理。作为框架的核心,其主要分为两层(如图3所示),分发接口(dispatcher)根据传入的服务名(serviceName)找到注册的服务(Service)层,一个服务(Service)与多个方法(Method)关联,再根据方法名(methodName)找到注册到服务(Service)里的那个方法(Method),这样就能起到接受服务接口层传来的请求,并传达到具体的业务逻辑,实现了整个业务服务的调用。
在上述任一实施例中,优选地,通过服务器获取业务服务的实现程序,具体还包括:通过服务器访问其它服务客户端,以通过其它服务客户端获取业务服务的实现程序。
在该实施例中,通过调用JNI,还可以通过服务器访问Java层与其他服务的客户端(client),以实现同一个Service中不同的Method的获取。
在上述任一实施例中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以将业务服务的实现程序注册至业务服务的调用接口中,具体还包括:在直接调用对应的业务服务实现端口的情况下,通过本地接口调用第二编程语言的服务端,以通过服务端获取业务服务的实现程序。
在该实施例中,通过在第二编程语言与第一编程语言相同时,控制分发接口直接分发业务服务的调用请求至业务逻辑,分发接口和业务逻辑的编程语言相同就可以直接实现通信,不需要调用JNI,进一步简化了分发业务服务的调用请求的程序,提高了业务服务调用接口数据返回以及调用对应的业务服务的效率。
在上述任一实施例中,优选地,由业务服务实现接口将业务服务的实现程序加载至服务接口,具体包括:将业务服务注册到分发接口;以及将实现程序注册到业务服务中。
在该实施例中,通过业务逻辑和业务服务的调用请求的对应关系预先注册存储至分发接口内,有利于实现分发接口根据业务服务的调用请求确定并找到对应的业务逻辑,将业务服务的调用请求传达到具体的业务逻辑,有利于业务逻辑进行处理,实现整个业务服务的调用。
在上述任一实施例中,优选地,还包括:将调用请求转化为JSON格式请求,以对JSON格式请求进行解析。
在该实施例中,通过转换业务服务的调用请求为JSON格式,有利于分发接口对业务服务的调用请求的识别,进而有利于业务服务的调用。
需要说明的是,JSON格式是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。
在上述任一实施例中,优选地,第一编程语言为Java语言,第二编程语言为C++语言或C语言。
在上述任一实施例中,优选地,还包括采用分布式服务框架反馈调用请求对应的业务服务的实现程序。
在该实施例中,Dubbo服务框架(即分布式服务框架)可以划分为三层架构,包括服务接口层,衔接交互层和实现层(或者业务逻辑层),对于服务接口层,其与Dubbo框架交互使用Java实现。由于在Dubbo服务框架对外时候,需要定义服务接口,然后再对这些接口定义具体的实现,衔接交互层主要是负责接收接口服务层传递过来的数据传递给下游的业务逻辑处理层进行相关的处理,并将结果以一种格式化的数据交给衔接交互层返回给服务接口层,衔接交互层是开发框架的核心,它起到承上启下的作用,在C/C++里接受请求,并调用JNI-API,分发给对应的业务逻辑进行处理。作为框架的核心,其主要分为两层,分发接口(dispatcher)根据传入的服务名(serviceName)找到注册的服务(Service)层,一个服务(Service)与多个方法(Method)关联,再根据方法名(methodName)找到注册到服务(Service)里的那个方法(Method),这样就能起到接受服务接口层传来的请求,并传达到具体的业务逻辑,实现了整个业务服务的调用。实现层就是根据业务逻辑的具体实现,主要场景是提供大数据处理和高性能服务,选用C/C++作为技术选型。在框架里,业务方需要生产一个服务(Service)实例,并注册到分发接口(dispatcher)里,同时根据所能提供的服务接口继承方法(Method),实现相应的业务逻辑,注册到对应的服务(Service)里即可。
实施例2
图2示出了根据本发明的一个实施例的业务服务调用装置200的示意结构图。
如图2所示,根据本发明的实施例的业务服务调用装置200,适用于服务器,包括:存储器202和处理器204;存储器202,用于存储存储器202用于存储程序代码;处理器204,用于调用程序代码执行:响应于接收到的业务服务的调用请求,确定业务服务对应的服务接口;根据服务接口对调用请求的解析结果,确定对应的分发接口;根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序加载至服务接口。
在该实施例中,通过根据解析结果确定分发接口,以通过设置分发接口将服务接口层与实现层之间进行解耦,通过进行解耦,在采用C/C++实现业务逻辑(即一个实体单元向另一个实体单元提供服务应具有的规则与流程,也就是实现程序)中对某一个.so格式文件(包括业务服务中的方法的程序函数库)进行内容更新时,不会影响其它业务服务的正常提供,从而保证了所需的业务服务的正常调用。
在上述实施例中,优选地,处理器204,具体用于:在解析到业务服务采用第一编程语言实现的情况下,直接调用对应的业务服务实现端口确定为分发接口;在解析到业务数据采用第二编程语言实现的情况下,调用第一编程语言的本地接口确定为分发接口。
在该实施例中,通过在第二编程语言与第一编程语言不同时,控制分发接口则调用JNI分发业务服务的调用请求至业务逻辑,以返回对应的业务服务调用接口数据,供客户端调用对应的业务服务,实现了跨编程语言的业务服务的调用,而且业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
需要说明的是,预先定义对外提供的服务接口,服务接口的调用参数Lang来区别调用采用哪种编程语言开发的分发接口,比如String Lang=“CPlusplus”,即调用采用C++开发的分发接口,再比如String Lang=“Java”,即调用采用Java开发的分发接口。
还需要说明的是,分发接口接收服务接口传递过来的业务服务的调用请求,分发给业务逻辑处理层的业务逻辑来进行相关处理,然后处理结果对应的业务服务调用接口数据以格式化的形式经分发接口,返回给服务接口,以返回给业务服务的调用方。
第一编程语言的本地接口可以为JNI(Java Native Interface),它提供了若干的API应用程序编程接口,实现了Java和其他编程语言的通信。
在上述任一实施例中,优选地,处理器204,具体用于:根据服务接口对调用请求的解析结果,提取业务服务的名称标识,以根据名称标识确定对应的业务服务实现接口;根据服务接口对调用请求的解析结果,提取业务服务的方法标识,以根据方法标识确定对应的实现程序,并将实现程序反馈给调用端。
在该实施例中,通过对调用指令的控制分发接口根据业务服务名称,确定业务逻辑的注册服务层,有利于准确的找到对应的业务逻辑,通过控制分发接口根据服务方法名称,在注册服务层中确定对应的业务逻辑,有利于实现分发业务服务的调用请求给对应的业务逻辑进行处理,通过控制分发接口调用JNI分发业务服务的调用请求至业务逻辑,实现了将业务服务的调用请求传达到具体的业务逻辑,业务逻辑进行处理后返回对应的业务服务调用接口数据,实现了业务服务的调用,提高了业务服务调用的效率,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
在上述任一实施例中,优选地,处理器204,具体用于:在调用第一编程语言的本地接口确定为分发接口的情况下,通过本地接口访问第二编程语言的服务器,以通过服务器获取业务服务的实现程序。
在该实施例中,通过调用JNI访问C/C++服务器,以实现调用请求的衔接交互处理,衔接交互层是开发框架的核心,它起到承上启下的作用,在C/C++里接受请求,并调用JNI-API,分发给对应的业务逻辑进行处理。作为框架的核心,其主要分为两层(如图3所示),分发接口(dispatcher)根据传入的服务名(serviceName)找到注册的服务(Service)层,一个服务(Service)与多个方法(Method)关联,再根据方法名(methodName)找到注册到服务(Service)里的那个方法(Method),这样就能起到接受服务接口层传来的请求,并传达到具体的业务逻辑,实现了整个业务服务的调用。
在上述任一实施例中,优选地,处理器204,具体用于:通过服务器访问其它服务客户端,以通过其它服务客户端获取业务服务的实现程序。
在该实施例中,通过调用JNI,还可以直接访问Java层与其他服务的客户端(client),以实现同一个Service中不同的Method的获取。
在上述任一实施例中,优选地,处理器204,具体用于:在直接调用对应的业务服务实现端口的情况下,通过本地接口调用第二编程语言的服务端,以通过服务端获取业务服务的实现程序。
在该实施例中,通过控制分发接口直接分发业务服务的调用请求至业务逻辑分发接口和业务逻辑的编程语言相同就可以直接实现通信,不需要调用JNI,进一步简化了分发业务服务的调用请求的程序,提高了业务服务调用接口数据返回以及调用对应的业务服务的效率。
在上述任一实施例中,优选地,处理器204,具体用于:将业务服务注册到分发接口;以及将实现程序注册到业务服务中。
在该实施例中,通过业务逻辑和业务服务的调用请求的对应关系预先注册存储至分发接口内,有利于实现分发接口根据业务服务的调用请求确定并找到对应的业务逻辑,将业务服务的调用请求传达到具体的业务逻辑,有利于业务逻辑进行处理,实现整个业务服务的调用。
在上述任一实施例中,优选地,处理器204,具体用于:将调用请求转化为JSON格式请求,以对JSON格式请求进行解析。
在该实施例中,通过转换业务服务的调用请求为JSON格式,有利于分发接口对业务服务的调用请求的识别,进而有利于业务服务的调用。
需要说明的是,JSON格式是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。
在上述任一实施例中,优选地,第一编程语言为Java语言,第二编程语言为C++语言或C语言。
在上述任一实施例中,优选地,处理器204,具体用于:采用分布式服务框架反馈调用请求对应的业务服务的实现程序。
在该实施例中,分布式服务框架,即Dubbo服务框架可以划分为三层架构,包括服务接口层,衔接交互层和实现层(或者业务逻辑层),对于服务接口层,其与Dubbo框架交互使用Java实现。由于在Dubbo服务框架对外时候,需要定义服务接口,然后再对这些接口定义具体的实现,衔接交互层主要是负责接收接口服务层传递过来的数据传递给下游的业务逻辑处理层进行相关的处理,并将结果以一种格式化的数据交给衔接交互层返回给服务接口层,衔接交互层是开发框架的核心,它起到承上启下的作用,在C/C++里接受请求,并调用JNI-API,分发给对应的业务逻辑进行处理。作为框架的核心,其主要分为两层(如图3所示),分发接口(dispatcher)根据传入的服务名(serviceName)找到注册的服务(Service)层,一个服务(Service)与多个方法(Method)关联,再根据方法名(methodName)找到注册到服务(Service)里的那个方法(Method),这样就能起到接受服务接口层传来的请求,并传达到具体的业务逻辑,实现了整个业务服务的调用。实现层就是根据业务逻辑的具体实现,主要场景是提供大数据处理和高性能服务,选用C/C++作为技术选型。在框架里,业务方需要生产一个服务(Service)实例,并注册到分发接口(dispatcher)里,同时根据所能提供的服务接口继承方法(Method),实现相应的业务逻辑,注册到对应的服务(Service)里即可。
实施例3
根据本发明的实施例的服务器,服务器包括如上述本发明的实施例2提出的任一项的业务服务调用装置200。
实施例4
根据本发明的实施例的计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现:
响应于接收到的业务服务的调用请求,确定业务服务对应的服务接口;根据服务接口对调用请求的解析结果,确定对应的分发接口;根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序加载至服务接口。
在该实施例中,通过根据解析结果确定分发接口,以通过设置分发接口将服务接口层与实现层之间进行解耦,通过进行解耦,在采用C/C++实现业务逻辑(即一个实体单元向另一个实体单元提供服务应具有的规则与流程,也就是实现程序)中对某一个.so格式文件(包括业务服务中的方法的程序函数库)进行内容更新时,不会影响其它业务服务的正常提供,从而保证了所需的业务服务的正常调用。
在上述实施例中,优选地,根据服务接口对调用请求的解析结果,确定对应的分发接口,具体包括:在解析到业务服务采用第一编程语言实现的情况下,直接调用对应的业务服务实现端口确定为分发接口;在解析到业务数据采用第二编程语言实现的情况下,调用第一编程语言的本地接口确定为分发接口。
在该实施例中,通过在第二编程语言与第一编程语言不同时,控制分发接口则调用JNI分发业务服务的调用请求至业务逻辑,以返回对应的业务服务调用接口数据,供客户端调用对应的业务服务,实现了跨编程语言的业务服务的调用,而且业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
需要说明的是,预先定义对外提供的服务接口,服务接口的调用参数Lang来区别调用采用哪种编程语言开发的分发接口,比如String Lang=“CPlusplus”,即调用采用C++开发的分发接口,再比如String Lang=“Java”,即调用采用Java开发的分发接口。
还需要说明的是,分发接口接收服务接口传递过来的业务服务的调用请求,分发给业务逻辑处理层的业务逻辑来进行相关处理,然后处理结果对应的业务服务调用接口数据以格式化的形式经分发接口,返回给服务接口,以返回给业务服务的调用方。
第一编程语言的本地接口可以为JNI(Java Native Interface),它提供了若干的API应用程序编程接口,实现了Java和其他编程语言的通信。
在上述任一实施例中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以由业务服务实现接口将业务服务的实现程序以指定的格式加载至服务接口,具体包括:根据服务接口对调用请求的解析结果,提取业务服务的名称标识,以根据名称标识确定对应的业务服务实现接口;根据服务接口对调用请求的解析结果,提取业务服务的方法标识,以根据方法标识确定对应的实现程序,并将实现程序反馈给调用端。
在该实施例中,通过对调用指令的控制分发接口根据业务服务名称,确定业务逻辑的注册服务层,有利于准确的找到对应的业务逻辑,通过控制分发接口根据服务方法名称,在注册服务层中确定对应的业务逻辑,有利于实现分发业务服务的调用请求给对应的业务逻辑进行处理,通过控制分发接口调用JNI分发业务服务的调用请求至业务逻辑,实现了将业务服务的调用请求传达到具体的业务逻辑,业务逻辑进行处理后返回对应的业务服务调用接口数据,实现了业务服务的调用,提高了业务服务调用的效率,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
在上述任一实施例中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以将业务服务的实现程序注册至业务服务的调用接口中,具体还包括:在调用第一编程语言的本地接口确定为分发接口的情况下,通过本地接口访问第二编程语言的服务器,以通过服务器获取业务服务的实现程序。
在该实施例中,通过调用JNI访问C/C++服务器,以实现调用请求的衔接交互处理,衔接交互层是开发框架的核心,它起到承上启下的作用,在C/C++里接受请求,并调用JNI-API,分发给对应的业务逻辑进行处理。作为框架的核心,其主要分为两层(如图3所示),分发接口(dispatcher)根据传入的服务名(serviceName)找到注册的服务(Service)层,一个服务(Service)与多个方法(Method)关联,再根据方法名(methodName)找到注册到服务(Service)里的那个方法(Method),这样就能起到接受服务接口层传来的请求,并传达到具体的业务逻辑,实现了整个业务服务的调用。
在上述任一实施例中,优选地,通过服务器获取业务服务的实现程序,具体还包括:通过服务器访问其它服务客户端,以通过其它服务客户端获取业务服务的实现程序。
在该实施例中,通过调用JNI,还可以直接访问Java层与其他服务的客户端(client),以实现同一个Service中不同的Method的获取。
在上述任一实施例中,优选地,根据分发接口将调用请求分发至对应的业务服务实现接口,以将业务服务的实现程序注册至业务服务的调用接口中,具体还包括:在直接调用对应的业务服务实现端口的情况下,通过本地接口调用第二编程语言的服务端,以通过服务端获取业务服务的实现程序。
在该实施例中,通过控制分发接口直接分发业务服务的调用请求至业务逻辑分发接口和业务逻辑的编程语言相同就可以直接实现通信,不需要调用JNI,进一步简化了分发业务服务的调用请求的程序,提高了业务服务调用接口数据返回以及调用对应的业务服务的效率。
在上述任一实施例中,优选地,由业务服务实现接口将业务服务的实现程序加载至服务接口,具体包括:将业务服务注册到分发接口;以及将实现程序注册到业务服务中。
在该实施例中,通过业务逻辑和业务服务的调用请求的对应关系预先注册存储至分发接口内,有利于实现分发接口根据业务服务的调用请求确定并找到对应的业务逻辑,将业务服务的调用请求传达到具体的业务逻辑,有利于业务逻辑进行处理,实现整个业务服务的调用。
在上述任一实施例中,优选地,还包括:将调用请求转化为JSON格式请求,以对JSON格式请求进行解析。
在该实施例中,通过转换业务服务的调用请求为JSON格式,有利于分发接口对业务服务的调用请求的识别,进而有利于业务服务的调用。
需要说明的是,JSON格式是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。
在上述任一实施例中,优选地,第一编程语言为Java语言,第二编程语言为C++语言或C语言。
在上述任一实施例中,优选地,还包括采用分布式服务框架反馈调用请求对应的业务服务的实现程序。
在该实施例中,分布式服务框架,即Dubbo服务框架可以划分为三层架构,包括服务接口层,衔接交互层和实现层(或者业务逻辑层),对于服务接口层,其与Dubbo框架交互使用Java实现。由于在Dubbo服务框架对外时候,需要定义服务接口,然后再对这些接口定义具体的实现,衔接交互层主要是负责接收接口服务层传递过来的数据传递给下游的业务逻辑处理层进行相关的处理,并将结果以一种格式化的数据交给衔接交互层返回给服务接口层,衔接交互层是开发框架的核心,它起到承上启下的作用,在C/C++里接受请求,并调用JNI-API,分发给对应的业务逻辑进行处理。作为框架的核心,其主要分为两层(如图3所示),分发接口(dispatcher)根据传入的服务名(serviceName)找到注册的服务(Service)层,一个服务(Service)与多个方法(Method)关联,再根据方法名(methodName)找到注册到服务(Service)里的那个方法(Method),这样就能起到接受服务接口层传来的请求,并传达到具体的业务逻辑,实现了整个业务服务的调用。实现层就是根据业务逻辑的具体实现,主要场景是提供大数据处理和高性能服务,选用C/C++作为技术选型。在框架里,业务方需要生产一个服务(Service)实例,并注册到分发接口(dispatcher)里,同时根据所能提供的服务接口继承方法(Method),实现相应的业务逻辑,注册到对应的服务(Service)里即可。
实施例3
图3示出了根据本发明的另一个实施例的业务服务调用方法的示意流程图。
如图3所示,根据本发明的另一个实施例的业务服务调用方法,包括:
S302,接收业务服务的调用请求;
S304,服务接口层解析拼装衔接层请求,
服务接口层将接收到的业务服务的调用请求解析,并转化成衔接层的交互接口,也即确定调用采用对应的第一编程语言开发的分发接口,这里的衔接层相当于分发接口,服务接口层相当于接收单元和调用单元;
S306,调用衔接层接口,
比如:Creponse cr=Dispatcher::dispatch(ServiceName,MethodName,requestJsonData);
S308,衔接层分发业务服务的调用请求,
衔接层根据业务服务名称和服务方法名称将业务服务的调用请求转发到对应的业务逻辑处理层的业务逻辑进行处理,相当于分发接口的作用;
S310,业务逻辑处理层处理业务服务的调用请求,
业务逻辑处理层内含多种业务服务的业务逻辑,对应的业务逻辑在接收到分发的业务服务的调用请求时,进行处理,实现业务服务的调用;
S312,返回业务服务调用接口数据;
S314,解析业务服务调用接口数据并返回给调用方。
通过业务服务调用方法,实现了跨编程语言的业务服务的调用,而且业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
实施例4
图4示出了根据本发明的另一个实施例的业务服务调用装置的示意结构图。
如图4所示,根据本发明的另一个实施例的业务服务调用装置,包括:服务接口层402,衔接层404,业务逻辑处理层406即实现接口,JNI层408即分发接口。
这里的服务接口层402相当于用于接收调用请求以及加载实现程序,衔接层404相当于分发接口,业务逻辑处理层406内有多种业务服务的业务逻辑,JNI层408,相当于分发接口调用的JNI。
服务接口层402内有N个服务接口,每个服务接口为预先定义的,其中包括定义了调用参数,N个服务接口对于框架外相对独立,N个服务接口在框架内会归一化同一的接口与衔接层404交互,衔接层404内有预先注册存储的在分发接口下的N个业务服务的业务逻辑和业务服务的调用请求的对应关系。
通过业务服务调用装置,实现了跨编程语言的业务服务的调用,而且业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
以上结合附图详细说明了本发明的技术方案,本发明提出了一种业务服务调用方法、一种业务服务调用装置、一种服务器、一种终端设备和一种计算机可读存储介质,通过调用分发接口交互来转发业务服务请求信息至对应的业务逻辑,将多个业务逻辑的服务集合挂载到Dubbo框架下面,减少了业务服务之间的相互影响,而且分发接口可以通过调用JNI来实现跨编程语言的业务服务的调用,业务服务调用快速,可适用于复杂的业务逻辑的业务服务的调用,而且减小了调用的性能损失。
本发明方法中的步骤可根据实际需要进行顺序调整、合并和删减。
本发明装置中的单元可根据实际需要进行合并、划分和删减。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种业务服务调用方法,适用于服务器,其特征在于,包括:
响应于接收到的业务服务的调用请求,确定所述业务服务对应的服务接口;
根据所述服务接口对所述调用请求的解析结果,确定对应的分发接口;
通过所述分发接口将所述调用请求分发至对应的业务服务实现接口,以由所述业务服务实现接口将所述业务服务的实现程序加载至所述服务接口;
所述根据所述服务接口对所述调用请求的解析结果,确定对应的分发接口,具体包括:
在解析到所述业务服务采用第一编程语言实现的情况下,直接调用对应的所述业务服务实现端口确定为所述分发接口;
在解析到业务数据采用第二编程语言实现的情况下,调用所述第一编程语言的本地接口并确定为所述分发接口;
在所述第二编程语言与所述第一编程语言不同时,所述通过所述分发接口将所述调用请求分发至对应的业务服务实现接口,包括:
控制所述分发接口调用JNI分发所述业务服务的调用请求至业务逻辑,以返回对应的业务服务调用接口数据,供客户端调用对应的业务服务。
2.根据权利要求1所述的方法,其特征在于,所述通过所述分发接口将所述调用请求分发至对应的业务服务实现接口,以由所述业务服务实现接口将所述业务服务的实现程序加载至所述服务接口,具体包括:
根据所述服务接口对所述调用请求的解析结果,提取所述业务服务的名称标识,以根据所述名称标识确定对应的所述业务服务实现接口;
根据所述服务接口对所述调用请求的解析结果,提取所述业务服务的方法标识,以根据所述方法标识确定对应的所述实现程序,并将所述实现程序反馈给调用端。
3.根据权利要求1所述的方法,其特征在于,所述通过所述分发接口将所述调用请求分发至对应的业务服务实现接口,以将所述业务服务的实现程序注册至所述业务服务的调用接口中,具体还包括:
在调用所述第一编程语言的本地接口确定为所述分发接口的情况下,通过所述本地接口访问所述第二编程语言的服务器,以通过所述服务器获取所述业务服务的实现程序。
4.根据权利要求3所述的方法,其特征在于,所述通过所述服务器获取所述业务服务的实现程序,具体还包括:
通过所述服务器访问其它服务客户端,以通过所述其它服务客户端获取所述业务服务的实现程序。
5.根据权利要求1所述的方法,其特征在于,所述通过所述分发接口将所述调用请求分发至对应的业务服务实现接口,以将所述业务服务的实现程序注册至所述业务服务的调用接口中,具体还包括:
在直接调用对应的所述业务服务实现端口的情况下,通过所述本地接口调用所述第二编程语言的服务端,以通过所述服务端获取所述业务服务的实现程序。
6.根据权利要求2所述的方法,其特征在于,所述由所述业务服务实现接口将所述业务服务的实现程序加载至所述服务接口,具体包括:
将所述业务服务注册到所述分发接口;以及
将所述实现程序注册到所述业务服务中。
7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
将所述调用请求转化为JSON格式请求,以对所述JSON格式请求进行解析。
8.根据权利要求1至6中任一项所述的方法,其特征在于,
所述第一编程语言为Java语言,所述第二编程语言为C++或C语言。
9.根据权利要求8所述的方法,其特征在于,还包括:
采用分布式服务框架反馈所述调用请求对应的所述业务服务的实现程序。
10.一种业务服务调用装置,适用于服务器,其特征在于,包括:存储器和处理器;
所述存储器,用于存储所述存储器用于存储程序代码;
所述处理器,用于调用所述程序代码执行:
响应于接收到的业务服务的调用请求,确定所述业务服务对应的服务接口;
根据所述服务接口对所述调用请求的解析结果,确定对应的分发接口;
通过所述分发接口将所述调用请求分发至对应的业务服务实现接口,以由所述业务服务实现接口将所述业务服务的实现程序加载至所述服务接口;
所述处理器,具体用于:
在解析到所述业务服务采用第一编程语言实现的情况下,直接调用对应的所述业务服务实现端口确定为所述分发接口;
在解析到业务数据采用第二编程语言实现的情况下,调用所述第一编程语言的本地接口确定为所述分发接口;
在所述第二编程语言与所述第一编程语言不同时,所述处理器具体用于:
控制所述分发接口调用JNI分发所述业务服务的调用请求至业务逻辑,以返回对应的业务服务调用接口数据,供客户端调用对应的业务服务。
11.根据权利要求10所述的装置,其特征在于,所述处理器,具体用于:
根据所述服务接口对所述调用请求的解析结果,提取所述业务服务的名称标识,以根据所述名称标识确定对应的所述业务服务实现接口;
根据所述服务接口对所述调用请求的解析结果,提取所述业务服务的方法标识,以根据所述方法标识确定对应的所述实现程序,并将所述实现程序反馈给调用端。
12.根据权利要求10所述的装置,其特征在于,所述处理器,具体用于:
在调用所述第一编程语言的本地接口确定为所述分发接口的情况下,通过所述本地接口访问所述第二编程语言的服务器,以通过所述服务器获取所述业务服务的实现程序。
13.根据权利要求12所述的装置,其特征在于,所述处理器,具体用于:
通过所述服务器访问其它服务客户端,以通过所述其它服务客户端获取所述业务服务的实现程序。
14.根据权利要求10所述的装置,其特征在于,所述处理器,具体用于:
在直接调用对应的所述业务服务实现端口的情况下,通过所述本地接口调用所述第二编程语言的服务端,以通过所述服务端获取所述业务服务的实现程序。
15.根据权利要求11所述的装置,其特征在于,所述处理器,具体用于:
将所述业务服务注册到所述分发接口;以及
将所述实现程序注册到所述业务服务中。
16.根据权利要求10至15中任一项所述的装置,其特征在于,所述处理器,具体用于:
将所述调用请求转化为JSON格式请求,以对所述JSON格式请求进行解析。
17.根据权利要求10至15中任一项所述的装置,其特征在于,
所述第一编程语言为Java语言,所述第二编程语言为C++或C语言。
18.根据权利要求17所述的装置,其特征在于,所述处理器,具体用于:
采用分布式服务框架反馈所述调用请求对应的所述业务服务的实现程序。
19.一种服务器,其特征在于,包括:
如权利要求10至18中任一项所述的业务服务调用装置。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的业务服务调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811526121.4A CN111324467B (zh) | 2018-12-13 | 2018-12-13 | 业务服务调用方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811526121.4A CN111324467B (zh) | 2018-12-13 | 2018-12-13 | 业务服务调用方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324467A CN111324467A (zh) | 2020-06-23 |
CN111324467B true CN111324467B (zh) | 2023-08-08 |
Family
ID=71170102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811526121.4A Active CN111324467B (zh) | 2018-12-13 | 2018-12-13 | 业务服务调用方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324467B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115082058B (zh) * | 2022-07-25 | 2022-11-18 | 上海富友支付服务股份有限公司 | 一种基于动态控制的虚拟账户交易管理方法及系统 |
CN116541019B (zh) * | 2023-06-28 | 2023-09-29 | 深圳市极限网络科技有限公司 | 数据转发方法、系统、设备和可读存储介质 |
CN117041304B (zh) * | 2023-10-10 | 2023-12-19 | 南京翼辉信息技术有限公司 | 一种车载原子服务系统及其控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571550A (zh) * | 2010-12-30 | 2012-07-11 | 北京亿阳信通软件研究院有限公司 | 一种通用的信息交互平台和方法 |
CN107301097A (zh) * | 2016-04-14 | 2017-10-27 | 阿里巴巴集团控股有限公司 | 一种调用java对象、java对象的引用地址信息的存储方法及装置 |
CN108924243A (zh) * | 2018-07-20 | 2018-11-30 | 珠海宏桥高科技有限公司 | 基于微服务架构的数据分发及处理方法 |
CN108924210A (zh) * | 2018-06-27 | 2018-11-30 | 杭州贝店科技有限公司 | 业务请求处理方法、装置、服务器及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7616740B2 (en) * | 2006-05-09 | 2009-11-10 | Santera Systems, Llc | Method, system, and computer-readable medium for simulating a converged network with a single media gateway and media gateway controller |
-
2018
- 2018-12-13 CN CN201811526121.4A patent/CN111324467B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571550A (zh) * | 2010-12-30 | 2012-07-11 | 北京亿阳信通软件研究院有限公司 | 一种通用的信息交互平台和方法 |
CN107301097A (zh) * | 2016-04-14 | 2017-10-27 | 阿里巴巴集团控股有限公司 | 一种调用java对象、java对象的引用地址信息的存储方法及装置 |
CN108924210A (zh) * | 2018-06-27 | 2018-11-30 | 杭州贝店科技有限公司 | 业务请求处理方法、装置、服务器及存储介质 |
CN108924243A (zh) * | 2018-07-20 | 2018-11-30 | 珠海宏桥高科技有限公司 | 基于微服务架构的数据分发及处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111324467A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111083225B (zh) | 在物联网平台中的数据处理方法、装置及物联网平台 | |
CN107277153B (zh) | 用于提供语音服务的方法、装置和服务器 | |
CN111324467B (zh) | 业务服务调用方法、装置、设备和存储介质 | |
CN110580244A (zh) | 一种文件处理方法、装置、服务器及存储介质 | |
CN114285793B (zh) | 一种分发方法、装置、设备和存储介质 | |
CN111552568A (zh) | 云服务调用方法和装置 | |
CN112346794A (zh) | 接口调用方法、装置、设备及介质 | |
CN112596931B (zh) | 一种跨进程通信方法、装置、电子设备及存储介质 | |
US20220245080A1 (en) | Method for communication of a componentized application, computing device and computer storage medium | |
CN114222256A (zh) | 消息发送方法、装置及电子设备 | |
CN114745449A (zh) | 一种报文处理方法及装置、存储介质及电子设备 | |
CN110221840B (zh) | 应用程序的功能实现方法及装置、设备及存储介质 | |
CN113191889A (zh) | 风控配置方法、配置系统、电子设备及可读存储介质 | |
CN113821254A (zh) | 接口数据处理方法、装置、存储介质及设备 | |
CN114301970B (zh) | 服务调用方法、装置、电子设备及存储介质 | |
CN113973139B (zh) | 一种消息处理的方法和装置 | |
CN111770236B (zh) | 一种对话处理方法、装置、系统、服务器和存储介质 | |
CN114219643A (zh) | 一种交易调用方法、装置、设备及存储介质 | |
CN114579334A (zh) | 一种通信方法、装置、电子设备及存储介质 | |
CN113590575A (zh) | 一种基于服务集成共享的方法、装置、终端及存储介质 | |
CN112667441A (zh) | 基于容错功能的业务模块调度方法、系统及存储介质 | |
CN109376023B (zh) | 用于生成调用信息、发布返回码组的方法和设备 | |
CN114090082B (zh) | 一种整合规则引擎的调用外部接口的方法及系统 | |
CN116560859B (zh) | 一种基于云计算的访问设备资源分配方法及相关装置 | |
CN114202046B (zh) | 基于sap系统生成二维码的方法、装置、设备及介质 |
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 |