本发明涉及注册中心服务调用技术领域,尤指一种跨多注册中心的服务调用处理系统及方法。
背景技术:
随着现代计算机技术的发展,分布式系统提供了服务化概念,目前多种注册中心百花齐放。主流注册中心有eureka、zookeeper等多种。每种注册中心,为计算机系统应用提供了安全可靠的注册服务。目前采用eureka、zookeeper注册中心的应用,相互之间是隔离的,不可能在不同应用间相互调用服务。即在eureka上的服务,无法提供给zookeeper使用,zookeeper上的服务也无法提供给eureka使用。
技术实现要素:
为了解决上述问题,本发明实施例提供一种跨多注册中心的服务调用处理系统,所述系统通过各注册中心与对应的应用连接,所述系统包括:第一注册中心适配模块、第二注册中心适配模块及路由转发模块;
所述第一注册中心适配模块接受第一应用发送的跨注册中心的服务调用指令,对所述服务调用指令进行协议转换,将转换后的服务调用指令通过所述路由转发模块发送至所述第二注册中心适配模块;
所述第二注册中心适配模块根据接收到的服务调用指令调用第二应用中的对应服务,得到服务调用结果,将所述服务调用结果通过所述路由转发模块发送至所述第一注册中心适配模块;
所述第一注册中心适配模块将接收到的所述服务调用结果返回至所述第一应用。
可选的,在本发明一实施例中,所述第一注册中心适配模块包括调用单元,所述调用单元用于调用第一应用中的服务。
可选的,在本发明一实施例中,所述第一注册中心适配模块还包括读取单元,所述读取单元用于读取注册于第一注册中心的服务实例信息。
可选的,在本发明一实施例中,所述服务实例信息包括:服务实例名称、服务实例id及服务实例状态。
可选的,在本发明一实施例中,所述第一注册中心适配模块还包括协议转换单元,所述协议转换单元用于对服务调用指令、服务实例信息进行协议转换。
可选的,在本发明一实施例中,所述第一注册中心适配模块还包括写入单元,所述写入单元用于将经过协议转换后的服务实例信息注册到第一注册中心中。
可选的,在本发明一实施例中,所述第一注册中心适配模块还包括心跳监控单元,所述心跳监控单元用于第一注册中心中服务信息的实时更新。
可选的,在本发明一实施例中,所述服务信息的实时更新包括:读取服务注册信息、更新服务状态及服务写入注册中心。
可选的,在本发明一实施例中,所述第二注册中心适配模块包括与所述第一注册中心适配模块相同的单元。
本发明实施例还提供一种跨多注册中心的服务调用处理方法,所述方法利用述的跨多注册中心的服务调用处理系统,进行跨多注册中心的服务调用处理。
本发明实现了跨多注册中心的服务调用,在解决应用间因注册中心类型不同而无法直接调用的问题的同时,提高了服务发现的扩展能力,无需对源服务提供方进行服务改造,减少异构注册中心应用调用的改造成本,提升集中部署效率,扩展应用服务功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中服务调用示意图;
图2为本发明系统与注册中心连接示意图;
图3为应用本发明系统进行服务调用示意图;
图4为本发明实施例一种跨多注册中心的服务调用处理系统的结构示意图;
图5为本发明一具体实施例中跨注册中心服务调用示意图;
图6为本发明实施例中实现跨eureka注册中心与zookeeper注册中心调用的流程图;
图7为本发明实施例中系统启动流程图;
图8为本发明实施例中心跳监控流程图。
具体实施方式
本发明实施例提供一种跨多注册中心的服务调用处理系统及方法。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,使用本发明系统前,注册中心1、注册中心2……注册中心n,相互间不联通,应用1只能访问注册中心1的服务,应用2只能访问它所在注册中心2的服务,应用n也是如此类推。如图2所示,本发明系统处于多注册中心之间,联通多个注册中心。
如图3所示,在使用本发明系统后,每个注册中心都存在各应用的各种服务,应用1不仅可以调用应用1的服务1到服务n,还可以调用应用2的服务1到服务n,也可以调用应用n的全部服务。
如图4所示为本发明实施例一种跨多注册中心的服务调用处理系统的结构示意图,图中所示系统包括:第一注册中心适配模块m001(注册中心1适配模块)、第二注册中心适配模块(注册中心2适配模块)及路由转发模块m007;
所述第一注册中心适配模块接受第一应用发送的跨注册中心的服务调用指令,对所述服务调用指令进行协议转换,将转换后的服务调用指令通过所述路由转发模块发送至所述第二注册中心适配模块;
所述第二注册中心适配模块根据接收到的服务调用指令调用第二应用中的对应服务,得到服务调用结果,将所述服务调用结果通过所述路由转发模块发送至所述第一注册中心适配模块;
所述第一注册中心适配模块将接收到的所述服务调用结果返回至所述第一应用。
作为本发明的一个实施例,第一注册中心适配模块包括调用单元m005,所述调用单元用于调用第一应用中的服务。
在本实施例中,第一注册中心适配模块还包括读取单元m002,所述读取单元用于读取注册于第一注册中心的服务实例信息。
其中,服务实例信息包括:服务实例名称、服务实例id及服务实例状态。
在本实施例中,第一注册中心适配模块还包括协议转换单元m006,所述协议转换单元用于对服务调用指令、服务实例信息进行协议转换。
在本实施例中,第一注册中心适配模块还包括写入单元m004,所述写入单元用于将经过协议转换后的服务实例信息注册到第一注册中心中。
在本实施例中,第一注册中心适配模块还包括心跳监控单元m003,所述心跳监控单元用于第一注册中心中服务信息的实时更新。
其中,服务信息的实时更新包括:读取服务注册信息、更新服务状态及服务写入注册中心。
在本实施例中,第二注册中心适配模块包括与第一注册中心适配模块相同的单元。其中,本发明系统中具有与注册中心一一对应的多个注册中心适配模块,各个注册中心适配模块结构均相同。在某一注册中心适配模块为调用服务方时,该注册中心适配模块可作为上述第一注册中心适配模块,在某一注册中心适配模块为被调用服务方时,该注册中心适配模块可作为上述第二注册中心适配模块。
在本发明一具体实施例中,如图5所示为本发明其中一种实现场景,实现了一种跨eureka注册中心、zookeeper注册中心的服务调用处理。对应的,如图6为实现跨eureka注册中心与zookeeper注册中心调用的流程图,应用a(连接注册在eureka注册中心)调用应用b(连接注册在zookeeper注册中心)提供的服务s1。
说明如下,应用a的服务注册在eureka注册中心,应用b的服务注册在zookeeper注册中心。
启动本发明的系统后,分别连接到eureka注册中心、zookeeper注册中心。实现两个注册中心的服务相互注册。
步骤200:应用a发起调用应用b的服务s1。
步骤201:应用a把发起调用指令发往eureka注册中心。
步骤202:通过已连接的eureka注册中心,读取应用b的服务s1。
步骤203:由本发明系统将调用指令经过协议转换,根据规则路由转发到zookeeper注册中心。
步骤204:在zookeeper调用应用b的服务s1。
步骤205:zookeeper通过路由转发模块,将调用应用b服务s1的结果返回到eureka。
步骤206:应用a从eureka注册中心收到应用b服务s1调用的结果。
步骤207:应用a发起调用应用b的服务s1过程完成。
在本实施例中,如图7所示为本发明系统启动运行步骤。实现跨eureka注册中心、zookeeper注册中心相互注册,为后续跨注册中心调用提供系统环境。
步骤100:启动本发明系统。
步骤101:连接eureka注册中心,连接zookeeper注册中心。
步骤102:通过eureka注册中心适配模块m001的读取单元m002,读取注册在eureka上的服务实例。
读取服务实例信息,包括服务实例名称、id、状态等。
通过zookeeper注册中心适配模块m008的读取单元m009,读取注册在zookeeper上的服务实例。
读取服务实例信息,包括服务实例名称、id、状态等。
步骤103:将zookeeper的服务实例信息(包括服务实例名称、id、状态等),通过协议转换单元m013,路由转发模块m007,将zookeeper上的服务实例信息转发到eureka注册中心适配模块m001。
由协议转换单元m006将信息转换为eureka要求的格式,通过写入单元m004,把服务信息注册到eureka注册中心。
步骤104:将eureka的服务实例信息(包括服务实例名称、id、状态等),通过协议转换单元m006,路由转发模块m007,将eureka上的服务实例信息转发到zookeeper注册中心适配模块m008。
由协议转换单元m013将信息转换为zookeeper要求的格式,通过写入单元m011,把服务信息注册到zookeeper注册中心。
步骤105:本发明的系统启动完成。
此外,zookeeper注册中心适配模块还包括心跳监控单元m010及调用单元m012。
在本实施例中,如图8所示是本发明心跳监控循环流程示意图。通过心跳监控单元,实现多注册中心服务信息的及时更新(包括读取服务注册信息,更新状态,写入注册中心,接收跨注册中心服务调用等)。
本发明可实现在eureka注册中心与zookeeper注册中心服务实例的相互调用,其具体优点如下:1、通过服务服务读取单元、注册写入单元、服务调用单元、协议转换单元、路由转发模块,实现了多注册中心服务的相互注册。2、在其中一种注册中心,即可访问多个不同类型的注册中心的服务实例,提高服务发现的扩展能力。3、跨多注册中心的服务调用处理系统,提供了多种注册中心服务调用功能,解决应用间因为注册中心类型不同而无法直接调用的问题。4、无需对源服务提供方进行服务改造,减少异构注册中心应用调用的改造成本,提升集中部署效率,扩展应用服务功能。
本发明实现了跨多注册中心的服务调用,在解决应用间因注册中心类型不同而无法直接调用的问题的同时,提高了服务发现的扩展能力,无需对源服务提供方进行服务改造,减少异构注册中心应用调用的改造成本,提升集中部署效率,扩展应用服务功能。
本发明实施例还提供一种跨多注册中心的服务调用处理方法,所述方法利用所述的跨多注册中心的服务调用处理系统,进行跨多注册中心的服务调用处理。
基于与上述一种跨多注册中心的服务调用处理系统相同的申请构思,本发明还提供了上述一种跨多注册中心的服务调用处理方法。由于该一种跨多注册中心的服务调用处理方法解决问题的原理与一种跨多注册中心的服务调用处理系统相似,因此该一种跨多注册中心的服务调用处理方法的实施可以参见一种跨多注册中心的服务调用处理系统的实施,重复之处不再赘述。
本发明实现了跨多注册中心的服务调用,在解决应用间因注册中心类型不同而无法直接调用的问题的同时,提高了服务发现的扩展能力,无需对源服务提供方进行服务改造,减少异构注册中心应用调用的改造成本,提升集中部署效率,扩展应用服务功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如rom/ram、磁碟、光盘等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。