基于微服务架构的服务调用方法、系统、设备及介质与流程

文档序号:27759707发布日期:2021-12-03 23:20阅读:103来源:国知局
基于微服务架构的服务调用方法、系统、设备及介质与流程

1.本发明涉及计算机技术领域,特别涉及一种基于微服务架构的服务调用方法、系统、设备及介质。


背景技术:

2.随着互联网的发展,使用微服务架构是企业级软件开发中的常见选择,其目的是将完整系统拆分为多个可独立部署的组件,每一个组件都作为单独的服务,不同的服务集群之间通过注册中心来组织管理,通过远程过程调用(remote procedure call/rpc)技术进行服务之间的通信。
3.微服务架构主要包含的组成部分为:注册中心、服务提供方、服务调用方。其中注册中心为独立的中间件,能够存储每个服务的元信息(如地址、端口等),主要负责服务的注册与发现。服务提供方与服务调用方都是具体的服务实例,一个服务可以同时作为服务的调用方与提供方。每个服务都会将自己的访问地址注册到注册中心,不同的服务集群之间通过注册中心来发现其他的服务集群,当服务调用者获取到需要的服务提供者的访问地址之后即可通过rpc(远程过程调用)来进行访问。
4.通常使用微服务架构的系统比较庞大,比如有30个微服务,所需要的cpu(中央处理器)和内存比较庞大,很难全部在一台开发机上运行起来以进行开发和调试。而现有技术中常见的方法是,搭建一套所有开发者共用的开发环境,即在一套服务器上运行所有微服务,然后在开发机上运行单个开发中的微服务,利用开发环境进行完整的微服务调用和调试。而这种方式存在开发机上运行的微服务与服务器上运行的同名微服务会自动被负载均衡调用,开发机上的微服务是不稳定的,尚在开发中,更有可能被设置了断点,无法调用成功,导致其他开发者的开发调试被影响。


技术实现要素:

