节点发布方法、装置及存储介质与流程
未命名
07-23
阅读:97
评论:0
1.本技术涉及计算机技术领域,尤其涉及节点发布方法、装置及存储介质。
背景技术:
2.随着计算机技术的发展,应用程序的使用越来越广泛。一个应用程序可以是由多个小的、相互独立的微服务组成,微服务是细粒度的独立的服务,可以包括多个节点。
3.微服务在使用的过程中,经常会需要更新版本,以更好的满足用户需求。然而,服务器在更新微服务的应用版本时,可能会重启其中的部分节点,导致数据访问出错,或者可能节点还未完全发布就开放请求进入,导致访问出错。
4.因此,如何在微服务中的节点发布过程中,减少数据访问出错的概率,成为亟待解决的技术问题。
技术实现要素:
5.本技术提供节点发布方法、装置及存储介质,可以减少微服务的节点在发布过程中数据访问出错的概率。
6.第一方面,本技术提供一种节点发布方法,所述方法包括:获取微服务的使用状态,所述使用状态用于指示所述微服务包括的多个节点中是否存在处于运行状态的目标节点;根据所述使用状态,确定所述微服务中的当前节点的目标版本发布方式,所述目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在所述使用状态指示所述微服务中不包括所述目标节点的情况下,所述目标版本发布方式为所述滚动发布方式,在所述使用状态指示所述微服务中包括所述目标节点的情况下,所述目标版本发布方式为所述延迟发布方式;采用所述目标版本发布方式,发布所述当前节点的目标版本。
7.在本技术实施例中,服务器根据微服务的使用状态来确定目标版本的发布方式,例如在微服务中存在处于运行状态的目标节点时,使用延迟发布方式,延迟发布可以减少对目标节点运行的影响,进而降低在节点发布的过程中数据访问出错的概率。且,服务器可以根据微服务的使用状态灵活选择节点发布的方式,可以提高节点发布的灵活性。
8.在一些实施例中,所述目标版本发布方式为延迟发布方式,所述采用所述目标版本发布方式,发布所述当前节点的目标版本,包括:在发布所述当前节点的目标版本的过程中,延迟所述当前节点的旧版本的下线流程,以使所述当前节点的旧版本保持服务能力;在所述当前节点的目标版本上线的情况下,下线所述当前节点的旧版本。
9.该实施例中,通过延迟当前节点的旧版本的下线流程,以使当前节点的旧版本保持服务能力,进而使得微服务中的目标节点可以正常运行,减少节点发布的过程中数据访问出错的概率。
10.在一些实施例中,所述延迟所述当前节点的旧版本的下线流程,包括:向所述当前节点对应的服务发现组件反注册服务信息,阻塞所述当前节点的旧版本的下线流程。
11.该实施例中,服务器向当前节点对应的服务发现组件反注册服务信息,可以延迟
当前节点的旧版本的下线流程,以保证目标节点的正常运行,提供了一种新的延迟发布的方式。
12.在一些实施例中,所述阻塞所述当前节点的旧版本的下线流程,包括:调用上下文关闭事件contextclosedevent,阻塞所述当前节点的旧版本的下线流程。
13.该实施例中,通过调用上下文关闭事件,在避免了设置相关优先级事件的同时,实现了阻塞当前节点的旧版本的下线,以达到延迟当前节点的旧版本的下线流程的目的。
14.在一些实施例中,所述当前节点的目标版本上线,包括:更新所述当前节点对应的服务注册组件的注册表信息,实现所述当前节点的目标版本上线。
15.该实施例中,更新当前节点对应的服务注册组件的注册表信息,可以使得当前节点基于该更新后的注册表信息运行相关服务,以实现目标版本上线。
16.在一些实施例中,所述方法还包括:向服务调用组件发送所述当前节点的旧版本的下线通知;响应于所述下线通知,控制所述服务调用组件更新服务节点列表。
17.该实施例中,服务器控制服务调用组件及时更新服务节点列表,可以降低调用组件后续在调用的过程中出错的概率。
18.在一些实施例中,所述控制服务调用组件更新服务节点列表,包括:基于所述服务调用组件中的反射调用组件,控制所述当前节点对应的服务组件刷新只读缓存,以及控制所述当前节点对应的服务注册组件拉取更新的注册表;更新与所述更新的注册表对应的服务节点列表。
19.该实施例中,使用反射调用组件控制服务组件刷新只读缓存,以及控制服务注册组件拉取更新的注册表,可以更快地实现更新服务节点列表,为后续的调用工作服务。
20.在一些实施例中,所述目标版本发布方式为滚动发布方式,所述采用所述目标版本发布方式,发布所述当前节点的目标版本,包括:在成功发布所述微服务中的当前节点的目标版本后,顺序发布所述微服务中的当前节点的下一个节点的目标版本。
21.该实施例中,使用滚动发布方式可以不需要申请新的服务资源,节省成本,且不需要停机发布,用户体验影响比较小,可以更好的控制发布风险。
22.第二方面,本技术提供一种节点发布装置,所述装置包括:获取模块,用于获取微服务的使用状态,所述使用状态用于指示所述微服务包括的多个节点中是否存在处于运行状态的目标节点;确定模块,用于根据所述使用状态,确定所述微服务中的当前节点的目标版本发布方式,所述目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在所述使用状态指示所述微服务中不包括所述目标节点的情况下,所述目标版本发布方式为所述滚动发布方式,在所述使用状态指示所述微服务中包括所述目标节点的情况下,所述目标版本发布方式为所述延迟发布方式;发布模块,用于采用所述目标版本发布方式,发布所述当前节点的目标版本。
23.在一些实施例中,所述目标版本发布方式为延迟发布方式,所述发布模块具体用于:在发布所述当前节点的目标版本的过程中,延迟所述当前节点的旧版本的下线流程,以使所述当前节点的旧版本保持服务能力;在所述当前节点的目标版本上线的情况下,下线所述当前节点的旧版本。
24.在一些实施例中,所述装置还包括:处理模块。处理模块,用于向所述当前节点对应的服务发现组件反注册服务信息,阻塞所述当前节点的旧版本的下线流程。
25.在一些实施例中,所述处理模块还用于调用上下文关闭事件contextclosedevent,阻塞所述当前节点的旧版本的下线流程。
26.在一些实施例中,所述装置还包括:上线模块。上线模块,用于更新所述当前节点对应的服务注册组件的注册表信息,实现所述当前节点的目标版本上线。
27.在一些实施例中,所述装置还包括:发送模块和控制模块。发送模块,用于向服务调用组件发送所述当前节点的旧版本的下线通知;控制模块,用于响应于所述下线通知,控制所述服务调用组件更新服务节点列表。
28.在一些实施例中,所述控制模块具体用于:基于所述服务调用组件中的反射调用组件,控制所述当前节点对应的服务组件刷新只读缓存,以及控制所述当前节点对应的服务注册组件拉取更新的注册表;更新与所述更新的注册表对应的服务节点列表。
29.在一些实施例中,所述发布模块具体还用于:在成功发布所述微服务中的当前节点的目标版本后,顺序发布所述微服务中的当前节点的下一个节点的目标版本。
30.第三方面,本技术提供一种电子设备,包括处理器和存储器,所述存储器用于存储代码指令;所述处理器用于运行所述代码指令,以实现上述第一方面中的方法。
31.可选地,处理器为一个或多个,存储器为一个或多个。
32.可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
33.在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,rom),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本技术实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
34.第四方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面中的方法。
35.第五方面,本技术提供一种计算机程序产品,所述计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中的方法。
附图说明
36.图1a是本技术实施例提供的应用场景的一种示例的示意图;
37.图1b是本技术实施例提供的应用场景的另一种示例的示意图;
38.图2为本技术一个实施例提供的节点发布方法的流程图;
39.图3为本技术另一个实施例提供的节点发布方法的流程图;
40.图4为本技术一个实施例提供的正常服务下线的流程示意图;
41.图5为本技术又一个实施例提供的节点发布方法的流程图;
42.图6为本技术一个实施例提供的节点发布装置的结构性示意图;
43.图7为本技术另一个实施例提供的节点发布装置的结构性示意图。
具体实施方式
44.下面将结合附图,对本技术中的技术方案进行描述。
45.为了便于清楚描述本技术实施例的技术方案,在本技术的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
46.需要说明的是,本技术中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
47.此外,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
48.随着计算机技术的发展,应用程序的使用越来越广泛。一个应用程序可以是由多个微服务组成,微服务是一种软件开发技术,是面向服务的体系结构(service-oriented architecture,soa)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。随着互联网技术的快速发展,微服务的发布量不断增加,相应地,微服务中的节点发布量也不断增加。
49.下面对相关技术中的节点发布过程进行说明。以服务器上的微服务的节点发布为例,服务器在获取到一个微服务的新版本服务发布请求时,会获取该微服务所包括的所有节点,然后将该微服务所包括的所有节点下线,然后发布新版本的节点,以实现微服务的版本更新。但是,在不同的微服务中,节点是可以共享的。例如,微服务1包括节点a,微服务2也包括节点a,当微服务1的新版本服务发布时,会将节点a下线,此时,节点a处于不可访问状态;但是该节点a在微服务2中还是处于可访问状态,此时,若微服务2需要访问节点a时,就会出现访问出错的问题。
50.因此,如何在微服务中的节点发布过程中,减少数据访问出错的概率,成为亟待解决的技术问题。
51.有鉴于此,本技术实施例提供了一种节点发布方法、装置及存储介质。本技术的技术方案中,首先获取微服务的使用状态,该使用状态用于指示微服务包括的多个节点中是否存在处于运行状态的目标节点;然后根据该使用状态,确定微服务中的当前节点的目标版本发布方式,该目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在使用状态指示微服务中不包括目标节点的情况下,目标版本发布方式为滚动发布方式,在使用状态指示微服务中包括目标节点的情况下,目标版本发布方式为所述延迟发布方式;最后采用目标版本发布方式,发布当前节点的目标版本。本技术提供的节点发布方法中,服务器根据微服务的使用状态来确定目标版本的发布方式,例如在微服务中存在处于运行状态的目标节点时,使用延迟发布方式,延迟发布可以减少对目标节点运行的影响,进而降低在节点发布的过程中数据访问出错的概率。
52.为了使本技术的目的、技术方案更加清楚直观,下面将结合附图及实施例,对本技术实施例提供的方法、装置及存储介质进行详细说明。应理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
53.请参考图1a,为本技术实施例提供的应用场景的一种示例的示意图。如图1a所示,该应用场景100可以包括终端设备101和服务器102,其中,终端设备101和服务器102可以通过网络进行通信,以实现服务器102中的版本更新。
54.请参考图1b,为本技术实施例提供的应用场景的另一种示例的示意图。如图1b所示,该应用场景110可以包括终端设备111、平台服务器112以及后端服务器113,其中,终端设备111通过平台服务器112与后端服务器113进行通信。
55.应理解,终端设备101或者终端设备111可以是手机(mobile phone)、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,mid)、可穿戴设备、虚拟现实(virtual reality,vr)设备、增强现实(augmented reality,ar)设备、智慧屏、人工智能(artificial intelligence,ai)音响、耳机、工业控制(industrial control)中的终端、无人驾驶(self driving)中的终端、远程手术(remote medical surgery)中的终端、智能电网(smart grid)中的终端、运输安全(transportation safety)中的终端、智慧城市(smart city)中的终端、智慧家庭(smart home)中的终端、个人数字助理(personal digital assistant,pda)等,本技术实施例对此并不限定。
56.服务器102以及后端服务器113,可以用独立的服务器或者是多个服务器组成的服务器集群来实现,本技术对此不做限定。且,服务器102以及后端服务器113可以是集中式服务器也可以是分布式服务器,在此不作限制。
57.下面,结合应用场景,对本技术实施例提供的节点发布方法进行详细说明。请参考图2,为本技术实施例提供的节点发布方法的一种示例的流程图。该方法可以应用于如图1a所示的服务器102,也可以应用于如图1b所示的后端服务器113,为方便说明,下面将以该方法应用在图1a所示服务器102为例,图2所示的方法中的各个步骤的描述如下:
58.s201,获取微服务的使用状态,该使用状态用于指示微服务包括的多个节点中是否存在处于运行状态的目标节点。
59.应理解,微服务中的每个逻辑服务都可以由多个进程节点程序提供同一个服务,微服务节点之间会存在相互调用和相互依赖的情况。也就是说,微服务在运行的过程中可能伴随着多个节点同时运行。微服务的使用状态指的是微服务包括的多个节点中是否存在处于运行状态的目标节点。
60.还应理解,服务器在接收到来自终端设备的新版本微服务发布请求后,会实时去获取微服务的使用状态,例如服务器可以通过检测在当前时刻的一段时间内是否有对微服务中的节点的访问请求,来判断微服务包括的多个节点中是否存在处于运行状态的目标节点,其中,该访问请求可以是来自当前微服务的访问请求,还可以是来自其他微服务的访问请求,本技术对此不做限定。
61.s202,根据该使用状态,确定微服务中的当前节点的目标版本发布方式。
62.在本技术实施例中,该目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在使用状态指示微服务中不包括目标节点的情况下,目标版本发布方式为所述滚动发布方式,在使用状态指示微服务中包括目标节点的情况下,目标版本发布方式为延迟发布
方式。
63.应理解,微服务的节点的目标版本发布方式不是一个固定的方式,而是会根据该微服务中是否存在处于运行状态的目标节点的判断结果发生变化的,这样,可根据微服务的实际使用情况来调整节点的目标版本发布方式,增加了节点发布方式的灵活性。
64.需要说明的是,滚动发布可以理解为按照微服务中的节点顺序依次进行发布,例如上一个节点发布完成后,再发布下一个节点;延迟发布可以理解为在发布微服务的任一节点的新版本的过程中,相应的旧节点正常提供服务,等待新节点发布完成后,再下线旧节点。
65.相应地,当微服务中存在处于运行状态的目标节点时,则使用延迟发布的方式发布当前节点的目标版本,具体的延迟方式本技术对此不做限定,延迟发布可以在不影响目标节点正常运行的情况下,实现当前节点的目标版本发布。当微服务中不存在处于运行状态的目标节点时,则使用滚动发布的方式发布当前节点的目标版本。
66.s203,采用目标版本发布方式,发布当前节点的目标版本。
67.应理解,服务器根据上个步骤s202中确定的目标版本发布方式,对旧的节点版本进行下线处理,实现当前节点的目标版本发布。
68.在该实施例中,服务器根据微服务的使用状态来确定目标版本的发布方式,例如在微服务中存在处于运行状态的目标节点时,使用延迟发布方式,延迟发布可以减少对目标节点运行的影响,进而降低在节点发布的过程中数据访问出错的概率,同时在服务的访问量比较大的场景下,不会影响到生产环境的正常稳定运行。
69.基于上述实施例,图3为本技术另一个实施例提供的节点发布方法的流程图,在图3所示的实施例中,以具体怎么发布当前节点的目标版本为例,下面详细说明图3所示的方法中的各个步骤,该流程图包括:
70.s301,获取微服务的使用状态,该使用状态用于指示微服务包括的多个节点中是否存在处于运行状态的目标节点。
71.该步骤和图2所示的实施例中的步骤s201相似,在此不再赘述。
72.s302,根据该使用状态,确定微服务中的当前节点的目标版本发布方式。
73.在本技术实施例中,该目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在使用状态指示微服务中不包括目标节点的情况下,目标版本发布方式为所述滚动发布方式,在使用状态指示微服务中包括目标节点的情况下,目标版本发布方式为延迟发布方式。
74.该步骤和图2所示的实施例中的步骤s202相似,在此不再赘述。
75.s303,目标版本发布方式为延迟发布方式时,在发布当前节点的目标版本的过程中,延迟当前节点的旧版本的下线流程,以使当前节点的旧版本保持服务能力。
76.应理解,节点的下线流程和正常服务的下线流程类似,以服务发现框架(eureka)为例,eureka本身是一个基于表述性状态传递(representational state transfer,rest)的服务,主要用于定位运行在云端运算服务(amazon web service,aws)域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。eureka包含两个组件:服务发现组件(eureka server)和服务注册组件(eureka client)。
77.其中,eureka server提供服务注册服务,在eureka中的各个节点启动后,会在
eureka server中进行注册,这样eurekaserver中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。eureka client是一个计算机语言(java)客户端,用于简化与eureka server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,eureka clien将会向eureka server发送心跳,默认周期为30秒,如果eureka server在多个心跳周期内没有接收到某个节点的心跳,eureka server将会从服务注册表中把这个服务节点移除(默认90秒)。
78.理解性地,正常服务下线的流程示意图如图4所示,首先服务(service)下线发起取消(cancel)请求到服务发现组件(eureka server),该过程用时0秒;然后服务发现组件(eureka server)只读/读写缓存同步周期,该过程的用时默认为“responsecacheupdateintervalms=30秒”;进一步地,服务注册组件(eureka client)拉取最新的注册表周期,该过程的用时默认为“registryfetchintervalseconds=30秒”;最后服务注册组件(eureka client)会缓存最新的注册表周期,默认用时“serverlistrefreshinterval=30秒”,相应地,负载均衡器(ribbon)会对接服务注册组件(eureka client),向其索要并缓存相关注册信息,以及调用服务。
79.由上述正常服务下线的流程可以看出,正常服务下线到被其他服务注册组件(eureka client)感知所需要的最大时间默认为90秒,在这90秒内,如果服务中本身有正在运行的节点,则会出现数据访问出错的问题。因此,需要在发布微服务中当前节点的目标版本的过程中,延迟当前节点的旧版本的下线流程。
80.在一种可能的实施方式中,延迟当前节点的旧版本的下线流程时,可以向当前节点对应的服务发现组件反注册服务信息,阻塞当前节点的旧版本的下线流程。
81.示例性地,要下线的节点在接收到下线(kill)信号后,在关闭钩子(shutdown hook)中调用“org.springframework.cloud.netflix.eureka.servicereg-istry.eurekaautoserviceregistration#stop()”进行反注册,其中,shutdown hook的作用是当发布平台或用户执行下线(kill)信号时,会先执行shutdown hook中的逻辑。
82.在一种可能的实施方式中,在阻塞当前节点的旧版本的下线流程的过程中,还需要选择合适的阻塞点,例如可以调用上下文关闭事件contextclosedevent或生命周期处理器lifecycleprocessor,由于各应用使用的springboot版本不一致,综合考虑,优选的调用contextclosedevent来阻塞当前节点的旧版本的下线流程,使得当前节点的旧版本仍然具备服务能力,不影响微服务中处于运行状态的节点的正常运行。
83.在另一种可能的实施方式中,在目标版本发布方式为滚动发布方式时,服务器在成功发布微服务中的当前节点的目标版本后,顺序发布微服务中的当前节点的下一个节点的目标版本。
84.应理解,滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。也就是说,按照微服务中的节点顺序依次进行发布,上一个节点发布完成后,再发布下一个节点,该发布方式节约资源,用户体验影响小,体验较平滑。
85.s304,在当前节点的目标版本上线的情况下,下线当前节点的旧版本。
86.应理解,当前节点的目标版本上线,主要是通过更新当前节点对应的服务注册组件的注册表信息实现的。
87.示例性地,服务注册组件(eureka client)会拉取最新的注册表信息,然后更新缓存。
88.该实施例中,服务器在根据微服务的使用状态确定了目标版本的发布方式为延迟发布方式时,可以采用反注册的方式延迟旧版本的下线流程,然后在当前节点的目标版本上线的情况下,再下线当前节点的旧版本,该节点发布方法可以减少节点版本更新过程中对微服务中正在运行的节点的影响,降低在节点发布的过程中数据访问出错的概率,同时在服务的访问量比较大的场景下,不会影响到生产环境的正常稳定运行。
89.基于上述实施例,服务器在下线了当前节点的旧版本后,会及时向服务调用组件发送当前节点的旧版本的下线通知,以执行后续工作,示例性地,如图5所示,图5为本技术又一个实施例提供的节点发布方法的流程图,下面详细说明图5所示的方法中的各个步骤,该流程图包括:
90.s501,向服务调用组件发送当前节点的旧版本的下线通知。
91.应理解,服务器在节点的旧版本成功下线后,会实时向服务调用组件发送当前节点的旧版本的下线通知,以使服务调用组件及时执行下一步操作。
92.s502,响应于该下线通知,控制服务调用组件更新服务节点列表。
93.应理解,服务器会基于服务调用组件中的反射调用组件,控制当前节点对应的服务组件刷新只读缓存,以及控制当前节点对应的服务注册组件拉取更新的注册表,最后更新与更新的注册表对应的服务节点列表。
94.在一种可能的实施方式中,服务器响应于该下线通知,控制服务发现组件(eureka server)刷新只读缓存,例如服务发现组件(eureka server)处理服务下线后会有服务下线事件(eurekainstancecanceledevent),通过监听该事件,然后使用反射调用组件调用“com.netflix.eureka.registry.responsecach-eimpl#getcacheupdatetask”刷新只读缓存,然后广播通知服务注册组件(eureka client)。
95.进一步地,服务注册组件(eureka client)接到广播通知,通过反射调用组件调用“com.netflix.discovery.discoveryclient#fetchregistry”拉取最新注册表,最后通过“com.netflix.loadbalancer.dynamicserverlistloadbalancer#update-listofservers”更负载均衡器(ribbon)缓存服务节点列表。
96.应理解,在上述步骤s501之前,服务器还可以根据微服务的使用状态确定了目标版本的发布方式,然后执行发布。具体的细节可以参见上述实施例中的描述,如s201至s203,或者s301至s304,为避免重复,在此不再赘述。
97.该实施例中,服务器在下线当前节点的旧版本后,向服务调用组件发送当前节点的旧版本的下线通知,然后使用反射调用组件控制服务组件刷新只读缓存,以及控制服务注册组件拉取更新的注册表,更快地实现更新服务节点列表,以降低调用组件后续在调用的过程中出错的概率。
98.还应理解,上述各个实施例之间也可以相互耦合,本技术对此不作限定。且上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
99.上文中结合图1至图5,详细描述了本技术实施例的节点发布方法,下面将结合图6和图7,详细描述本技术实施例的节点发布装置。
100.图6为本技术一个实施例提供的节点发布装置600的结构性示意图,该装置600包括:获取模块601、确定模块602和发布模块603。
101.其中,获取模块601,用于获取微服务的使用状态,所述使用状态用于指示所述微服务包括的多个节点中是否存在处于运行状态的目标节点;确定模块602,用于根据所述使用状态,确定所述微服务中的当前节点的目标版本发布方式,所述目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在所述使用状态指示所述微服务中不包括所述目标节点的情况下,所述目标版本发布方式为所述滚动发布方式,在所述使用状态指示所述微服务中包括所述目标节点的情况下,所述目标版本发布方式为所述延迟发布方式;发布模块603,用于采用所述目标版本发布方式,发布所述当前节点的目标版本。
102.在一些实施例中,所述目标版本发布方式为延迟发布方式,所述发布模块603具体用于:在发布所述当前节点的目标版本的过程中,延迟所述当前节点的旧版本的下线流程,以使所述当前节点的旧版本保持服务能力;在所述当前节点的目标版本上线的情况下,下线所述当前节点的旧版本。
103.在一些实施例中,所述节点发布装置还包括:处理模块。处理模块,用于向所述当前节点对应的服务发现组件反注册服务信息,阻塞所述当前节点的旧版本的下线流程。
104.在一些实施例中,所述处理模块还用于调用上下文关闭事件contextclosedevent,阻塞所述当前节点的旧版本的下线流程。
105.在一些实施例中,所述节点发布装置还包括:上线模块。上线模块,用于更新所述当前节点对应的服务注册组件的注册表信息,实现所述当前节点的目标版本上线。
106.在一些实施例中,所述节点发布装置还包括:发送模块和控制模块。发送模块,用于向服务调用组件发送所述当前节点的旧版本的下线通知;控制模块,用于响应于所述下线通知,控制所述服务调用组件更新服务节点列表。
107.在一些实施例中,所述控制模块具体用于:基于所述服务调用组件中的反射调用组件,控制所述当前节点对应的服务组件刷新只读缓存,以及控制所述当前节点对应的服务注册组件拉取更新的注册表;更新与所述更新的注册表对应的服务节点列表。
108.在一些实施例中,所述发布模块603具体还用于:在成功发布所述微服务中的当前节点的目标版本后,顺序发布所述微服务中的当前节点的下一个节点的目标版本。
109.应理解,这里的装置600以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选例子中,本领域技术人员可以理解,装置600可以具体为上述实施例中的服务器,或者,上述实施例中服务器的功能可以集成在装置600中,装置600可以用于执行上述方法实施例中与服务器对应的各个流程和/或步骤,为避免重复,在此不再赘述。
110.上述装置600具有实现上述方法中服务器执行的相应步骤的功能;上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
111.图7为本技术另一个实施例提供的节点发布装置的结构性示意图。图7所示的节点发布装置可以用于执行前述任意一个实施例的方法。
112.如图7所示,本实施例的装置700包括:存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。
113.存储器701可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702用于执行上述实施例中所示的方法的各个步骤。
114.处理器702可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例中所示的各个方法。
115.处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术实施例的方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。
116.上述处理器702还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、asic、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
117.结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本技术装置包括的单元所需执行的功能。
118.通信接口703可以使用但不限于收发器一类的收发装置,来实现装置700与其他设备或通信网络之间的通信。
119.总线704可以包括在装置700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
120.应理解,本技术实施例所示的装置700可以是电子设备,或者,也可以是配置于电子设备中的芯片。
121.应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
122.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
123.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
124.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以
通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
125.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
126.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
127.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
128.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种节点发布方法,其特征在于,包括:获取微服务的使用状态,所述使用状态用于指示所述微服务包括的多个节点中是否存在处于运行状态的目标节点;根据所述使用状态,确定所述微服务中的当前节点的目标版本发布方式,所述目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在所述使用状态指示所述微服务中不包括所述目标节点的情况下,所述目标版本发布方式为所述滚动发布方式,在所述使用状态指示所述微服务中包括所述目标节点的情况下,所述目标版本发布方式为所述延迟发布方式;采用所述目标版本发布方式,发布所述当前节点的目标版本。2.根据权利要求1所述的方法,其特征在于,所述目标版本发布方式为延迟发布方式,所述采用所述目标版本发布方式,发布所述当前节点的目标版本,包括:在发布所述当前节点的目标版本的过程中,延迟所述当前节点的旧版本的下线流程,以使所述当前节点的旧版本保持服务能力;在所述当前节点的目标版本上线的情况下,下线所述当前节点的旧版本。3.根据权利要求2所述的方法,其特征在于,所述延迟所述当前节点的旧版本的下线流程,包括:向所述当前节点对应的服务发现组件反注册服务信息,阻塞所述当前节点的旧版本的下线流程。4.根据权利要求3所述的方法,其特征在于,所述阻塞所述当前节点的旧版本的下线流程,包括:调用上下文关闭事件contextclosedevent,阻塞所述当前节点的旧版本的下线流程。5.根据权利要求2所述的方法,其特征在于,所述当前节点的目标版本上线,包括:更新所述当前节点对应的服务注册组件的注册表信息,实现所述当前节点的目标版本上线。6.根据权利要求2所述的方法,其特征在于,所述方法还包括:向服务调用组件发送所述当前节点的旧版本的下线通知;响应于所述下线通知,控制所述服务调用组件更新服务节点列表。7.根据权利要求6所述的方法,其特征在于,所述控制服务调用组件更新服务节点列表,包括:基于所述服务调用组件中的反射调用组件,控制所述当前节点对应的服务组件刷新只读缓存,以及控制所述当前节点对应的服务注册组件拉取更新的注册表;更新与所述更新的注册表对应的服务节点列表。8.根据权利要求1所述的方法,其特征在于,所述目标版本发布方式为滚动发布方式,所述采用所述目标版本发布方式,发布所述当前节点的目标版本,包括:在成功发布所述微服务中的当前节点的目标版本后,顺序发布所述微服务中的当前节点的下一个节点的目标版本。9.一种节点发布装置,其特征在于,所述装置包括:获取模块,用于获取微服务的使用状态,所述使用状态用于指示所述微服务包括的多个节点中是否存在处于运行状态的目标节点;
确定模块,用于根据所述使用状态,确定所述微服务中的当前节点的目标版本发布方式,所述目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在所述使用状态指示所述微服务中不包括所述目标节点的情况下,所述目标版本发布方式为所述滚动发布方式,在所述使用状态指示所述微服务中包括所述目标节点的情况下,所述目标版本发布方式为所述延迟发布方式;发布模块,用于采用所述目标版本发布方式,发布所述当前节点的目标版本。10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器用于存储代码指令;所述处理器用于运行所述代码指令,以执行如权利要求1至8中任一项所述的方法。11.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序包括用于实现如权利要求1至8中任一项所述的方法的指令。
技术总结
本申请提供节点发布方法、装置及存储介质。本申请的技术方案中,首先获取微服务的使用状态,该使用状态用于指示微服务包括的多个节点中是否存在处于运行状态的目标节点;然后根据该使用状态,确定微服务中的当前节点的目标版本发布方式,该目标版本发布方式包括滚动发布方式或延迟发布方式,其中,在使用状态指示微服务中不包括目标节点的情况下,目标版本发布方式为滚动发布方式,在使用状态指示微服务中包括目标节点的情况下,目标版本发布方式为所述延迟发布方式;最后采用目标版本发布方式,发布当前节点的目标版本。本申请提供的节点发布方法可以减少在节点发布的过程中数据访问出错的概率,进而不会影响到生产环境的正常稳定运行。常稳定运行。常稳定运行。
技术研发人员:陈小平 程铄生 尹泉 邱晓辉 黄文强
受保护的技术使用者:佛山市云米电器科技有限公司
技术研发日:2023.04.14
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:快速响应的液晶组合物及其应用的制作方法 下一篇:一种防辐射罩的制作方法
