本发明涉及服务调用技术领域,具体地,涉及一种分布式服务调用方法及系统。
背景技术:
随着云平台和微服务技术的不断发展,分布式架构已经成为新一代应用架构的主流。dubbo(一个开源的java栈分布式服务框架)是一种业内使用非常广泛的分布式服务框架,它提供了应用架构向分布式架构转型中最基础的分布式调用能力与服务治理能力。随着在分布式框架提供的业务功能增多和业务范围扩展,出现为了将交易流量平均分布在系统中的各个节点、交易数据按业务地区独立拆分的需求。
在dubbo分布式服务框架中,提供了条件路由和脚本路由两种路由机制,存在条件路由只提供按服务调用信息、url本身的字段和url上的参数进行路由;脚本路由无法为不同服务指定特定的路由规则,并且无法动态调整路由规则等限制,上述两种路由机制均无法有效支持独立分区部署的业务场景,不利于稳定业务系统。
技术实现要素:
本发明实施例的主要目的在于提供一种分布式服务调用方法及系统,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。
为了实现上述目的,本发明实施例提供一种分布式服务调用方法,包括:
发送订阅当前服务的指令至注册中心;
接收来自注册中心的多个分片信息和多个服务提供方节点信息;其中,当前服务对应多个分片信息,每个分片信息均对应多个服务提供方节点信息;
获取服务要素信息;
根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;
当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息;
从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
本发明实施例还提供一种分布式服务调用系统,包括:
发送单元,用于发送订阅当前服务的指令至注册中心;
接收单元,用于接收来自注册中心的多个分片信息和多个服务提供方节点信息;其中,当前服务对应多个分片信息,每个分片信息均对应多个服务提供方节点信息;
获取单元,用于获取服务要素信息;
第一判断单元,用于根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;
记录单元,用于当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息;
服务调用单元,用于从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现所述的分布式服务调用方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现所述的分布式服务调用方法的步骤。
本发明实施例的分布式服务调用方法及系统根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息,最后从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中分布式服务调用方法的流程图;
图2是本发明实施例中分布式服务调用系统的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
鉴于现有技术无法有效支持独立分区部署的业务场景,不利于稳定业务系统,本发明实施例提供一种分布式服务调用方法,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。以下结合附图对本发明进行详细说明。
图1是本发明实施例中分布式服务调用方法的流程图。如图1所示,分布式服务调用方法包括:
s101:发送订阅当前服务的指令至注册中心。
具体实施时,注册中心预先接收来自服务提供装置的多个服务提供方信息,并对服务提供方信息进行注册。每个服务提供方信息均包括服务名称,以及与服务名称对应的一个路由接口信息、多个分片信息和多个服务提供方节点信息文件。订阅当前服务的指令包括当前服务的服务名称,注册中心在接收订阅当前服务的指令后,确定当前服务的服务名称对应的服务提供方信息,并返回服务提供方信息至本发明的分布式服务调用系统。当服务提供方节点信息发生上线或下线的变化时,注册中心将基于长连接推送变更后的服务提供方节点信息至分布式服务调用系统。
s102:接收来自注册中心的多个分片信息和多个服务提供方节点信息;其中,当前服务对应多个分片信息,每个分片信息均对应多个服务提供方节点信息。
其中,分片信息包括:美洲地区、亚太地区和欧非地区。
s103:获取服务要素信息。
其中,服务要素信息可以为地区号、客户编号或账号。
s104:根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息。
在服务要素映射关系中,一个分片信息映射多个服务要素信息。具体实施时,服务提供装置将服务要素映射关系写入配置中心,配置中心预先发送服务要素映射关系至分布式服务调用系统。
s105:当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息。
s106:从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
图1所示的分布式服务调用方法的执行主体可以为计算机。由图1所示的流程可知,本发明实施例的分布式服务调用方法根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息,最后从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。
一实施例中,在执行s103之前,还包括:接收来自注册中心的路由接口信息;根据路由接口信息判断当前服务是否关联路由接口;当当前服务关联路由接口时,执行s103。
本发明实施例的具体流程如下:
1、注册中心预先接收来自服务提供装置的多个服务提供方信息,并对服务提供方信息进行注册。
2、本发明的分布式服务调用系统发送订阅当前服务的指令至注册中心。
3、注册中心根据订阅当前服务的指令确定当前服务的服务名称对应的服务提供方信息,并返回服务提供方信息至分布式服务调用系统。
4、分布式服务调用系统接收来自注册中心的路由接口信息、多个分片信息和多个服务提供方节点信息。
5、分布式服务调用系统根据路由接口信息判断当前服务是否关联路由接口;当当前服务关联路由接口时,获取服务要素信息。
6、服务提供装置将服务要素映射关系写入配置中心。
7、配置中心预先发送服务要素映射关系至分布式服务调用系统。
8、分布式服务调用系统根据服务要素映射关系依次判断每个分片信息是否对应服务要素信息。当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息。
9、从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
综上,本发明实施例的分布式服务调用方法根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息,最后从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。且本发明的架构简洁、易于搭建,支持外部监管需求快速落地。
基于同一发明构思,本发明实施例还提供了一种分布式服务调用系统,由于该系统解决问题的原理与分布式服务调用方法相似,因此该系统的实施可以参见方法的实施,重复之处不再赘述。
图2是本发明实施例中分布式服务调用系统的结构框图。如图2所示,分布式服务调用系统包括:
发送单元,用于发送订阅当前服务的指令至注册中心;
接收单元,用于接收来自注册中心的多个分片信息和多个服务提供方节点信息;其中,当前服务对应多个分片信息,每个分片信息均对应多个服务提供方节点信息;
获取单元,用于获取服务要素信息;
第一判断单元,用于根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;
记录单元,用于当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息;
服务调用单元,用于从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
在其中一种实施例中,还包括:
第二判断单元,用于根据路由接口信息判断当前服务是否关联路由接口;
接收单元还用于:接收来自注册中心的路由接口信息;
获取单元具体用于:当当前服务关联路由接口时,获取服务要素信息。
在其中一种实施例中,分片信息包括:美洲地区、亚太地区和欧非地区。
在其中一种实施例中,服务要素信息为地区号、客户编号或账号。
综上,本发明实施例的分布式服务调用系统根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息,最后从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时可以实现分布式服务调用方法的全部或部分内容,例如,处理器执行计算机程序时可以实现如下内容:
发送订阅当前服务的指令至注册中心;
接收来自注册中心的多个分片信息和多个服务提供方节点信息;其中,当前服务对应多个分片信息,每个分片信息均对应多个服务提供方节点信息;
获取服务要素信息;
根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;
当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息;
从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
综上,本发明实施例的计算机设备根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息,最后从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时可以实现分布式服务调用方法的全部或部分内容,例如,处理器执行计算机程序时可以实现如下内容:
发送订阅当前服务的指令至注册中心;
接收来自注册中心的多个分片信息和多个服务提供方节点信息;其中,当前服务对应多个分片信息,每个分片信息均对应多个服务提供方节点信息;
获取服务要素信息;
根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;
当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息;
从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用。
综上,本发明实施例的计算机可读存储介质根据预设的服务要素映射关系依次判断每个分片信息是否对应服务要素信息;当分片信息对应服务要素信息时,记录该分片信息对应的多个服务提供方节点信息,最后从多个服务提供方节点信息中选择其中一个服务提供方节点信息进行服务调用,以对业务功能进行分片隔离,支持独立分区部署的业务场景,提高分布式业务系统的稳定性。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。