一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

在线升级方法、装置、存储节点和分布式集群与流程

2022-05-06 05:42:24 来源:中国专利 TAG:


1.本技术涉及分布式存储技术领域,具体而言,涉及一种在线升级方法、装置、存储节点和分布式集群。


背景技术:

2.为了满足客户多样性的需求以及保障存储软件的稳定性,已交付的存储软件也在不断更新迭代。有时为了优化解决现场环境出现的问题以及提高已部署软件的高可用性,需要对存储集群环境进行适当升级。安防行业中,分布式存储系统主要用于保存实时图片和视频流数据,升级操作会重启服务程序,因此会影响实时数据的写入,造成用户数据的丢失。对于有些特殊业务场景,用户是不允许已部署的业务存在中断情况,因此上述升级流程无法令用户满意。
3.分布式纠删存储系统中,一般由存储服务节点和元数据管理服务节点组成,客户端数据写入会将数据分成多组条带同时并发写入n m个数据节点中。基于该存储模型的在线升级,业界主要是保证在满足纠删情况下,对各个存储节点轮流依次单独升级,保证始终存在n个存储节点用于接受业务数据流,保证数据的正常写入。但是此种方案未考虑存储节点升级重启导致客户端刚刚请求的写入报文未及时响应,阻塞超时导致客户端整体数据写入性能存在损耗问题。并且在升级过程中,存在已升级和未升级节点软件版本、存储数据结构以及客户端和服务端私有通信报文不一致导致的数据无法正常解析访问的严重性问题。


技术实现要素:

