微服务调用方法、电子设备及存储介质与流程
未命名
09-24
阅读:52
评论:0
1.本技术涉及互联网技术领域,特别是涉及一种微服务调用方法、电子设备及存储介质。
背景技术:
2.随着互联网技术的迅速发展,基于微服务架构的系统被越来越广泛地应用于大型系统的开发中,微服务架构的系统能够解决单体系统的不足,同时也能够满足越来越复杂的业务需求。
3.微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,该服务单元称为微服务。微服务架构的系统使得微服务可以独立的部署、运行、升级,并且微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。在微服务架构中,微服务与微服务之间可能存在依赖关系,这种依赖关系使得在实际应用中某个微服务需要调用与其具有依赖关系的其他微服务。
4.为了对微服务的功能等方面进行优化改进,通常需要对微服务进行升级,升级后发布新版本的微服务。但是,在新版本的微服务发布后,与其存在依赖关系的微服务如果调用该新版本的微服务,可能会由于其与该新版本的微服务不兼容,从而导致在调用该新版本的微服务时出现异常。因此,如何保证新版本的微服务发布后微服务之间能够正常调用,是目前亟待解决的技术问题。
技术实现要素:
5.鉴于上述问题,本技术实施例提出了一种微服务调用方法、电子设备及存储介质,能够保证微服务之间的正常调用。
6.根据本技术的实施例的一个方面,提供了一种微服务调用方法,所述方法包括:
7.响应于接收到业务请求,确定需要调用的目标微服务;
8.获取自身的版本号和所述目标微服务的已发布版本号;
9.从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号;
10.响应于筛选出所述目标版本号,调用所述目标版本号对应的目标微服务。
11.根据本技术的实施例的另一方面,提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个计算机可读存储介质;当所述指令由所述一个或多个处理器执行时,使得所述处理器执行如上任一项所述的微服务调用方法。
12.根据本技术的实施例的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如上任一项所述的微服务调用方法。
13.本技术实施例中,微服务响应于接收到业务请求,确定需要调用的目标微服务,获取自身的版本号和所述目标微服务的已发布版本号,从所述目标微服务的已发布版本号中
筛选与所述自身的版本号兼容的目标版本号,响应于筛选出所述目标版本号,调用所述目标版本号对应的目标微服务。由此可知,本技术实施例中,对于微服务来说,会保留该微服务的各已发布版本,在某个微服务需要调用目标微服务的情况下,能够从该目标微服务的已发布版本号中筛选与该微服务自身的版本号兼容的目标版本号,进而调用该目标版本号对应版本的目标微服务,因此能够解决由于版本不兼容导致的微服务调用异常的问题,保证微服务之间的正常调用。
附图说明
14.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1是本技术实施例的一种微服务调用方法的步骤流程图。
16.图2是本技术实施例的另一种微服务调用方法的步骤流程图。
17.图3是本技术实施例的一种微服务筛选过程的示意图。
18.图4是本技术实施例的另一种微服务筛选过程的示意图。
19.图5是本技术实施例的一种电子设备的结构示意图。
具体实施方式
20.下面将结合本技术的实施例中的附图,对本技术的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本技术的一部分实施例,而不是本技术的全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.在微服务架构中,微服务与微服务之间可能存在依赖关系(也称为调用关系),因此,在实际应用中,针对一个业务请求,可能会伴随多个微服务的调用。
22.举例来说,假设当用户通过客户端发起一个业务请求时,该业务请求首先到达微服务a,然后微服务a需要调用微服务b,微服务b还需要调用微服务c和微服务d,微服务c和微服务d处理完后向微服务b做出响应,微服务b处理完后向微服务a做出响应,最后由微服务a来响应用户的业务请求。其中,a、b、c、d表示微服务的标识。
23.在发布新版本的微服务的应用场景下,如果一个或多个微服务发布了新版本,并且这些新版本的微服务之间存在依赖关系,则常常会因为无法相互兼容的新旧版本交叉调用而导致大面积访问出现异常。
24.举例来说,假设某次发布清单中有微服务a和微服务b,并且存在微服务a调用微服务b的调用关系。初始时,线上的微服务a的版本号为a1,微服务b的版本号为b1,后期对微服务a和微服务b调整升级后,发布的微服务a的新版本的版本号为a2,微服务b的新版本的版本号为b2。其中,微服务a的版本号a1与微服务b的版本号b1相互兼容,微服务a的版本号a2与微服务b的版本号b2相互兼容,因此,微服务a的版本a1可以正常调用微服务b的版本b1,微服务a的版本a2可以正常调用微服务b的版本b2。
25.当系统中存在微服务a调用微服务b的需求时,通常情况下系统会随机调用微服务
b的版本。但是,如果微服务a的当前版本为a1,当系统随机调用到微服务b的版本b2时,则会出现调用异常的情况;类似的,如果微服务a的当前版本为a2,当系统随机调用到微服务b的版本b1时,则会出现调用异常的情况。
26.针对上述微服务之间调用异常的问题,本技术实施例中提出,在某个微服务需要调用其他微服务的情况下,筛选与自身的版本号兼容的其他微服务的目标版本号,从而能够准确调用与自身兼容的版本,保证微服务之间的正常调用。
27.本实施例中的微服务调用方法的执行主体可以为当前微服务(也即接收到业务请求的微服务),也可以为当前微服务对应的电子设备(比如终端或者服务器等),本实施例对此不作限制。以下将以执行主体为当前微服务为例进行说明。
28.参照图1,示出了本技术实施例的一种微服务调用方法的步骤流程图。
29.如图1所示,微服务调用方法可以包括以下步骤:
30.步骤101,响应于接收到业务请求,确定需要调用的目标微服务。
31.用户通过在客户端上执行相应操作可以触发业务请求。示意性的,客户端可以包括但不限于:应用程序(app)、网页程序,等等。示意性的,业务请求可以包括但不限于http(hyper text transfer protocol,超文本传输协议)请求等。
32.在对业务请求进行处理的过程中,可能会伴随多个微服务的调用,业务请求会被传递到这些微服务中。当业务请求被传递到某个微服务时,该微服务即作为当前微服务,从而执行本实施例中的微服务调用方法。
33.举例来说,假设当用户通过客户端发起一个业务请求时,首先,业务请求到达微服务a,此时微服务a作为当前微服务,执行本实施例中的微服务调用方法;然后,微服务a调用微服务b,业务请求到达微服务b,此时微服务b作为当前微服务,执行本实施例中的微服务调用方法;接着,微服务b调用微服务c和微服务d,业务请求到达微服务c和微服务d,此时微服务c和微服务d作为当前微服务,执行本实施例中的微服务调用方法。
34.当前微服务响应于接收到业务请求,确定需要调用的目标微服务。对于确定目标微服务的具体过程,将在下面的实施例中详细介绍。
35.步骤102,获取自身的版本号和所述目标微服务的已发布版本号。
36.本实施例中,针对任意一个微服务,可以保留该微服务的各已发布版本,记录该微服务的标识以及该微服务的各已发布版本号等信息。当前微服务确定出需要调用的目标微服务后,获取自身的版本号以及目标微服务的全部已发布版本号。
37.步骤103,从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号。
38.对于从目标微服务的已发布版本号中筛选目标版本号的具体过程,将在下面的实施例中详细介绍。
39.步骤104,响应于筛选出所述目标版本号,调用所述目标版本号对应的目标微服务。
40.当前微服务响应于筛选出目标版本号,说明目标微服务的该目标版本号与当前微服务自身的版本号相互兼容,因此当前微服务可以正常调用目标版本号对应的目标微服务。
41.当前微服务响应于未筛选出目标版本号,说明目标微服务没有与当前微服务自身
的版本号相互兼容的版本,因此当前微服务无法正常调用目标微服务。该种情况下,当前微服务可以确定调用失败,也可以进一步返回调用失败的响应等。
42.本技术实施例中,对于微服务来说,会保留该微服务的各已发布版本,在某个微服务需要调用目标微服务的情况下,能够从该目标微服务的已发布版本号中筛选与该微服务自身的版本号兼容的目标版本号,进而调用该目标版本号对应版本的目标微服务,因此能够解决由于版本不兼容导致的微服务调用异常的问题,保证微服务之间的正常调用。
43.参照图2,示出了本技术实施例的另一种微服务调用方法的步骤流程图。
44.如图2所示,微服务调用方法可以包括以下步骤:
45.步骤201,响应于接收到业务请求,确定需要调用的目标微服务。
46.在一种可选实施方式中,预先配置微服务之间的调用关系,该调用关系可以包含微服务的标识以及该微服务需要调用的微服务的标识。其中,标识可以包括但不限于唯一名称、唯一编号,等等。
47.基于此,当前微服务响应于接收到业务请求,首先获取当前微服务自身的标识,然后基于自身的标识从上述微服务之间的调用关系中进行匹配,从而查询当前微服务需要调用的微服务的标识,将查询到的微服务的标识确定为目标微服务的标识。
48.举例来说,假设微服务之间的调用关系为微服务a调用微服务b,微服务b调用微服务c和微服务d。如果当前微服务为微服务a,则当前微服务的标识为a,基于当前微服务的标识a,通过查询微服务之间的调用关系可以得知,微服务a需要调用的微服务的标识为b,因此微服务b即为需要调用的目标微服务。
49.步骤202,获取自身的版本号和所述目标微服务的已发布版本号。
50.在一种可选实施方式中,在微服务发布后,可以在注册中心保存该微服务的标识以及该微服务的各已发布版本号等信息。
51.基于此,当前微服务响应于确定出需要调用的目标微服务,从注册中心存储的各微服务的已发布版本号中,读取所述目标微服务的已发布版本号。示意性的,当前微服务基于目标微服务的标识从注册中心中进行匹配,将匹配成功的微服务的标识对应的各已发布版本号,确定为目标微服务的已发布版本号。
52.举例来说,假设在注册中心中存储有微服务a的标识a以及微服务a的已发布版本号a1和a2,微服务b的标识b以及微服务b的已发布版本号b1和b2,微服务c的标识c以及微服务c的已发布版本号c1和c2,微服务d的标识d以及微服务d的已发布版本号d1和d2。经过上述步骤201确定出需要调用的目标微服务的标识为b,因此利用标识b从注册中心存储的微服务的标识中进行匹配,注册中心中存储的微服务的标识b匹配成功,然后将注册中心中存储的微服务的标识b对应的已发布版本号b1和b2,确定为目标微服务的已发布版本号。
53.步骤203,读取预先配置的调用规则。
54.步骤204,基于所述调用规则,从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号。
55.根据发布的各微服务的版本之间的实际兼容关系,预先配置调用规则,调用规则中可以包括各微服务之间相互兼容的版本号的调用关系。
56.当前微服务获取到自身的版本号和目标微服务的已发布版本号后,读取预先配置的调用规则,并基于当前微服务自身的版本号和该调用规则,从目标微服务的已发布版本
号中,筛选与当前微服务自身的版本号兼容的目标版本号。
57.示意性的,当前微服务从所述调用规则中搜索所述自身的版本号,并从所述调用规则中提取与所述自身的版本号兼容的版本号;响应于所述目标微服务的已发布版本号中包含提取的版本号,则将所述提取的版本号确定为所述目标版本号;响应于所述目标微服务的已发布版本号中不包含提取的版本号,确定未筛选出所述目标版本号。
58.举例来说,假设微服务之间相互兼容的版本号的调用关系为微服务a的版本号a1调用微服务b的版本号b1,微服务a的版本号a2调用微服务b的版本号b2,微服务b的版本号b1调用微服务c的版本号c1和微服务d的版本号d1,微服务b的版本号b2调用微服务c的版本号c2和微服务d的版本号d2。当前微服务a获取到自身的版本号为a2以及目标微服务b的已发布版本号为b1和b2,首先基于自身的版本号a2从调用规则中进行匹配以便搜索版本号a2,在搜索到版本号a2后提取版本号a2调用的微服务b的版本号为b2,然后判断出目标微服务b的已发布版本号b1和b2中包含提取的版本号b2,因此将提取的版本号b2确定为目标版本号。
59.步骤205,响应于筛选出所述目标版本号,调用所述目标版本号对应的目标微服务。
60.当前微服务响应于筛选出目标微服务的目标版本号,调用目标版本号对应的目标微服务。
61.示意性的,微服务之间可以通过一些轻量级的通信机制进行通信,以便进行微服务的调用。可选地,通信方式包括但不限于:rest(representational state transfer,表述性状态传递),rpc(remote procedure call protocol,远程过程调用协议),等等。
62.在一种可选实施方式中,可以预先设置配置文件,该配置文件中包含上述调用规则。该配置文件可以在外部配置并存储,并在微服务启动时被加载,因此该配置文件可以热更新。基于此,当前微服务在获取自身的版本号和目标微服务的已发布版本号后,可以获取预先加载的配置文件,并从所述配置文件中读取调用规则。然后基于所述调用规则,从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号。
63.参照图3,示出了本技术实施例的一种微服务筛选过程的示意图。
64.如图3所示,微服务a发布版本a1后在注册中心进行注册,注册中心存储微服务a的标识a和已发布版本号a1;微服务a发布版本a2后在注册中心进行注册,注册中心存储微服务a的标识a和已发布版本号a2;微服务b发布版本b1后在注册中心进行注册,注册中心存储微服务b的标识b和已发布版本号b1;微服务b发布版本b2后在注册中心进行注册,注册中心存储微服务b的标识b和已发布版本号b2。预先在外部配置并存储调用规则,该调用规则为a1调用b1,a2调用b2(也即图3中的a1
→
b1,a2
→
b2)。
65.当前微服务的标识为a,需要调用的目标微服务的标识为b。
66.如果当前微服务a自身的版本号为a1(也即图3中的a:a1),则当前微服务a基于自身的版本号a1,从注册中心获取到目标微服务b的已发布版本号为b1和b2(也即图3中的b:b2,b:b1);当前微服务a读取调用规则,然后从目标微服务b的已发布版本号为b1和b2中筛选出与自身版本号a1相互兼容的目标版本号b1(也即图3中的b:b1);当前微服务a调用目标版本号b1对应的目标微服务b中的实例。
67.如果当前微服务a自身的版本号为a2(也即图3中的a:a2),则当前微服务a基于自
身的版本号a2,从注册中心获取到目标微服务b的已发布版本号为b1和b2(也即图3中的b:b2,b:b1);当前微服务a读取调用规则,然后从目标微服务b的已发布版本号为b1和b2中筛选出与自身版本号a2相互兼容的目标版本号b2(也即图3中的b:b2);当前微服务a调用目标版本号b2对应的目标微服务b中的实例。
68.在另一种可选实施方式中,可以预先配置调用规则,并在预设工具中保存该调用规则,该预设工具用于为业务请求添加请求头。在业务请求被发送至微服务之前,可以由预设工具为该业务请求添加请求头,该请求头中包含上述预先配置的调用规则。基于此,当前微服务在获取自身的版本号和目标微服务的已发布版本号后,可以获取所述业务请求的请求头,并从所述请求头中读取调用规则。然后基于所述调用规则,从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号。
69.参照图4,示出了本技术实施例的另一种微服务筛选过程的示意图。
70.如图4所示,为了使前端用户界面与微服务之间的交互更加便利,可以在前端用户界面和微服务之间设置代理或者叫网关(gateway),它的作用包括提供统一服务入口,让微服务对前台透明;聚合后台的服务,节省流量,提升性能;提供安全,过滤,流控等api(application program interface,应用程序接口)管理功能。
71.在用户触发业务请求后,由预设工具为该业务请求添加请求头,该请求头中包含调用规则为a1调用b1,a2调用b2;包含请求头的业务请求被发送至网关(gateway);网关(gateway)将包含请求头的业务请求发送至微服务a(service-a);微服务a(service-a)将包含请求头的业务请求发送至负载均衡客户端(load balancer feign client);负载均衡客户端(load balancer feign client)提取业务请求的请求头,从请求头中读取调用规则,并获取微服务a(service-a)自身的版本号和需要调用的目标微服务b的已发布版本号b1和b2;负载均衡客户端(load balancer feign client)基于调用规则,利用负载均衡服务选择函数baseloadbalancer.choosserver(),从目标微服务b的已发布版本号b1和b2中筛选与微服务a(service-a)自身的版本号兼容的目标版本号,进而根据目标版本号选择调用目标微服务b1版本的实例(service-b1 instance)或者调用目标微服务b2版本的实例(service-b2 instance)。
72.本技术实施例中,能够解决微服务新版本发布流程中,版本不兼容的问题,在微服务访问过程中,可以动态调整访问链路;发布流程可控,可以根据微服务新版本的验证结果,选择替换、回滚等,并及时实时更新注册中心中的微服务信息以及配置的调用规则。
73.在本技术的实施例中,还提供了一种电子设备。该电子设备可以包括一个或多个处理器,以及其上存储有指令的一个或多个计算机可读存储介质,指令例如应用程序。当所述指令由所述一个或多个处理器执行时,使得所述处理器执行上述任一实施例的微服务调用方法。
74.图5示出了本技术实施例的一种电子设备500的结构示意图。如图5所示,电子设备500包括中央处理单元(central processing unit,简称cpu)501,其可以根据存储在只读存储器(read only memory,简称rom)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(random access memory,简称ram)503中的计算机程序指令,来执行各种适当的动作和处理。在ram 503中,还可存储电子设备500操作所需的各种程序和数据。cpu 501、rom 502以及ram 503通过总线504彼此相连。输入/输出(input/output,简称i/o)接口
505也连接至总线504。
75.电子设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标、麦克风等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
76.上文所描述的各个过程和处理,可由处理单元501执行。例如,上述任一实施例的微服务调用方法可被实现为计算机软件程序,其被有形地包含于计算机可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序被加载到ram 503并由cpu501执行时,可以执行上文描述的微服务调用方法中的一个或多个动作。
77.在本技术的实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序可由电子设备的处理器执行,当所述计算机程序被处理器执行时,使得所述处理器执行如上任一实施例所述的微服务调用方法。
78.上述提到的处理器可以包括但不限于:cpu、网络处理器(network processor,简称np)、数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,等等。
79.上述提到的计算机可读存储介质可以包括但不限于:rom、ram、光盘只读储存器(compact disc readonly memory,简称cd-rom)、电可擦可编程只读存储器(electronic erasable programmable readonly memory,简称eeprom)、硬盘、软盘、闪存,等等。
80.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
81.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
82.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom、ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
83.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多
形式,均属于本技术的保护之内。
84.本领域普通技术人员可以意识到,结合本技术实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
85.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
86.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
87.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
88.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
89.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
90.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种微服务调用方法,其特征在于,所述方法包括:响应于接收到业务请求,确定需要调用的目标微服务;获取自身的版本号和所述目标微服务的已发布版本号;从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号;响应于筛选出所述目标版本号,调用所述目标版本号对应的目标微服务。2.根据权利要求1所述的方法,所述从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号,包括如下步骤:读取预先配置的调用规则;所述调用规则包括微服务之间相互兼容的版本号的调用关系;基于所述调用规则,从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号。3.根据权利要求2所述的方法,所述读取预先配置的调用规则,包括如下步骤:获取预先加载的配置文件,所述配置文件中包含所述调用规则;从所述配置文件中读取所述调用规则。4.根据权利要求3所述的方法,所述配置文件在微服务启动时被加载。5.根据权利要求2所述的方法,所述读取预先配置的调用规则,包括如下步骤:获取所述业务请求的请求头,所述请求头中包含所述调用规则;从所述请求头中读取所述调用规则。6.根据权利要求5所述的方法,所述请求头是在所述业务请求被发送至微服务之前,由预设工具添加至所述业务请求中。7.根据权利要求2所述的方法,所述基于所述调用规则,从所述目标微服务的已发布版本号中,筛选与所述自身的版本号兼容的目标版本号,包括如下步骤:从所述调用规则中搜索所述自身的版本号,并从所述调用规则中提取与所述自身的版本号兼容的版本号;响应于所述目标微服务的已发布版本号中包含提取的版本号,则将所述提取的版本号确定为所述目标版本号。8.根据权利要求1所述的方法,所述获取所述目标微服务的已发布版本号,包括如下步骤:从注册中心存储的各微服务的已发布版本号中,读取所述目标微服务的已发布版本号。9.一种电子设备,其特征在于,包括:一个或多个处理器;和其上存储有指令的一个或多个计算机可读存储介质;当所述指令由所述一个或多个处理器执行时,使得所述处理器执行如权利要求1至8任一项所述的微服务调用方法。10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至8任一项所述的微服务调用方法。
技术总结
本申请实施例提供了一种微服务调用方法、电子设备及存储介质。其中,微服务调用方法包括:响应于接收到业务请求,确定需要调用的目标微服务;获取自身的版本号和目标微服务的已发布版本号;从目标微服务的已发布版本号中,筛选与自身的版本号兼容的目标版本号;响应于筛选出目标版本号,调用目标版本号对应的目标微服务。本申请实施例中,对于微服务来说会保留该微服务的各已发布版本,在某个微服务需要调用目标微服务的情况下,能够从该目标微服务的已发布版本号中筛选与该微服务自身的版本号兼容的目标版本号,进而调用该目标版本号对应版本的目标微服务,因此能够解决由于版本不兼容导致的微服务调用异常的问题,保证微服务之间的正常调用。之间的正常调用。之间的正常调用。
技术研发人员:刘运龙
受保护的技术使用者:博泰车联网科技(上海)股份有限公司
技术研发日:2022.03.17
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/