5.本发明要解决的技术问题是为了克服现有技术中开发机本机服务注册到公用开发环境会导致公用开发环境的其他开发机服务被误调用到本机服务的缺陷,提供一种基于微服务架构的服务调用方法、系统、设备及介质。
6.本发明是通过下述技术方案来解决上述技术问题:
7.本发明第一方面提供了一种基于微服务架构的服务调用方法,所述服务调用方法包括:
8.服务调用方向注册中心发送服务调用请求时,从所述注册中心获取服务提供方的元信息,以得到所述服务提供方的服务列表,所述服务调用请求包括所述服务调用方的服务组名,所述服务提供方的元信息包括所述服务提供方的服务组名;
9.若从所述服务提供方的服务列表中筛选出与所述服务调用方的服务组名匹配的所述服务提供方的服务组名,则调用所述服务提供方的服务组名对应的所述微服务架构中的服务。
10.较佳地,所述服务调用方向注册中心发送服务调用请求时,从所述注册中心获取服务提供方的元信息,以得到所述服务提供方的服务列表的步骤之前,所述服务调用方法还包括:
11.所述服务提供方向所述注册中心发送注册请求,将所述服务提供方的元信息保存至所述注册中心。
12.较佳地,所述服务提供方的元信息还包括所述服务提供方的ip地址信和/或端口信息,所述服务提供方向注册中心发送注册请求,将所述服务提供方的元信息保存至所述注册中心的步骤包括:
13.读取配置文件中的所述注册中心的连接信息;
14.根据所述连接信息将所述服务提供方的ip地址信息、所述端口信息和/或所述服务提供方的服务组名保存至所述注册中心。
15.较佳地,所述连接信息包括所述注册中心的端口信息和/或账户密码。
16.较佳地,所述服务调用方向注册中心发送服务调用请求时,从所述注册中心获取服务提供方的元信息,以得到所述服务提供方的服务列表的步骤之前,所述服务调用方法包括:
17.所述服务调用方向所述注册中心发送连接请求,读取配置文件中的所述注册中心的连接信息;
18.根据所述连接信息建立所述服务调用方与所述注册中心之间的通信连接。
19.较佳地,所述若从所述服务提供方的服务列表中筛选出与所述服务调用方的服务组名匹配的所述服务提供方的服务组名,则调用所述服务提供方的服务组名对应的所述微服务架构中的服务的步骤包括:
20.若基于负载均衡器从所述服务提供方的服务列表中筛选出与所述服务调用方的服务组名匹配的所述服务提供方的服务组名,则调用所述服务提供方的服务组名对应的所述微服务架构中的服务。
21.较佳地,所述服务调用方法还包括:
22.若从所述服务提供方的服务列表中筛选出与所述服务调用方的服务组名匹配的多个所述服务提供方的服务组名,则根据负载均衡策略从多个所述服务提供方的服务组名对应的所述微服务架构中的多个服务中任意调用一个与所述服务提供方的服务组名对应的服务。
23.较佳地,若从所述服务提供方的服务列表中没有筛选出与所述服务调用方的服务组名匹配的所述服务提供方的服务组名,则直接调用公共开发环境中的服务。
24.本发明第二方面提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现如第一方面所述的基于微服务架构的服务调用方法。
25.本发明第三方面提供了一种计算机可读介质,其上存储有计算机指令,所述计算机指令在由处理器执行时实现如第一方面所述的基于微服务架构的服务调用方法。
26.在符合本领域常识的基础上,所述各优选条件,可任意组合,即得本发明各较佳实施例。
27.本发明的积极进步效果在于:
28.本发明通过服务调用方向注册中心发送服务调用请求时,从注册中心获取服务提供方的元信息,以得到服务提供方的服务列表,若从服务提供方的服务列表中筛选出与服务调用方的服务组名匹配的服务提供方的服务组名,则调用服务提供方的服务组名对应的微服务架构中的服务,能够基于服务组名有针对性的调用需要的服务,避免多个不同服务之间的影响,提高了编码效率。
附图说明
29.图1为本发明实施例1的基于微服务架构的服务调用方法的第一流程图。
30.图2为本发明实施例1的基于微服务架构的服务调用方法的第二流程图。
31.图3为本发明实施例1的基于微服务架构的服务调用方法的步骤100的流程图。
32.图4为本发明实施例1的基于微服务架构的服务调用方法的第三流程图。
33.图5为本发明实施例1的基于微服务架构的服务调用方法的第四流程图。
34.图6为本发明实施例2的实现基于微服务架构的服务调用方法的电子设备的结构示意图。
具体实施方式
35.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
36.实施例1
37.本实施例提供的一种基于微服务架构的服务调用方法,如图1所示,该服务调用方法包括:
38.步骤101、服务调用方向注册中心发送服务调用请求时,从注册中心获取服务提供方的元信息,以得到服务提供方的服务列表,该服务调用请求包括服务调用方的服务组名,服务提供方的元信息包括服务提供方的服务组名;
39.本实施例中,当服务调用方发起携带有服务调用方的服务组名的服务调用请求时,负载均衡器通过sdk(指软件开发工具包)对接注册中心,从注册中心获取所有注册进去的服务提供方的元信息,以得到服务提供方的服务列表。
40.本实施例中,可以将服务提供方和服务调用方各自的ip(国际互连协议)地址信息分别作为各自的服务组名,即将服务提供方的ip地址信息作为服务提供方的服务组名,将服务调用方的ip地址信息作为服务调用方的服务组名,也可以将服务提供方和服务调用方的其他信息作为各自的服务组名,此处不做具体限定。
41.需要说明的是,服务提供方的服务组名与服务调用方的服务组名可以相同,也可以不相同。
42.例如,服务提供方与服务调用方都使用各自的ip地址信息作为各自的服务组名;在服务提供方的服务组名与服务调用方的服务组名可以相同的情况下,比如二者的服务组名为192.168.1.10。
43.步骤102、若从服务提供方的服务列表中筛选出与服务调用方的服务组名匹配的服务提供方的服务组名,则执行步骤103;
44.步骤103、调用服务提供方的服务组名对应的微服务架构中的服务。
45.本实施例中,服务调用方调用服务时,负载均衡器从服务提供方的服务列表中筛选出具体访问的服务信息,然后发起rpc调用,具体地,通过服务调用方的服务组名对服务提供方的服务列表进行过滤,若从服务提供方的服务列表中筛选出与服务调用方的服务组名匹配的服务提供方的服务组名(即若从服务提供方的服务列表中筛选出与服务调用方的服务组名相同的服务提供方的服务组名),则优先调用该服务提供方的服务组名对应的微服务架构中的服务。
46.本实施例通过服务自身在注册中心存放服务分组信息,调用时根据服务提供方的元信息在程序内部进行筛选的方法实现了服务调用分组的功能。在多个开发人员共用一套环境时就可以借助分组的特性使得自己的服务与他人的服务之间互不影响,因为组名就是使用的自己ip地址信息,所以在自己机器上发起的请求将优先调用到自己启动的服务提供者,使用同一套公共开发环境时也能支持多个不同的开发机的测试。使用任意主流注册中心实现方式简单易懂,可操作性佳,在代码逻辑兼容性强的同时也能够大大降低开发环境搭建的成本,提高了编码效率,缩短了开发周期。
47.在一可实施的方案中,若从服务提供方的服务列表中筛选出与服务调用方的服务组名匹配的多个服务提供方的服务组名,则根据负载均衡策略从多个服务提供方的服务组名对应的微服务架构中的多个服务中任意调用一个与服务提供方的服务组名对应的服务。
48.本实施例中,通过服务调用方的服务组名(例如,服务调用方的服务组名为192.168.1.10)对服务提供方的服务列表进行过滤,从服务提供方的服务列表中如果筛选出服务组为192.168.1.10的多个服务时(即筛选出与服务调用方的服务组192.168.1.10相同的多个服务提供方的服务组名时),则根据负载均衡策略从多个符合要求的服务提供方的服务组名对应的微服务架构中的多个服务中任意选择一个服务,直接调用选中的该服务即可。能够基于服务组名有针对性的调用需要的服务,避免多个不同服务之间的影响,使得同一套公共开发环境能够同时支持多个不同的开发机的测试。
49.在一可实施的方案中,如图2所示,该服务调用方法还包括:
50.步骤100、服务提供方向注册中心发送注册请求,将服务提供方的元信息保存至注册中心。
51.本实施例中,服务提供方对外提供服务时,服务提供方向注册中心发送注册请求,并通过软件开发工具包(sdk,software development kit)对接注册中心将服务提供方的元信息保存至注册中心,以方便对外正常提供服务。
52.在一可实施的方案中,服务提供方的元信息还包括服务提供方的ip地址信和/或端口信息,如图3所示,步骤100包括:
53.步骤1000、读取配置文件中的注册中心的连接信息;
54.步骤10000、根据连接信息将服务提供方的ip地址信息、端口信息和/或服务提供方的服务组名保存至注册中心。
55.在一可实施的方案中,连接信息包括注册中心的端口信息和/或账户密码。
56.本实施例中,读取配置文件中的注册中心的端口信息、账户密码等信息,根据注册中心的这些信息使用sdk对接注册中心,将服务提供方的ip地址信息、端口信息和/或服务提供方的服务组名通过sdk调用注册中心提供的注册端口信息发送至注册中心进行服务注册(即建立服务提供方与注册中心的通信连接后,将服务提供方的ip地址信息、端口信息以
及服务提供方的服务组名(例如,将服务提供方的ip地址信息作为自身的服务组名)保存至注册中心),注册完成后,服务提供方即可对外正常提供服务。例如,服务提供方直接使用自身的ip地址信息(例如,ip地址信息为192.168.1.10)作为服务提供方的服务组名。
57.需要说明的是,注册中心为能够存储每个服务提供方的元信息(例如,元信息为ip地址信息、端口信息等)的中间件,在本实施例中除了存储固定的服务提供方的ip地址信息外,还会额外的在元信息中加入服务提供方的服务组名,例如,在元信息中加入的服务提供方的服务组名为本机的网际互连协议(ip,internet protocol)地址信息。
58.在一可实施的方案中,如图4所示,该服务调用方法还包括:
59.步骤1001、服务调用方向注册中心发送连接请求,读取配置文件中的注册中心的连接信息;
60.步骤1002、根据连接信息建立服务调用方与注册中心之间的通信连接。
61.本实施例中,服务调用方在调用服务之前,服务调用方先向注册中心发送发起连接请求,然后读取配置文件中的注册中心的端口信息、账户密码等信息,基于注册中心的上述信息建立服务调用方与注册中心之间的通信连接,以便能够响应到服务调用方发送的服务调用请求。
62.在一可实施的方案中,步骤102包括:
63.若基于负载均衡器从服务提供方的服务列表中筛选出与服务调用方的服务组名匹配的服务提供方的服务组名,则执行上述步骤103。
64.本实施例中,服务调用方在调用具体服务时通过负载均衡器进行服务调用,负载均衡器为处理服务调用方具体调用请求的控制器。
65.进一步地,通过负载均衡器筛选出与服务调用方的服务组名相同的服务提供方的服务组名对应的微服务架构中的服务,并获取所调用的服务的ip地址信息和端口信息,根据该服务的ip地址信息和端口信息对该服务进行http(从客户端到服务器端的请求消息)请求,将该请求得到的响应返回给服务调用方进行之后的业务处理,需要说明的是,在http请求中,会将服务调用方的服务组名(例如192.168.1.10)传递过去(即http请求内容中的服务调用方的服务组名随着调用链路进行传递,以此来隔离不同的服务),使得下游的服务仍然会优先调用服务组名为192.168.1.10的服务,保证在整个微服务调用链路中只要有自己本地启动的开发服务都将优先调用,使得本地服务调用方可以覅用公共开发环境里的服务,减少了本地需要启动的服务,同时本地启动的服务由于使用的不同的服务分组,不会影响其他开发机对正常服务的请求。
66.在一可实施的方案中,如图5所示,该服务调用方法还包括:
67.步骤104、若从服务提供方的服务列表中没有筛选出与服务调用方的服务组名匹配的服务提供方的服务组名,则执行步骤105;
68.步骤105、直接调用公共开发环境中的服务。
69.本实施例中,优先调用设有服务组名的本机服务,若本机上没有与调用方的服务组名相同的服务时,则直接调用公共开发环境中没有组名的服务;需要说明的是,在调用公共开发环境上的服务时通常是从公共开发环境中随机选择一个服务直接调用。
70.本实施例通过设置服务提供方启动时在注册中心中存放的服务提供方的服务组名来确定服务的分组,在rpc调用时在http请求内容中设置服务调用方的服务组名,从注册
中心获取到所有服务后在选择具体调用的服务地址时,根据服务调用方的服务组名进行过滤和筛选,优先选择与服务调用方同组名的服务进行调用。能够基于服务组名有针对性的调用需要的服务,避免多个不同服务之间的影响,也能够在微服务架构下使多个开发人员共用一套开发环境并且使服务之间的调用互不影响,同时实现方式简单并且不依赖具体的注册中心,降低了维护成本,提高了编码效率。
71.实施例2
72.图6为本发明实施例2提供的一种电子设备的结构示意图。该电子设备为服务器,该服务器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现实施例1的基于微服务架构的服务调用方法。图6显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
73.如图6所示,电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。
74.总线33包括数据总线、地址总线和控制总线。
75.存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。
76.存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
77.处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1的基于微服务架构的服务调用方法。
78.电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图6所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
79.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
80.实施例3
81.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现实施例1的基于微服务架构的服务调用方法。
82.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
83.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代
码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行实现实施例1的基于微服务架构的服务调用方法。
84.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
85.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1