4.本技术的目的包括,例如,提供了一种在线升级方法、装置、存储节点和分布式集群,其能够在不影响客户端的请求正常处理的情况下,完成升级。
5.本技术的实施例可以这样实现:
6.第一方面,本技术提供一种在线升级方法,应用于分布式集群包含的多个存储节点中的任一存储节点,所述存储节点中部署有与存储服务对应的虚拟服务,所述方法包括:
7.在触发升级流程时,发送通知消息至客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口,所述服务接口与所述存储服务对应,所述虚拟接口与所述虚拟服务对应;
8.执行所述存储服务的升级操作,并通过所述虚拟接口接收所述客户端发送的请求报文,将写操作从指向的所述存储服务下创建的存储文件切换至所述虚拟服务下创建的临时文件,以将所述请求报文中的数据写入所述临时文件;
9.在完成所有存储节点的存储服务的升级后,发送通知消息至所述客户端,以使所述客户端将与存储节点之间进行交互的接口进行恢复。
10.在可选的实施方式中,所述在触发升级流程的步骤之前,所述方法还包括:
11.通过所述服务接口接收客户端的请求报文,将所述请求报文中的数据写入所述存储文件。
12.在可选的实施方式中,所述虚拟服务中安装有更新存储软件;
13.所述将所述请求报文中的数据写入所述临时文件的步骤,包括:
14.检测所述请求报文的版本信息是否与安装的更新存储软件的版本信息匹配;
15.若匹配,则基于所述更新存储软件对应的解析方式对所述请求报文进行解析,并将解析后的数据写入所述临时文件;
16.若不匹配,则采用与所述请求报文的版本对应的解析方式对所述请求报文进行解析,并将解析后的数据写入所述临时文件。
17.在可选的实施方式中,所述方法还包括:
18.将写操作从所述存储文件切换至所述临时文件时,获得所述存储文件当前写入的偏移位置;
19.在完成升级后,定时查询是否存在临时文件,在存在临时文件时,基于所述临时文件映射的存储文件的偏移位置,将所述临时文件中的数据合并至所述存储文件中,并清除所述临时文件。
20.在可选的实施方式中,所述方法还包括:
21.在接收到与所述存储节点通信的所有客户端发送的停止与所述虚拟服务交互的消息后,将部署的虚拟服务销毁。
22.在可选的实施方式中,所述发送通知消息至客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口的步骤,包括:
23.获取当前与存储节点建立通信的客户端的ip信息、创建的虚拟接口信息和虚拟服务的ip信息;
24.基于客户端的ip信息,将所述虚拟接口信息和虚拟服务的ip信息发送至对应的客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口。
25.在可选的实施方式中,所述将请求报文中的数据写入所述临时文件的步骤,包括:
26.将所述请求报文中的数据按所述分布式集群中存储节点的数量进行拆分;
27.将拆分后得到的数据分别写入至各所述存储节点中的临时文件。
28.第二方面,本技术提供一种在线升级装置,应用于分布式集群包含的多个存储节点中的任一存储节点,所述存储节点中部署有与存储服务对应的虚拟服务,所述装置包括:
29.第一发送模块,用于在触发升级流程时,发送通知消息至客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口,所述服务接口与所述存储服务对应,所述虚拟接口与所述虚拟服务对应;
30.写入模块,用于执行所述存储服务的升级操作,并通过所述虚拟接口接收所述客户端发送的请求报文,将写操作从指向的所述存储服务下创建的存储文件切换至所述虚拟服务下创建的临时文件,以将所述请求报文中的数据写入所述临时文件;
31.第二发送模块,用于在完成所有存储节点的存储服务的升级后,发送通知消息至所述客户端,以使所述客户端将与存储节点之间进行交互的接口进行恢复。
32.第三方面,本技术提供一种存储节点,包括一个或多个存储介质和一个或多个与存储介质通信的处理器,一个或多个存储介质存储有处理器可执行的机器可执行指令,当电子设备运行时,处理器执行所述机器可执行指令,以执行前述实施方式中任意一项所述的方法步骤。
33.第四方面,本技术提供一种分布式集群,包括多个存储节点,各所述存储节点中部署有与存储服务对应的虚拟服务;
34.所述多个存储节点中的其中一个存储节点,用于在触发升级发送通知消息至客户端,以使所述客户端将与各存储节点之间进行交互的服务接口切换为虚拟接口,所述服务接口与所述存储服务对应,所述虚拟接口与所述虚拟服务对应;
35.各所述存储节点,用于执行所述存储服务的升级操作,并通过所述虚拟接口接收所述客户端发送的请求报文,将写操作从指向的所述存储服务下创建的存储文件切换至所述虚拟服务下创建的临时文件,以将所述请求报文中的数据写入所述临时文件;
36.各所述存储节点,用于在完成所有存储节点的存储服务的升级后,发送通知消息至所述客户端,以使所述客户端将与存储节点之间进行交互的接口进行恢复。
37.本技术实施例的有益效果包括,例如:
38.本技术提供一种在线升级方法、装置、存储节点和分布式集群,在分布式集群的各个存储节点中部署与存储服务对应的虚拟服务以构成虚拟集群,在触发升级流程时,发送通知消息至客户端,以使客户端从原本的服务接口切换至虚拟接口。存储节点通过虚拟接口接收客户端发送的请求报文,将写操作从原本的存储文件至临时文件,以将请求报文的数据写入到临时文件中。在执行完成所有存储节点的存储服务升级后,再发送通知消息至客户端,以使客户端将与存储节点之间进行交互的接口进行恢复。本方案中,采用部署虚拟集群的方式,在原本的存储集群进行升级时,通过虚拟集群实现客户端访问请求的处理,在不影响客户端的请求正常处理的同时,可以避免各存储节点存在版本不一致时导致数据无法正常解析的缺陷。
附图说明
39.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
40.图1为本技术实施例提供的在线升级方法的应用场景示意图;
41.图2为本技术实施例提供的在线升级方法的流程图;
42.图3为图2中总部后s101包含的子步骤的流程图;
43.图4为图2中步骤s102包含的子步骤的流程图之一;
44.图5为图2中步骤s102包含的子步骤的流程图之二;
45.图6为本技术实施例提供的在线升级方法的执行示意图;
46.图7为本技术实施例提供的存储节点的结构示意图;
47.图8为本技术实施例提供的在线升级装置的功能模块框图。
48.图标:110-存储介质;120-处理器;130-在线升级装置;131-第一发送模块;132-写入模块;133-第二发送模块;140-通信接口。
具体实施方式
49.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例
中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
50.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
51.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
52.在本技术的描述中,需要说明的是,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
53.需要说明的是,在不冲突的情况下,本技术的实施例中的特征可以相互结合。
54.请参阅图1,为本技术实施例提供的在线升级方法的应用场景示意图,该应用场景中包括分布式集群,该分布式集群中包含多个存储节点,此外,还包括与分布式集群通信的多个客户端。各个客户端可与分布式集群中的各个存储节点通信,以实现数据、信息的交互。
55.本实施例中,分布式集群可以是安防领域中的分布式存储集群,用于保存实时图片和视频流数据。而客户端可以是用于采集图片和视频的终端设备,或者是用户所持的可与采集设备通信的、可获取采集设备采集的图片或视频的终端设备。各个客户端可将获取的图片和视频发送至分布式集群,由分布式集群中的多个存储节点实现分布式存储。
56.请参阅图2,为本技术实施例提供的在线升级方法的流程图,该在线升级方法有关的流程所定义的方法步骤可以由图1中所示的任一存储节点所实现。
57.在本实施例中,各个存储节点上具有存储服务,多个存储节点中的存储服务构成存储服务集群。各个存储节点中还预先部署有与存储服务对应的虚拟服务,以构成虚拟服务集群。虚拟服务可以以docker容器的形式部署。下面将对图2所示的具体流程进行详细阐述。
58.s101,在触发升级流程时,发送通知消息至客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口,所述服务接口与所述存储服务对应,所述虚拟接口与所述虚拟服务对应。
59.s102,执行所述存储服务的升级操作,并通过所述虚拟接口接收所述客户端发送的请求报文,将写操作从指向的所述存储服务下创建的存储文件切换至所述虚拟服务下创建的临时文件,以将所述请求报文中的数据写入所述临时文件。
60.s103,在完成所有存储节点的存储服务的升级后,发送通知消息至所述客户端,以使所述客户端将与存储节点之间进行交互的接口进行恢复。
61.本实施例中,在分布式集群未进行升级的状态下,各个客户端将与存储节点的与存储服务对应的服务接口进行交互,从而存储节点可基于存储服务实现对客户端的访问请求中的数据的写入和存储。
62.在需要执行分布式集群的升级时,在升级准备工作完成之后,分布式集群中的任一存储节点可发送通知消息至各个客户端。其中,该任一存储节点可以是部署有服务升级
模块的存储节点。部署的服务升级模块可以在分布式集群中的各个存储节点上部署docker容器。
63.各个客户端上部署有升级感知模块,通过升级感知模块接收到通知消息后,可将与存储节点之间进行交互的服务接口切换为虚拟接口,该虚拟接口为与存储节点上部署的虚拟服务所对应的接口。也即,存储节点可以通过虚拟接口接收客户端发送的请求报文,进而将请求报文中的数据写入虚拟集群中。
64.在本实施例中,在进行升级之前,各个客户端向分布式集群写入数据时,需要向分布式集群申请用于写入数据的存储文件file。因此,在升级流程触发之前,存储节点将通过服务接口接收客户端的请求报文,并将请求报文中的数据写入存储文件中。
65.在触发升级流程后,客户端在接收到升级服务模块所发送的通知消息后,需要向分布式集群申请在升级过程中用于写入数据的临时文件u-file,该临时文件即为在虚拟服务下创建的,用于存储虚拟服务下的操作所获取的数据。
66.因此,在触发升级流程后,存储节点将通过虚拟接口接收客户端发送的报文,并将客户端发起的请求报文中的数据写入临时文件中。
67.本实施例中,在各个客户端均将原本与存储节点交互的服务接口切换为虚拟接口,并且存储节点将写操作指向的存储文件切换为临时文件后,即可执行分布式集群中的存储服务的升级。由于在存储服务的升级过程中,可以由虚拟服务构成的虚拟集群实现对客户端的请求的响应,因此可以保障业务处理的不中断,不会影响到对用户请求的响应。
68.本实施例中,在完成分布式集群中所有存储节点的存储服务升级后,发送通知消息至各个客户端。客户端在接收到通知消息后,即可将当前与存储节点交互的虚拟接口恢复至原本的服务接口,并且将当前的写操作指向的临时文件恢复至原本的存储文件。
69.如此,在完成分布式集群中存储服务的升级后,可以切换至原本的服务集群以执行后续客户端的业务处理。而在存储服务的升级过程中,由于可以通过虚拟集群实现客户端的访问请求的响应,并不会因为存储服务的升级、重启而影响到对客户端的业务处理。本实施例所提供的方案可在成功完成存储服务升级的基础上,保障对客户端的业务处理的不中断,避免对客户端的数据处理产生影响的问题。
70.并且,各个分布式集群中的各个存储节点可以同步完成升级,避免了现有技术中采用的各个存储节点轮流依次单独升级的方式所存在的在升级过程中,存在已升级和未升级的节点之间软件版本、存储数据结构以及私有通信报文不一致,从而导致的数据无法正常解析访问的缺陷。
71.本实施例中,分布式集群会预先对外提供统一mip地址,各个客户端在向分布式集群写入数据前,可先通过该统一mip地址与分布式集群中的元数据管理服务meta serve建立连接。其中,元数据管理服务可部署在分布式集群中的任一存储节点。
72.各个客户端在获取到数据,例如图片数据、视频流数据等,并向分布式集群进行数据写入时,可先以预分配的方式向元数据管理服务申请存储文件。存储文件可被切分为多组object对象,每组object由n m个block组成,每个block对应一个存储节点,最终数据被切分成多组条带写入到各个存储节点的block文件中。
73.各个客户端可根据创建的存储文件的信息,获取分布式集群中各个存储节点的地址和接口信息,该接口信息为在存储服务下创建的服务接口,也即,基于该服务接口可与存
储服务实现交互,以通过存储服务将客户端发送的数据写入到存储文件中。
74.在触发升级流程时,可在分布式集群中的任一存储节点部署服务升级模块。并且,各个存储节点上预先部署的虚拟服务构成虚拟集群。各个存储节点的虚拟服务中预先安装有更新存储软件,该更新存储软件即为当前存储服务所要升级至的版本的存储软件。
75.在虚拟化的存储集群部署完成后,服务升级模块可通知元数据管理服务升级准确就绪,并向各个客户端发送通知消息。请参阅图3,在本实施例中,服务升级模块在向各个客户端发送通知消息时,可包含以下子步骤:
76.s1011,获取当前与存储节点建立通信的客户端的ip信息、创建的虚拟接口信息和虚拟服务的ip信息。
77.s1012,基于客户端的ip信息,将所述虚拟接口信息和虚拟服务的ip信息发送至对应的客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口。
78.本实施例中,在部署虚拟集群时,还可确定存储节点中虚拟服务的ip信息,此外,还可采用临时的虚拟接口实现与虚拟服务的接入。为了将通知消息发送至当前与分布式集群建立通信的客户端,因此,还可获取当前与存储节点通信的客户端的ip信息。
79.在此基础上,在向客户端发送通知消息时,可基于客户端的ip信息,将上述的虚拟接口信息和虚拟服务的ip信息发送至对应的客户端。
80.本实施例中,在需要对存储服务进行升级的情况下,客户端还可预先向分布式集群申请临时文件。在客户端预先已向分布式集群申请过存储文件的情况下,则会在虚拟集群映射创建一过渡升级的临时文件。若客户端预先并未申请过存储文件,则会在虚拟集群中新创建一临时文件进行数据写入。
81.在触发升级流程并完成升级所需部署后,升级服务模块可将集群升级就绪状态和上述的各类信息组成通知消息,以事件方式通知到各个已建立连接的客户端。
82.客户端在获取到虚拟接口信息、虚拟服务的ip信息等后,在上分布式集群发送请求报文时,在请求报文中携带虚拟接口信息和虚拟服务的ip信息。分布式集群中的存储节点通过虚拟接口将客户端的访问请求中的数据写入到各自的临时文件中。本实施例中,虚拟集群和原本的服务集群共享同一磁盘空间,因此,写入到临时文件中的数据得以正常保存。
83.请参阅图4,本实施例中,在存储节点将请求报文中的数据写入临时文件的步骤,可以通过以下方式实现:
84.s1021a检测所述请求报文的版本信息是否与安装的更新存储软件的版本信息匹配,若匹配,执行以下步骤s1022,若不匹配,执行以下步骤s1023。
85.s1022a基于所述更新存储软件对应的解析方式对所述请求报文进行解析,并将解析后的数据写入所述临时文件。
86.s1023a采用与所述请求报文的版本对应的解析方式对所述请求报文进行解析,并将解析后的数据写入所述临时文件。
87.本实施例中,考虑到新版本存储服务程序在接收到老版本客户端程序的请求报文时,可能存在新版本变动而导致报文无法正确解析的情况。考虑到报文数据结构修改的兼容性,本实施例中,存储节点中配置有私有协议兼容模块。该模块可以存储节点获取到客户端的请求报文后,先解析客户端的请求报文的版本信息是否与虚拟服务的更新存储软件的
版本信息匹配。
88.如果虚拟服务的更新存储软件的版本号与请求报文的版本号一致,则可以直接按更新存储软件对应的解析方式进行解析。但是,若虚拟服务的更新存储软件的版本号比请求报文的版本号高,则需要按照客户端的请求报文的版本对应的解析方式进行解析。正确解析后虚拟服务程序再调用存储侧的写接口将解析后的数据写入到临时文件,并保存到硬盘中。
89.上述为在升级过程中,在基于虚拟服务实现客户端的请求报文的响应时的执行方式。同样地,在未进行升级或者完成升级的状态下,在基于原本的存储服务实现客户端的请求报文的响应时,也可采用上述类似的方式执行请求报文的解析并写入到存储文件中。
90.由上述可知,在未触发升级的情况下,在将客户端发送的数据写入到存储文件时,数据将被切分成多组条带写入到各个存储节点中。同样地,请参阅图5,在触发升级的情况下,在将客户端发送的数据写入到临时文件中,可基于以下方式实现:
91.s1021b,将所述请求报文中的数据按所述分布式集群中存储节点的数量进行拆分。
92.s1022b,将拆分后得到的数据分别写入至各所述存储节点中的临时文件。
93.本实施例中,将客户端发送的数据写入到虚拟集群的临时文件时,临时文件同样被切分为多组对象,每组对象由n m个数据块组成,每个数据块对应一个存储节点(具体对应存储节点中的虚拟服务)。客户端发送的数据被切分成多组条带写入到各个存储节点的被切分的临时文件中(被切分的数据块中)。
94.本实施例中,在分布式集群中各个存储节点的存储服务完成升级之后,服务升级模块将发送通知消息至各个客户端。客户端将接收到该通知消息后,后续客户端发送的请求报文将指向升级后的存储服务,也即,通过存储服务对应的服务接口接收请求报文,将请求报文的数据写入到存储文件中。
95.在服务升级模块接收到与存储节点通信的所有客户端发送的停止与虚拟服务交互的消息后,将部署的虚拟服务销毁。如此,可以完成平滑的升级操作,用户侧将对升级过程无感知,不会影响到对客户端的业务响应。
96.在本实施例中,由于升级过程中导致客户端正在写入的数据被拆分,以临时文件存储的方式转存到虚拟集群中,因此,在完成升级之后,客户端的数据将分别存储在两个文件中。为了保障数据访问的唯一性以及避免文件多次检索对性能的消耗。本实施例中,在完成升级之后,可将临时文件和存储文件进行合并。
97.基于此,在本实施例中,在从原有的存储服务集群切换至虚拟集群时,也即将写操作从存储文件切换至临时文件时,获得存储文件当前写入的偏移位置,并将获得的偏移位置进行记录。
98.在完成升级后,定时查询是否存在临时文件,在存在临时文件时,基于临时文件映射的存储文件的偏移位置,将临时文件中的数据合并至存储文件中,并清除临时文件。
99.本实施例中,可以在元数据管理服务中配置文件合并功能,可以增加巡检线程。为了将临时文件与原本的存储文件进行区分,可将临时文件和存储文件从文件名上进行区分设置,例如存储文件命名为file,临时文件命名为u-file。存储文件、临时文件中的数据记录在元数据信息数据库中进行持久化保存。
100.考虑到文件合并操作对带宽和性能的影响,根据安防存储特性,可以在业务空闲时间段、在业务流量较少的时间段进行巡检操作,例如凌晨两点等。
101.巡检线程可在上述的时间段内查询元数据信息数据库,以查询是否存在具有“u
‑”
字符的键。在存在的情况下,查询该临时文件所映射的存储文件file以及记录的偏移位置woffset。
102.巡检线程可获取上述查询到的u-file中写入的数据,并根据偏移位置woffset将数据追加写入到file的指定位置中,并重新更新文件大小以及临时文件中记录的最后写入修改时间。
103.本实施例所提供的在线升级方法,采用虚拟化技术在分布式集群中创建虚拟集群,并同时维护原有的存储服务集群和该虚拟集群。可在触发升级流程后,发送通知消息至客户端,以使客户端将原本的服务接口切换至虚拟接口。使用虚拟化技术docker容器预装更新版本存储软件,组成虚拟集群,将写操作指向的原本的存储文件切换至临时文件,以将客户端的访问请求的数据写入到临时文件中。保障写入性能不受影响,避免了升级过程中因重启存储服务程序导致客户端写超时存在的性能损耗以及失败风险,保障数据的平滑写入。并且,解决了原有升级流程中存在的各个存储服务节点升级时间不一致导致的服务版本不一致,而影响数据的正常解析和访问的问题。
104.并且,在分布式集群侧增加了私有协议兼容模块,可以避免版本不匹配导致报文格式无法正常解析,而对业务产生的中断影响,最大程度的保证了升级对业务写入不产生任何影响。
105.请结合参阅图6所示,以下将结合图6中所示的系统架构对本实施例的在线升级方法的整体流程进行说明。在该系统架构中包含客户端client以及分布式集群,客户端可以是多个(图中仅示出一个),各个客户端可与分布式集群建立通信。分布式集群中包含多个存储节点(图中仅示出三个)。各个存储节点中包含存储服务程序,此外,各个存储节点中还通过docker容器部署有虚拟服务程序,以构成虚拟集群。
106.此外,分布式集群中还包括服务升级模块和元数据管理服务metaserver模块,服务升级模块和元数据管理服务可部署在任一存储节点中。分布式集群可对外提供存储服务的统一mip。此外,分布式集群还可对外提供虚拟服务的统一vmip。
107.存储节点1、存储节点2、存储节点3,可分别具有与客户端进行交互的服务接口ip1-port、ip2-port、ip3-port。此外,在部署的虚拟集群中,还构建有虚拟接口,存储节点1、存储节点2、存储节点3可分布具有虚拟接口vport、vport2、vport3。
108.①
在未触发升级流程的情况下,客户端client在获取到数据流时,可通过获取的分布式集群的存储服务的对外统一mip与元数据管理服务metaserver建立连接,并申请存储文件。
109.②
client的读写模块根据创建的存储文件的信息,获取各个存储节点的地址和服务接口信息ip1-port、ip2-port、ip3-port。然后通过各个存储节点的地址和服务接口将需写入的数据拆分后写入至存储节点dn1、dn2、dn3上,具体地写入到三个存储节点的存储文件中。
110.③
在需要进行存储服务程序的升级时,在任意一台存储节点上部署服务升级模块,服务升级模块可在各个存储节点部署docker容器并预装更新版本存储软件。
111.④
虚拟化存储集群部署完成后,服务升级模块可通知元数据管理服务metaserver升级准备就绪的消息,并获取与元数据管理服务已连接的所有client的ip信息。
112.⑤
服务升级模块根据获取的在线client的ip信息,通过client的升级感知模块,将集群升级准备就绪状态和虚拟集群对外统一vmip以事件方式通知到各个已建立连接的客户端。
113.⑥
client通过升级感知模块接收到通知消息后,控制正在写入的文件的切换,通过vmip与虚拟集群元数据管理服务metaserver建立连接,将原有的存储文件的写入偏移信息告知虚拟metaserver,并重新申请临时文件。
114.⑦
切换时,client根据新获取的临时文件信息,得到虚拟服务的地址信息,客户端的访问请求的数据写入的ip地址保持不变,采用虚拟接口vport1、vport2、vport3将客户端的数据保存在虚拟集群中。虚拟集群与原有的存储服务集群共享同一磁盘空间,数据得以正常保存。
115.⑧
客户端全部将正在写的文件切换到虚拟集群后,主动告知服务升级模块切换完成状态,当服务升级模块接收到所有客户端切换完成消息后,通知各个存储节点进行原有的存储服务程序的新版本升级操作。升级成功后,再通知各个客户端程序升级完成状态。后续当客户端进行切换后,新发起的数据将写入到升级后的存储服务集群中,虚拟集群不再提供写入操作,升级完成后虚拟集群可自动销毁。
116.在上述基础上,在业务空闲时间段,基于记录的文件进行切换时存储文件的写入偏移位置,可将虚拟集群中的临时文件中的数据合并至存储文件中。
117.请参阅图7,为本技术实施例提供的存储节点的示例性组件示意图,该存储节点可包括存储介质110、处理器120、在线升级装置130及通信接口140。本实施例中,存储介质110与处理器120均位于电子设备中且二者分离设置。然而,应当理解的是,存储介质110也可以是独立于电子设备之外,且可以由处理器120通过总线接口来访问。可替换地,存储介质110也可以集成到处理器120中,例如,可以是高速缓存和/或通用寄存器。
118.在线升级装置130可以理解为上述电子设备,或电子设备的处理器120,也可以理解为独立于上述电子设备或处理器120之外的在电子设备控制下实现上述在线升级方法的软件功能模块。
119.如图8所示,上述在线升级装置130可以包括第一发送模块131、写入模块132、第二发送模块133。下面分别对该在线升级装置130的各个功能模块的功能进行详细阐述。
120.第一发送模块131,用于在触发升级流程时,发送通知消息至客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口,所述服务接口与所述存储服务对应,所述虚拟接口与所述虚拟服务对应。
121.可以理解,该第一发送模块131可以用于执行上述步骤s101,关于该第一发送模块131的详细实现方式可以参照上述对步骤s101有关的内容。
122.写入模块132,用于执行所述存储服务的升级操作,并通过所述虚拟接口接收所述客户端发送的请求报文,将写操作从指向的所述存储服务下创建的存储文件切换至所述虚拟服务下创建的临时文件,以将所述请求报文中的数据写入所述临时文件。
123.可以理解,该写入模块132可以用于执行上述步骤s102,关于该写入模块132的详细实现方式可以参照上述对步骤s102有关的内容。
124.第二发送模块133,用于在完成所有存储节点的存储服务的升级后,发送通知消息至所述客户端,以使所述客户端将与存储节点之间进行交互的接口进行恢复。
125.可以理解,该第二发送模块133可以用于执行上述步骤s103,关于该第二发送模块133的详细实现方式可以参照上述对步骤s103有关的内容。
126.在一种可能的实施方式中,所述在线升级装置130还包括接收模块,该接收模块用于:
127.通过所述服务接口接收客户端的请求报文,将所述请求报文中的数据写入所述存储文件。
128.在一种可能的实施方式中,所述虚拟服务中安装有更新存储软件,上述写入模块132用于:
129.检测所述请求报文的版本信息是否与安装的更新存储软件的版本信息匹配;
130.若匹配,则基于所述更新存储软件对应的解析方式对所述请求报文进行解析,并将解析后的数据写入所述临时文件;
131.若不匹配,则采用与所述请求报文的版本对应的解析方式对所述请求报文进行解析,并将解析后的数据写入所述临时文件。
132.在一种可能的实施方式中,所述在线升级装置130还包括合并模块,该合并模块用于:
133.将写操作从所述存储文件切换至所述临时文件时,获得所述存储文件当前写入的偏移位置,在完成升级后,定时查询是否存在临时文件,在存在临时文件时,基于所述临时文件映射的存储文件的偏移位置,将所述临时文件中的数据合并至所述存储文件中,并清除所述临时文件。
134.在一种可能的实施方式中,所述在线升级装置还包括销毁模块,该销毁模块用于:
135.在接收到与所述存储节点通信的所有客户端发送的停止与所述虚拟服务交互的消息后,将部署的虚拟服务销毁。
136.在一种可能的实施方式中,上述第一发送模块131用于:
137.获取当前与存储节点建立通信的客户端的ip信息、创建的虚拟接口信息和虚拟服务的ip信息;
138.基于客户端的ip信息,将所述虚拟接口信息和虚拟服务的ip信息发送至对应的客户端,以使所述客户端将与存储节点之间进行交互的服务接口切换为虚拟接口。
139.在一种可能的实施方式中,上述写入模块132用于:
140.将所述请求报文中的数据按所述分布式集群中存储节点的数量进行拆分;
141.将拆分后得到的数据分别写入至各所述存储节点中的临时文件。
142.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
143.在上述基础上,本技术实施例还提供一种分布式集群,该分布式集群包括多个存储节点,各所述存储节点中部署有与存储服务对应的虚拟服务。
144.所述多个存储节点中的其中一个存储节点,用于在触发升级发送通知消息至客户端,以使所述客户端将与各存储节点之间进行交互的服务接口切换为虚拟接口,所述服务接口与所述存储服务对应,所述虚拟接口与所述虚拟服务对应。
145.各所述存储节点,用于执行所述存储服务的升级操作,并通过所述虚拟接口接收所述客户端发送的请求报文,将写操作从指向的所述存储服务下创建的存储文件切换至所述虚拟服务下创建的临时文件,以将所述请求报文中的数据写入所述临时文件。
146.各所述存储节点,用于在完成所有存储节点的存储服务的升级后,发送通知消息至所述客户端,以使所述客户端将与存储节点之间进行交互的接口进行恢复。
147.本实施例所提供的分布式集群,可通过虚拟化技术部署虚拟服务,从而在实现存储服务的升级时,通过虚拟服务响应客户端的请求,使得存储服务的升级、重启并不影响到客户端的请求响应,避免对客户端业务造成影响。并且避免了现有技术中所存在的依次轮流升级,所存在的各个存储节点升级时间不一致,导致服务版本不一致影响数据的正常解析和访问的缺陷。
148.综上所述,本技术实施例提供的在线升级方法、装置、存储节点和分布式集群,在分布式集群的各个存储节点中部署与存储服务对应的虚拟服务以构成虚拟集群,在触发升级流程时,发送通知消息至客户端,以使客户端从原本的服务接口切换至虚拟接口。存储节点通过虚拟接口接收客户端发送的请求报文,将写操作从原本的存储文件至临时文件,以将请求报文的数据写入到临时文件中。在执行完成所有存储节点的存储服务升级后,再发送通知消息至客户端,以使客户端将与存储节点之间进行交互的接口进行恢复。本方案中,采用部署虚拟集群的方式,在原本的存储集群进行升级时,通过虚拟集群实现客户端访问请求的处理,在不影响客户端的请求正常处理的同时,可以避免各存储节点存在版本不一致时导致数据无法正常解析的缺陷。
149.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献