一种数据存储方法、系统、计算机设备及存储介质与流程

未命名 07-22 阅读:172 评论:0


1.本发明涉及存储技术领域,尤其涉及一种数据存储方法、系统、计算机设备及存储介质。


背景技术:

2.随着安防技术的快速发展,安防监控逐渐向着数字化、网络化、智能化的方向演进,随之而来的是海量视频数据存储压力,传统的单机存储系统在容量大小、容量增长速度、数据备份、数据安全等方面的表现都差强人意,那么就催生出了通过集群应用、网络技术实现的分布式存储系统,因此对存储设备的容量、读写性能、可靠性、扩展性等都提出了更高的要求。安防监控行业的实时视频存储是将摄像机产生的实时视频流进行7*24小时不间断的录像,以便后续对这些录像进行点播、下载、计算等应用,基于这些行业特性,行业内一般将视频存储系统分为存储业务层和存储数据层,存储业务层负责视频流数据的存储管理,承担视频存储的业务功能并生成和管理与视频业务相关的元数据,对接存储数据层以及对存储数据层提供的资源进行分配,记录数据在存储数据层的相关信息,以便后续能够有效的进行数据读取。存储数据层是为数据提供物理的存储空间,保证数据在存储空间的均匀分布,提供存入数据的安全保护,保障数据读写的io(input output,输入输出)性能,存储数据层一般包括物理磁盘、文件系统、块设备、对象存储、第三方存储系统等提供的存储资源池。由于存储业务层既要支持视频业务功能又要保障存储系统的特性,还要与存储数据层进行有效的结合,所以如何实现高效的存储业务层也成为了安防监控厂商们所要解决的重要问题。
3.现有技术中,一种实现方案是将nvr(network video recorder,即网络视频存储器)进行集群化管理,系统包括网络编码器、多个网络视频存储器(即nvr)和一个nvr管理器,网络编码器、nvr管理器和各nvr均与ip(internet protocol互联网协议)网络相连,各nvr支持网络编码器直接在其上存取音视频数据的网络存储协议,以将网络编码器编码输出的音视频数据直接保存在nvr上;nvr管理器包括映射模块和监控模块,映射模块存储有网络编码器与各nvr的映射关系,监控模块对各nvr接收的音视频数据的监控管理;各nvr在nvr管理器的控制下通过ip网络接收网络编码器编码后的音视频数据,并进行录像,以及响应客户端或网络编码器的访问请求、查询或回放或存储录像数据。这种实现方案将视频应用业务与存储系统耦合,无法将所有nvr的存储资源虚拟化管理,nvr管理器也存在单点故障问题,无法提供高可用的存储系统,并且可靠性、扩容性、兼容性也都不尽人意。
4.在有些优化方案中,有技术将视频应用业务与存储系统分离,存储节点只处理视频存储业务和解析下达给自己的录像计划,从录像计划对应的前端设备获取视频流并存储。这种方案也没有将取流的业务与存储系统隔离,也无法提供有效的高可用视频存储系统。
5.无论是nvr集群化实现方案还是优化方案中,都没有将取流业务功能与存储系统隔离,并且每个存储节点服务都要生成和管理所有类型的视频业务元数据,承担所有的业
务处理以及响应客户端的请求,对存储资源的使用也大大限制了存储系统的兼容性,无法实现高可用、易扩展、兼容性好的分布式视频存储系统。目前的实现方案都普遍存在以下问题:
6.1)管理节点故障后会导致集群的数据写入运作不正常,录像丢失。
7.2)元数据生成和管理的方式导致录像检索时要向所有存储节点进行检索,将所有存储节点的返回结果进行合并后才返回给调用者,无法做到录像检索的秒级返回。
8.3)取流业务与存储系统的耦合限制了业务故障切换和存储空间的使用,比如某个存储节点故障,故障节点的取流和存储业务将会切换到其它存储节点,在故障节点恢复后将再对取流和存储业务进行负载均衡,会导致在存储周期内某些通道占用的未写满的物理存储空间的浪费。
9.4)对存储资源的管理和使用大大限制了存储系统的兼容性,无法动态适配多种类型的存储数据层。


技术实现要素:

10.有鉴于此,本发明提出了一种数据存储方法、系统、计算机设备及存储介质,实现一种选主算法来保证任何场景下都能选出主服务来承担集群的操作,并将视频存储业务与视频数据读写分离出不同的服务进程来承担,解决了现有技术中遇到的可用性、扩展性、兼容性等方面的问题。
11.基于上述目的,本发明实施例的一方面提供了一种数据存储方法,具体包括如下步骤:
12.按预设条件开启集群中节点的计时器;
13.监测所述计时器是否超时;
14.响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票;
15.基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。
16.在一些实施方式中,基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票包括:
17.将发起选举的节点的任期加1,并基于所述发起选举的节点的任期向所述其它节点发送投票指令,并为所述发起选举的节点自身投票;
18.接收所述其它节点基于所述投票指令返回的投票结果。
19.在一些实施方式中,其它节点接收到所述投票指令后还包括:
20.基于发起选举的节点的任期与其它节点自身的任期对所述发起选举的节点进行投票,并返回投票结果给所述发起选举的节点;或,
21.响应于所述其它节点自身故障,返回网络连接错误的投票结果给所述发起选举的节点。
22.在一些实施方式中,基于发起选举的节点的任期与其它节点自身的任期对所述发起选举的节点进行投票包括:
23.将所述发起选举的节点的任期与所述其它节点自身的任期进行比较;
24.若是所述发起选举的节点的任期比所述其它节点自身的任期小,则拒绝对所述发起选举的节点进行投票;
25.若是所述发起选举的节点的任期比所述其它节点自身的任期大,则对所述发起选举的节点进行投票;
26.若是所述发起选举的节点的任期与所述其它节点自身的任期相等,则基于所述发起选举的节点发起选举的时间与所述其它节点自身发起选举的时间对所述发起选举的节点进行投票。
27.在一些实施方式中,基于投票结果确定所述发起选举的节点能否成为主中心服务包括:
28.基于所述投票结果判断集群中存活节点数是否大于总节点数的一半;
29.若是所述存活节点数大于所述总节点数的一半,则基于所述投票结果得到发起选举的节点得到的投票数,并基于所述发起选举的节点得到的投票数与总节点数确定所述发起选举的节点能否成为主中心服务;
30.若是所述存活节点数小于所述总节点数的一半,则获取发起选举的节点的节点id,并基于所述节点id确定所述发起选举的节点能否成为主中心服务。
31.在一些实施方式中,基于所述发起选举的节点得到的投票数与总节点数确定所述发起选举的节点能否成为主中心服务包括:
32.判断所述发起选举的节点得到的投票数是否超过总节点数的一半;
33.若是所述发起选举的节点得到的投票数超过所述总节点数的一半,则确定所述发起选举的节点成为主中心服务;
34.若是所述发起选举的节点得到的投票数未超过所述总节点数的一半,则返回响应于所述计时器超时,基于计时器超时的节点发起选举的步骤。
35.在一些实施方式中,基于所述节点id确定所述发起选举的节点能否成为主中心服务包括:
36.响应于所述节点id是存活节点中的最小值,则确定所述发起选举的节点成为主中心服务;
37.响应于所述节点id不是存活节点中的最小值,则返回响应于所述计时器超时,基于计时器超时的节点发起选举的步骤。
38.在一些实施方式中,节点包括节点状态,节点状态为跟随者、候选者或领导者中的任意一种。
39.在一些实施方式中,所述发起选举的节点的节点状态为候选者,所述主中心服务所在节点的节点状态为领导者,剩余节点的节点状态为跟随者。
40.在一些实施方式中,所述计时器用于统计等待接收领导者心跳通知的时间;
41.方法还包括:
42.基于成为主中心服务的节点定时向其它节点发送心跳通知。
43.在一些实施方式中,所述数据存储业务包括集群管理、负载均衡、全局元数据管理、录像检索、录像锁定与时间段淘汰检测中的任意一项或多项。
44.在一些实施方式中,基于所述主中心服务承担所述集群管理包括:基于所述主中心服务对集群中所有节点服务的状态和资源信息进行管理和监控;
45.在一些实施方式中,全局元数据管理包括节点信息元数据和通道信息元数据,基于所述主中心服务承担所述全局元数据管理包括:响应于所述主中心服务启动,将所述节点信息元数据和所述通道信息元数据从中心元数据库加载到主中心服务所在节点的内存,并定期将所述内存中的节点信息元数据和通道信息元数据持久化更新到所述中心元数据库。
46.在一些实施方式中,基于所述主中心服务承担所述录像检索包括:接收通道录像检索指令,并基于所述通道录像检索指令从通道信息元数据中查询符合检索条件的时间段列表;
47.在一些实施方式中,基于所述主中心服务承担所述录像锁定包括:接收录像锁定指令,并基于所述录像锁定指令从通道信息元数据中查询符合锁定时间范围的所有时间段,并将所述时间段的状态设置为锁定,并向所述时间段所在的节点服务发送锁定当前时间段的命令;
48.在一些实施方式中,基于所述主中心服务承担所述时间段淘汰检测包括:基于所述主中心服务定期遍历通道信息元数据以对每个通道的时间段列表进行检测判断,基于检测判断结果与所述时间段的状态确定是否淘汰所述时间段。
49.本发明实施例的另一方面,还提供了一种数据存储系统,包括:中心服务,所述中心服务配置于执行以下步骤:
50.按预设条件开启集群中所述中心服务所在节点的计时器;
51.监测所述计时器是否超时;
52.响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票;
53.基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。
54.本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
55.本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
56.本发明至少具有以下有益技术效果:本发明实现了一种高可用、高性能、易扩展数据存储方案,将视频存储业务与数据读写分离出不同的服务进程来承担,并使用选主算法选出主中心服务进行统一的通道管理、通道信息元数据管理、集群管理、负载均衡、录像检索、录像锁定/解锁、录像数据淘汰等功能,可以应用于安防监控业务使用场景。相比于现有技术,具有以下优点:
57.一、性能,录像检索只需主中心服务检索缓存在内存中的时间段列表,长时间范围内的检索也能做到秒级返回,数据读写是与节点服务直接交互,没有中转和瓶颈,并且大部分的情况下视频流与存储设备之间无需网络交互;
58.二、可用性,因为对于系统集群里的每个节点而言,本身就是一个存储系统,支持该系统的一切功能特征,能够处理所有的业务,所以具备动态的故障切换;
59.三、扩展性,每个节点能够处理所有的业务,并且负载均衡考虑到了流量和存储空
间两个维度,所以能够在业务不中断的情况进行节点的增删操作;
60.四、低成本,某通道申请写入节点时优先将该通道未写满的块文件写满后再给该通道分配新的块文件,能够做到大部分的情况下每个通道只占用一个未写满的块文件,避免空间浪费。
附图说明
61.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
62.图1为本发明提供的数据存储方法的一实施例的框图;
63.图2为本发明提供的节点状态切换方法的一实施例的流程图;
64.图3为本发明提供的选举算法的一实施例的流程图;
65.图4为本发明提供的通道、块文件和时间段的一实施例的示意图;
66.图5为本发明提供的数据存储系统的一实施例的结构示意图;
67.图6为本发明提供的数据存储系统的又一实施例的结构示意图;
68.图7为本发明提供的数据存储系统的一实施例的逻辑示意图;
69.图8为本发明提供的数据写入方法的一实施例的流程图;
70.图9为本发明提供的数据读取方法的一实施例的流程图;
71.图10为本发明提供的数据锁定/解锁方法的一实施例的流程图;
72.图11为本发明提供的数据淘汰方法的一实施例的流程图;
73.图12为本发明提供的计算机设备的一实施例的结构示意图;
74.图13为本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
75.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
76.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
77.基于上述目的,本发明实施例的第一个方面,提出了一种数据存储方法的实施例。如图1所示,其包括如下步骤:
78.s10、按预设条件开启集群中节点的计时器;
79.s20、监测所述计时器是否超时;
80.s30、响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票;
81.s40、基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。
82.每个服务器节点都会运行一个中心服务,为了能够避免通道重复创建、负载均衡
时出现某节点负载瞬间蜂拥、数据一致性等问题,各个服务器节点第一次启动,各服务器节点上的中心服务通过选主算法选出一个主中心服务用来承担数据存储业务功能,存储业务功能可以包括负载均衡、节点监控、故障切换等功能。当主服务或者主服务所在的服务器节点宕掉后,其它服务器节点上运行的中心服务会通过选主算法进行重新选出一个主服务来承担所有的数据存储业务功能,实现了数据存储的高可用性。
83.本技术可应用于安防监控技术领域中,用于实现视频流存储业务的高可用性,但不限于于此。
84.应用于安防监控技术领域时,基于安防监控行业的实时视频存储特性,将视频业务与视频流数据读写进行服务隔离,与存储数据层有效的结合,提供高性能、高可靠、高可用的视频存储方法。
85.具体的,步骤s10中,计时器用于统计等待领导者的心跳通知的时间,预设条件可以为预先设置的计时器的启动时间,每个节点启动计时器的时间都不一样,由此,保证同一个时间点只有一个节点发起选举,避免发生错误。
86.步骤s20中,监测计时器等待领导者的心跳通知的时间是否超时。
87.步骤s30中,计时器等待领导者的心跳通知的时间超时,该计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对发起选举的节点进行投票,其它节点可以选择投票或拒绝投票,并将投票结果返回给发起选举的节点。
88.步骤s40中,发起选举的节点接到投票结果后就能确定自己能否成为主中心服务。
89.以上结合具体实施例阐述了本发明中提到的选主算法,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
90.步骤s40中,如果确定该发起选举的节点不能成为主中心服务,则返回步骤s20,以等待其它计时器超时的节点发起选举。如果确定该发起选举的节点能成为主中心服务,则将该发起选举的节点设置成主中心服务,基于主中心服务进行视频存储业务。
91.本发明通过上述方案,通过选主算法保证了服务器集群中有一个主中心服务来进行集群的正常操作,实现了视频存储的高可用性。
92.在一些实施方式中,基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票包括:
93.将发起选举的节点的任期加1,并基于所述发起选举的节点的任期向所述其它节点发送投票指令,并为所述发起选举的节点自身投票;
94.接收所述其它节点基于所述投票指令返回的投票结果。
95.在一些实施方式中,其它节点接收到所述投票指令后还包括:
96.基于发起选举的节点的任期与其它节点自身的任期对所述发起选举的节点进行投票,并返回投票结果给所述发起选举的节点;或,
97.响应于所述其它节点自身故障,返回网络连接错误的投票结果给所述发起选举的节点。
98.在一些实施方式中,基于发起选举的节点的任期与其它节点自身的任期对所述发起选举的节点进行投票包括:
99.将所述发起选举的节点的任期与所述其它节点自身的任期进行比较;
100.若是所述发起选举的节点的任期比所述其它节点自身的任期小,则拒绝对所述发
起选举的节点进行投票;
101.若是所述发起选举的节点的任期比所述其它节点自身的任期大,则对所述发起选举的节点进行投票;
102.若是所述发起选举的节点的任期与所述其它节点自身的任期相等,则基于所述发起选举的节点发起选举的时间与所述其它节点自身发起选举的时间对所述发起选举的节点进行投票。
103.在一些实施方式中,基于投票结果确定所述发起选举的节点能否成为主中心服务包括:
104.基于所述投票结果判断集群中存活节点数是否大于总节点数的一半;
105.若是所述存活节点数大于所述总节点数的一半,则基于所述投票结果得到发起选举的节点得到的投票数,并基于所述发起选举的节点得到的投票数与总节点数确定所述发起选举的节点能否成为主中心服务;
106.若是所述存活节点数小于所述总节点数的一半,则获取发起选举的节点的节点id,并基于所述节点id确定所述发起选举的节点能否成为主中心服务。
107.在一些实施方式中,基于所述发起选举的节点得到的投票数与总节点数确定所述发起选举的节点能否成为主中心服务包括:
108.判断所述发起选举的节点得到的投票数是否超过总节点数的一半;
109.若是所述发起选举的节点得到的投票数超过所述总节点数的一半,则确定所述发起选举的节点成为主中心服务;
110.若是所述发起选举的节点得到的投票数未超过所述总节点数的一半,则返回响应于所述计时器超时,基于计时器超时的节点发起选举的步骤。
111.在一些实施方式中,基于所述节点id确定所述发起选举的节点能否成为主中心服务包括:
112.响应于所述节点id是存活节点中的最小值,则确定所述发起选举的节点成为主中心服务;
113.响应于所述节点id不是存活节点中的最小值,则返回响应于所述计时器超时,基于计时器超时的节点发起选举的步骤。
114.在一些实施方式中,节点包括节点状态,节点状态为跟随者、候选者或领导者中的任意一种。
115.在一些实施方式中,所述发起选举的节点的节点状态为候选者,所述主中心服务所在节点的节点状态为领导者,剩余节点的节点状态为跟随者。
116.在一些实施方式中,所述计时器用于统计等待接收领导者心跳通知的时间;
117.方法还包括:
118.基于成为主中心服务的节点定时向其它节点发送心跳通知。
119.以下结合又一个具体实施例阐述本发明的选主功能,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
120.1)选主算法概述
121.选主算法可以分为三种场景:单节点中心服务、存活节点数大于总节点数的一半、存活节点数小于等于总节点数的一半。
122.不同的场景该选主算法的处理逻辑不同。单节点的中心服务无需进行选举,自己就是主中心服务;存活节点数大于总节点数一半的处理逻辑是最先接收到的投票数大于总节点数的一半的节点为主中心服务;存活节点数小于等于总节点数一半的处理逻辑是节点id(identity document,身份标识)最小的节点为主中心服务。
123.该选主算法发起选举的条件可以是节点的存储系统部署好后的第一次启动。该选主算法发起选举的条件还可以是当前没有主中心服务或者当前主中心服务故障,如果当前主中心服务没有故障,即使当前集群只有该主中心服务存活也不会进行选举操作,集群的业务继续正常运行。
124.2)选主算法的实现方案
125.该选主算法中每个节点涉及到的概念包括节点id、超时间隔(timeout interval)、任期(term)、启动选举时间(elect time)、节点状态。
126.节点id由中心服务节点所在的服务器ip地址作为唯一标识,每个中心服务节点的启动参数会设置当前中心服务节点id以及集群里其它中心服务节点id列表。
127.超时时间间隔包括等待主中心服务通知的超时间隔和选举超时时间间隔,每个中心服务节点的选举超时时间间隔是不一样的,间隔值为某个范围内的随机值,这种方式避免了多个中心服务节点同时发起选举导致选不出主中心服务的问题。
128.任期是在选举主中心服务的一个条件依据,所有节点初始启动时任期都为0,当某节点启动一个新一轮的选举时该节点的任期加1,任期越大的节点成为主中心服务的可能性越大。
129.启动选举时间也是选举主中心服务的一个条件依据,在任期相同的情况下,启动选举时间越早的节点成为主中心服务的可能性越大。
130.节点状态包括跟随者、候选人、领导者三种状态,中心服务节点的状态可能是这三种状态的其中一种,当中心服务节点是领导者的状态时,该中心服务节点就成为了主中心服务。三种状态的切换逻辑如图2所示。
131.3)选举算法的实现步骤
132.结合图3对选举算法的实现过程进行说明;
133.每一个节点上都运行着中心服务,节点启动时将根据设置的启动参数获得当前节点id和集群内的其它节点id;
134.开启等待领导者的心跳通知的timer(计时器),启动timer的时间每个节点都不一样,这样保证了同一个时间点只有一个节点发起选举;
135.等待超时的节点发起一轮选举,节点会将自己的任期+1;
136.将自己的状态设置为候选人状态,并向其它节点并发的发送投票指令,并为自己投一票;
137.其它节点收到投票指令后会将发起投票节点的任期与自己的任期进行比较,如果任期比自己的小将拒绝投票,如果任期比自己的大将进行投票,如果任期与自己的相等则将选举发起时间与自己的选举发起时间进行比较,如果比自己的早将投票,如果比自己的晚将拒绝投票,返回结果,如果节点故障将会返回网络连接错误;
138.发起选举节点接收投票结果进行判断,如果存活节点数大于总节点数一半将判断投票数是否超过总节点数一半,超过将成为领导者,不超过则返回上述等待超时的节点发
起一轮选举的步骤;如果存活节点数小于总节点数一半将判断自己的ip地址是否为存活节点最小值,是最小值将成为领导者,不是最小值则返回上述等待超时的节点发起一轮选举的步骤;
139.成为领导者的节点定时向其它节点发送心跳通知;
140.其它节点收到领导者的心跳通知后将自己的状态置为跟随者。
141.在本实施例中,提出的中心服务选主算法,支持单中心服务节点、存活中心服务节点数大于总中心服务节点数、存活中心服务节点数小于总中心服务结点数等三种场景下主中心服务的选择,必定能够保证集群有一个主中心服务来进行集群的正常操作。
142.本实施例实现的数据存储方法,可以将视频存储业务与数据读写业务分离出不同的进程来承担,分离出的中心服务进程是高可用的集群架构,由一个主中心服务生成和管理全局的通道信息元数据,并统一处理除了数据读写操作外的所有业务操作,分离出的节点服务用于处理数据读写操作。
143.在一些实施方式中,所述数据存储业务包括集群管理、负载均衡、全局元数据管理、录像检索、录像锁定与时间段淘汰检测中的任意一项或多项。
144.在一些实施方式中,基于所述主中心服务承担所述集群管理包括:基于所述主中心服务对集群中所有节点服务的状态和资源信息进行管理和监控。
145.具体的,主中心服务管理集群里所有的节点服务,对节点服务的状态和资源信息进行监控。节点服务启动后会向主中心服务注册,并将自己所在节点的节点地址、块文件总数、空闲块文件个数等信息同步给主中心服务,主中心服务收到节点服务的注册和同步的节点信息后,将把该节点的状态置为在线,并将该节点的节点信息元数据更新。随后的运行过程中,节点服务会定时向主中心服务发送保活心跳,如果主中心服务超过时间间隔没有收到某节点上的节点服务发送过来的保活心跳时,将会把该节点的状态置为离线状态,当监测到节点服务故障后,故障节点服务的数据写入操作将会切换到其它正常的节点服务上进行。
146.节点服务在本发明中,专门用来承担数据读写业务,通过中心服务和节点服务来将视频存储业务与数据读写业务分离,以此实现高可用、高性能、高扩展的视频存储。
147.在一具体实施例中,理想状态下,集群性能与各节点性能总和正线性相关。例如,10个节点构成的存储集群的io、容量是集群中10个节点i/o和容量的总和。但由于负载均衡不能达到绝对的平衡状态,节点数增多时空间利用率有部分下降,并且还有网络等外部环境的影响,整体性能很难达到线性增长。此时,可以通过主中心服务来统一的进行负载均衡和保证集群数据的一致性。
148.主中心服务在进行负载均衡的依据为如下几点:
149.1)根据节点的空闲块个数作为负载大小的判断依据。
150.2)优先将sdk通道写入申请分配到同一个服务器节点上运行的节点服务进行数据写入,尽量避免服务器节点间进行数据的网络传输。
151.3)尽量做到每个通道当前只占用一个未写满的块文件,如果由于节点故障导致一个通道占用一个及以上未写满块文件时,在该通道申请写入节点时要优先将未写满的块文件写满,避免空间浪费,因为一个块文件被某通道占用后,其它通道将无法再使用。
152.主中心服务在进行负载均衡时可以采取上述三种逻辑的任意一种。
153.在一些实施例中,还可以设置上述三种负载均衡逻辑的优先级,优选为,将后两种负载均衡逻辑的优先级设置为高于第一种负载均衡逻辑的优先级,后两种优先级等级一样的负载均衡逻辑基于具体应用场景选择。
154.在一些实施方式中,全局元数据管理包括节点信息元数据和通道信息元数据,基于所述主中心服务承担所述全局元数据管理包括:响应于所述主中心服务启动,将所述节点信息元数据和所述通道信息元数据从中心元数据库加载到主中心服务所在节点的内存,并定期将所述内存中的节点信息元数据和通道信息元数据持久化更新到所述中心元数据库。
155.具体的,本发明中定义4种类型元数据,分别为节点信息、通道信息、块文件信息、时间段信息等,元数据的存储结构定义为key-value(键值对)的模式。
156.节点信息,主要描述的是分配给节点服务的存储资源大小、节点服务状态相关的信息,用来进行节点服务状态监控和存储资源负载均衡相关的处理。
157.通道信息、块文件信息、时间段信息是与视频业务相关的元数据,他们之间是有关联的。元数据最小单位只到时间段,没有帧数据包或者帧数据的元数据,并且也没有帧数据的索引文件,只有存储帧数据的块文件,这种方案很大程度上提高了数据写入的性能。为了避免数据定位在数据块文件上多次跳动导致数据读取性能低下,时间段信息里记录了该时间段包含的关键帧信息列表。通道信息与块文件信息是一对多的关系,块文件信息与时间段信息也是一对多的关系。每个通道可以使用多个块文件,每个块文件只属于一个通道,当一个块文件被某个通道占用后就不能再被其它通道使用。一个块文件包含1个或者多个时间段,时间段只会存在于一个块文件上,不能跨越块文件存在,具体关系图如图4所示。
158.下面结合一具体实施例对节点信息元数据和通道信息元数据的具体结构进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
159.节点信息:key中存放节点名称(hostname);value中存放节点地址、节点状态(在线、离线)、块文件总数、空闲块文件个数。
160.通道信息:key中存放通道标识(channelname),由用户传入并保证唯一性,一般情况下为通道id或设备id;value中存放循环类型、循环周期、占用的块文件列表、块id、节点地址、未写满块文件列表、块id、节点地址、时间段列表、时间段id、开始时间、结束时间、录像类型标识、节点地址、时间段状态(正常、过期、锁定)。
161.节点信息和通道信息是存储系统的全局元数据,存储在中心元数据库的集群里。由主中心服务进行统一操作,主中心服务启动时会将节点信息和通道信息的元数据从中心数据库里加载到内存中,在运行过程中会定期将内存里的节点信息和通道信息元数据持久化更新到中心元数据库的集群里。
162.下面结合两个具体实施例分别对节点信息元数据管理和通道信息元数据管理进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
163.实施例1:节点信息元数据管理
164.节点服务启动后会向主中心服务注册,并将自己所管理的块文件总数和空闲块文件个数上报给主中心服务,主中心服务会生成或者更新该节点服务的节点信息元数据,在节点服务运行过程中会与主中心服务一直进行心跳保活,当节点服务所管理的块文件总数和空闲块文件个数发生变化时,会实时上报给主中心服务来更新该节点服务的节点信息元
数据。
165.主中心服务会监控集群中各节点服务的在线状态,某节点服务状态改变时,主中心服务会更新该节点服务的节点信息元数据里的状态值。
166.实施例2:通道信息元数据管理
167.某通道在选择新的块文件写入数据时会将选择的块文件相关信息同步给主中心服务更新该通道的通道信息元数据,数据写入的过程中会定时将时间段的相关信息同步给主中心服务来更新该通道的通道信息元数据。
168.某通道占用的块文件到期淘汰回收后,将该块文件相关信息同步给主中心服务更新该通道的通道信息元数据。
169.在一些实施方式中,基于所述主中心服务承担所述录像检索包括:接收通道录像检索指令,并基于所述通道录像检索指令从通道信息元数据中查询符合检索条件的时间段列表。
170.具体的,主中心服务收到检索某通道的录像指令时,将根据检索的开始时间、结束时间、录像标识等条件查询该通道信息的元数据里的时间段列表,根据时间段列表的信息与检索条件进行判断,将满足检索条件的时间段的列表返回给sdk,sdk根据时间段列表里的时间段id、节点地址、开始时间、结束时间直接与时间段所在服务器节点上的节点服务通信进行数据读取。由于录像检索只需向主中心服务进行检索,并且主中心服务将元数据都缓存在内存中,所以该操作只需进行内存查询,即使长时间范围的录像检索也能做到秒级返回。
171.sdk(software development kit,软件开发工具包)为管理平台提供使用的api(application programming interface,应用程序接口),对管理平台使用功能进行简化封装,最终提供静态/动态链接库给管理平台使用。
172.在一些实施方式中,基于所述主中心服务承担所述录像锁定包括:接收录像锁定指令,并基于所述录像锁定指令从通道信息元数据中查询符合锁定时间范围的所有时间段,并将所述时间段的状态设置为锁定,并向所述时间段所在的节点服务发送锁定当前时间段的命令。
173.具体的,本发明对录像锁定的最小单位为时间段,所以在对某时间范围内的数据进行锁定时,会将该时间范围内所涵盖的所有时间段都会锁定,时间段的锁定会直接影响到块文件的淘汰,每个块文件上只要有一个时间段是锁定状态,则该块文件就无法进行淘汰,除非该时间段被解锁后该块文件才能正常的被淘汰。
174.录像锁定由主中心服务来处理,主中心服务收到录像锁定指令,要锁定某通道时间范围的录像时,将根据锁定的时间范围检索该通道的通道信息元数据,将符合时间范围的所有时间段的状态设置为锁定,并向该时间段所在的节点服务发送锁定当前时间段的指令,节点服务收到锁定指令后将该时间段的状态置为锁定。
175.录像解锁指令也由主中心服务来处理,主中心服务收到解锁某通道某通道时间范围的录像时,将根据时间范围检索该通道的通道信息元数据,将符合时间范围的所有时间段的锁定状态清除,并向该时间段所在的节点服务发送解锁当前时间段的指令,节点服务收到解锁指令将该时间段的状态置为正常。
176.锁定录像检索,与录像检索一样的流程,在检索条件中增加了对符合条件的时间
段是否锁定的判断。
177.在一些实施方式中,基于所述主中心服务承担所述时间段淘汰检测包括:基于所述主中心服务定期遍历通道信息元数据以对每个通道的时间段列表进行检测判断,基于检测判断结果与所述时间段的状态确定是否淘汰所述时间段。
178.具体的,录像数据如果不被锁定则不会永久存在,都有一定的存储周期,会对每个通道会设置它的存储周期,当录像数据超过存储周期后将会被淘汰清除,录像数据淘汰清除的最小单位也是时间段,即是当前时间段上的所有录像数据都超过存储周期才会被淘汰清除。本发明的录像淘汰分为时间段淘汰以及块文件淘汰,主中心服务负责时间段的淘汰,主中心服务会定期遍历通道信息元数据,对每个通道的时间段列表进行检测判断,如果某时间段的结束时间超过存储周期,并且该时间段的状态不是锁定,则将该时间段的状态设置为已淘汰,并向该时间段所在的节点服务发送设置时间段状态为淘汰的指令。块文件淘汰基于节点服务实现。
179.以上实施例,实现了一种高可用、高性能、易扩展数据存储方法,将视频存储业务与数据读写分离出不同的服务进程来承担,并使用选主算法选出主中心服务进行统一的通道管理、通道信息元数据管理、集群管理、负载均衡、录像检索、录像锁定/解锁、录像数据淘汰等功能,可以应用于安防监控业务使用场景。相比于现有技术,具有以下优点:
180.一、性能,录像检索只需主中心服务检索缓存在内存中的时间段列表,长时间范围内的检索也能做到秒级返回,数据读写是与节点服务直接交互,没有中转和瓶颈,并且大部分的情况下视频流与存储设备之间无需网络交互。
181.二、可用性,因为对于系统集群里的每个节点而言,本身就是一个存储系统,支持该系统的一切功能特征,能够处理所有的业务,所以具备动态的故障切换。
182.三、扩展性,每个节点能够处理所有的业务,并且负载均衡考虑到了流量和存储空间两个维度,所以能够在业务不中断的情况进行节点的增删操作。
183.四、低成本,某通道申请写入节点时优先将该通道未写满的块文件写满后再给该通道分配新的块文件,能够做到大部分的情况下每个通道只占用一个未写满的块文件,避免空间浪费。
184.基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种数据存储系统,包括:中心服务(在本发明中,中心服务也可称为中心服务模块)110,所述中心服务110配置于执行以下步骤:
185.按预设条件开启集群中所述中心服务所在节点的计时器;
186.监测所述计时器是否超时;
187.响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票;
188.基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。
189.在一具体实施例中,本发明的数据存储系统可用于安防监控领域中实时视频的存储,提出了一种高可用的实现方案,解决现有技术在可用性、扩展性、兼容性等方面存在的问题。
190.如图6所示,数据存储系统,包括5个服务模块,分别为sdk、中心服务、中心元数据
库、节点服务、本地节点元数据库。每个存储节点上都运行着这些服务模块,对于每个单个存储节点服务器而言,本身又是相对独立的存储系统,支持该系统的一切功能特征,能够处理sdk的任何操作。
191.sdk为管理平台提供使用的api,对管理平台使用功能进行简化封装,最终提供静态/动态链接库给管理平台使用。
192.中心服务具备服务高可用、集群管理、负载均衡、通道管理、业务处理等主要功能。它承担管理系统中的所有节点服务,并对存储数据层提供的存储资源进行统一的均衡分配,支持多个管理平台使用该系统,避免管理平台向该系统里重复创建通道,只处理指令操作,不处理数据读写操作。中心服务集群通过选举算法选出一个主服务来完成所承担的功能,该主服务生成和管理系统中节点信息和通道信息的全局元数据,保证全局元数据的数据一致性。
193.中心元数据库是用数据库集群来存储中心服务管理的全局元数据,只会有一个主中心服务来操作数据库,数据库集群保证数据库里的数据一致性和数据库集群的高可用。
194.节点服务承担将当前节点信息同步给中心服务、时间段管理、块文件管理、数据读写等功能。管理平台是直接向节点服务进行数据读写,没有中转服务,不会出现数据读写的性能瓶颈。系统中各节点服务器上的节点服务之间是相互独立的,没有主从之分,每个节点服务只对分配给自己的存储资源进行自产自销,也只管理当前自己节点的块文件信息和时间段信息元数据,由于在数据写入时,要频繁的更新块文件信息和时间段信息元数据,为了避免系统中所有节点服务并发的去数据库里更新元数据,所以每个节点服务将自己节点的块文件信息和时间段信息元数据存储到当前节点服务器上运行的本地节点元数据库。
195.本地节点元数据库是单点数据库用来存储节点服务生成和管理的块文件信息和时间段信息元数据。系统中所有节点服务器上运行的本地节点元数据库都是相互独立的,它们之间不会组成集群,只与当前节点服务器上运行的节点服务进行通信交互。
196.数据存储系统向上提供统一的接口对接管理平台,并且将从前端设备取流的功能也封装在sdk里,由管理平台的服务进程调用,向下通过不同的数据系统引擎来适配不同的存储数据层,具体的逻辑示意图如图7所示。
197.在一些具体实施例中,结合图6、8、9、10和11对数据存储系统的功能进行介绍。主要涉及在数据读写、录像锁定/解锁、数据淘汰等视频存储关键流程处理,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
198.1)结合图6与图8对数据写入流程进行说明
199.在一实际应用场景中,通道与摄像设备一一对应,当某一台摄像设备第一次向数据存储系统写入数据时,会通过sdk向主中心服务进行创建某通道时,主中心服务将生成该通道的通道信息元数据,如果该通道的通道信息元数据已经存在则主中心服务将返回给sdk通道已存在的错误信息,保证集群里的通道不会重复创建。
200.具体数据写入流程如下:
201.在开始数据写入或者判断出当前块已经写满的情况下,管理平台通过sdk向主中心服务进行写入节点的申请;
202.管理平台通过sdk直接向主中心服务分配的写入节点的节点服务交互进行持续的数据流写入;
203.节点服务收到数据后判断是否需要选择新的块文件写入;
204.如果需要选择新的块文件,则从空闲块文件列表里选择块文件,并生成新的时间段;
205.如果不需要选择新块文件,则选择通道当前占用的块文件,并判断是否需要生成新的时间段;
206.如果需要生成则生成新的时间段元数据,如果不需要则更新当前时间段信息;
207.将数据写入块文件映射的物理存储单元里,成功写入后将更新数据库里的块文件信息和时间段信息元数据;
208.循环执行管理平台通过sdk直接向主中心服务分配的写入节点的节点服务交互进行持续的数据流写入及其之后的步骤。
209.2)结合图6与图9对数据读取流程进行说明
210.管理平台通过sdk先向主中心服务进行枚举通道,如果管理平台明确直到要进行读取那个通道的数据时,该操作可以省略;
211.管理平台通过sdk向主中心服务发出录像检索命令以进行录像检索;
212.主中心服务根据检索命令的检索条件查询通道的所有时间段列表,并返回所有符合条件的时间段列表;
213.管理平台通过sdk从时间段列表选择某时间段,并向某时间段所在的节点服务直接进行数据读取;
214.节点服务收到数据读取指令后将对应的时间段信息元数据从数据库里加载到内存中;
215.根据读取的开始时间定位到最接近的关键帧在块文件上的偏移量;
216.根据偏移量定位到数据的存储位置进行持续的读取数据;
217.循环执行数据读取及其之后的操作直至完成所有数据的读取。
218.3)结合图6与图10对录像锁定/解锁流程进行说明
219.管理平台通过sdk接口进行录像的锁定或者解锁操作,即通过sdk接口向主中心服务发送录像锁定或解锁命令;
220.主中心服务根据锁定时间范围/解锁时间范围找出该时间范围所覆盖的所有时间段;
221.主中心服务向符合条件的时间段所在的节点服务发送锁定/解锁指令;
222.节点服务收到锁定/解锁指令后更新时间段的元数据;
223.主中心服务收到节点服务的执行成功返回结果后将更新通道信息元数据;
224.循环执行主中心服务向符合条件的时间段所在的节点服务发送锁定/解锁指令及其之后的操作,直到所有时间所均完成锁定/解锁后返回操作成功结果。
225.4)结合图6、11对数据淘汰流程进行说明
226.a)主中心服务时间段检测
227.主中心服务定时检测通道信息元数据,对每个通道的时间段列表进行检测判断
228.判断时间段是否锁定,如果锁定则返回主中心服务定时检测通道信息元数据的步骤,如果未锁定执行下一步;
229.如果时间段的结束时间超过存储周期,主中心服务向时间段所在的节点服务发送
该时间段的淘汰指令;
230.节点服务更新时间段的状态并向数据库更新该时间段的元数据;
231.主中心服务将该时间段信息从通道信息元数据里清除,并向数据库更新该通道的元数据,继续循环执行上述操作。
232.b)节点服务块文件检测
233.节点服务定时检测所有非空闲块文件,判断块文件是否正在进行读或者写操作,如果是则进行下一个块文件的检测,如果否执行下一步;
234.检测块文件所有时间段的状态,检测时间段的状态是否有锁定的,有锁定则执行节点服务定时检测所有非空闲块文件的步骤,未有锁定执行下一步;
235.检测所有时间段状态是否都是淘汰状态,否则执行节点服务定时检测所有非空闲块文件的步骤,是则执行下一步;
236.将块文件回收为空闲块,删除块文件上的所有时间段元数据;
237.向数据库更新块文件信息和时间段信息元数据,并向中心服务同步信息;
238.循环执行上述操作步骤。
239.在本实施例中,将数据淘汰的过程分为时间段淘汰和块文件淘汰回收两部分,时间段淘汰由主中心服务处理,块文件淘汰回收由节点服务处理,这种方案在资源占用可以忽略不计的情况下完成。
240.以上实施例,实现了一种高可用、高性能、易扩展数据存储系统,将视频存储业务与数据读写分离出不同的服务进程来承担,并使用选主算法选出主中心服务进行统一的通道管理、通道信息元数据管理、集群管理、负载均衡、录像检索、录像锁定/解锁、录像数据淘汰等功能,可以应用于安防监控业务使用场景。相比于现有技术,具有以下优点:
241.一、性能,录像检索只需主中心服务检索缓存在内存中的时间段列表,长时间范围内的检索也能做到秒级返回,数据读写是与节点服务直接交互,没有中转和瓶颈,并且大部分的情况下视频流与存储设备之间无需网络交互。
242.二、可用性,因为对于系统集群里的每个节点而言,本身就是一个存储系统,支持该系统的一切功能特征,能够处理所有的业务,所以具备动态的故障切换。
243.三、扩展性,每个节点能够处理所有的业务,并且负载均衡考虑到了流量和存储空间两个维度,所以能够在业务不中断的情况进行节点的增删操作。
244.四、低成本,某通道申请写入节点时优先将该通道未写满的块文件写满后再给该通道分配新的块文件,能够做到大部分的情况下每个通道只占用一个未写满的块文件,避免空间浪费。
245.基于同一发明构思,根据本发明的另一个方面,如图12所示,本发明的实施例还提供了一种计算机设备30,在该计算机设备30中包括处理器310以及存储器320,存储器320存储有可在处理器上运行的计算机程序321,处理器310执行程序时执行如上的方法的步骤。
246.其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本技术实施例中的所述数据存储方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行系统的各种功能应用以及数据处理,即实现上述方法实施例的数据存储方法。
247.存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至
少一个功能所需要的应用程序;存储数据区可存储根据系统的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
248.基于同一发明构思,根据本发明的另一个方面,如图13所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
249.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
250.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
251.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
252.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
253.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

技术特征:
1.一种数据存储方法,其特征在于,包括:按预设条件开启集群中节点的计时器;监测所述计时器是否超时;响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票;基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。2.根据权利要求1所述的方法,其特征在于,基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票包括:将发起选举的节点的任期加1,并基于所述发起选举的节点的任期向所述其它节点发送投票指令,并为所述发起选举的节点自身投票;接收所述其它节点基于所述投票指令返回的投票结果。3.根据权利要求2所述的方法,其特征在于,其它节点接收到所述投票指令后还包括:基于发起选举的节点的任期与其它节点自身的任期对所述发起选举的节点进行投票,并返回投票结果给所述发起选举的节点;或响应于所述其它节点自身故障,返回网络连接错误的投票结果给所述发起选举的节点。4.根据权利要求3所述的方法,其特征在于,基于发起选举的节点的任期与其它节点自身的任期对所述发起选举的节点进行投票包括:将所述发起选举的节点的任期与所述其它节点自身的任期进行比较;若是所述发起选举的节点的任期比所述其它节点自身的任期小,则拒绝对所述发起选举的节点进行投票;若是所述发起选举的节点的任期比所述其它节点自身的任期大,则对所述发起选举的节点进行投票;若是所述发起选举的节点的任期与所述其它节点自身的任期相等,则基于所述发起选举的节点发起选举的时间与所述其它节点自身发起选举的时间对所述发起选举的节点进行投票。5.根据权利要求1所述的方法,其特征在于,基于投票结果确定所述发起选举的节点能否成为主中心服务包括:基于所述投票结果判断集群中存活节点数是否大于总节点数的一半;若是所述存活节点数大于所述总节点数的一半,则基于所述投票结果得到发起选举的节点得到的投票数,并基于所述发起选举的节点得到的投票数与总节点数确定所述发起选举的节点能否成为主中心服务;若是所述存活节点数小于所述总节点数的一半,则获取发起选举的节点的节点id,并基于所述节点id确定所述发起选举的节点能否成为主中心服务。6.根据权利要求5所述的方法,其特征在于,基于所述发起选举的节点得到的投票数与总节点数确定所述发起选举的节点能否成为主中心服务包括:判断所述发起选举的节点得到的投票数是否超过总节点数的一半;若是所述发起选举的节点得到的投票数超过所述总节点数的一半,则确定所述发起选
举的节点成为主中心服务;若是所述发起选举的节点得到的投票数未超过所述总节点数的一半,则返回响应于所述计时器超时,基于计时器超时的节点发起选举的步骤。7.根据权利要求5所述的方法,其特征在于,基于所述节点id确定所述发起选举的节点能否成为主中心服务包括:响应于所述节点id是存活节点中的最小值,则确定所述发起选举的节点成为主中心服务;响应于所述节点id不是存活节点中的最小值,则返回响应于所述计时器超时,基于计时器超时的节点发起选举的步骤。8.根据权利要求1所述的方法,其特征在于,节点包括节点状态,节点状态为跟随者、候选者或领导者中的任意一种。9.根据权利要求8所述的方法,其特征在于,所述发起选举的节点的节点状态为候选者,所述主中心服务所在节点的节点状态为领导者,剩余节点的节点状态为跟随者。10.根据权利要求1所述的方法,其特征在于,所述计时器用于统计等待接收领导者心跳通知的时间;方法还包括:基于成为主中心服务的节点定时向其它节点发送心跳通知。11.根据权利要求1所述的方法,其特征在于,所述数据存储业务包括集群管理、负载均衡、全局元数据管理、录像检索、录像锁定与时间段淘汰检测中的任意一项或多项。12.根据权利要求11所述的方法,其特征在于,基于所述主中心服务承担所述集群管理包括:基于所述主中心服务对集群中所有节点服务的状态和资源信息进行管理和监控;全局元数据管理包括节点信息元数据和通道信息元数据,基于所述主中心服务承担所述全局元数据管理包括:响应于所述主中心服务启动,将所述节点信息元数据和所述通道信息元数据从中心元数据库加载到主中心服务所在节点的内存,并定期将所述内存中的节点信息元数据和通道信息元数据持久化更新到所述中心元数据库。13.根据权利要求11所述的方法,其特征在于,基于所述主中心服务承担所述录像检索包括:接收通道录像检索指令,并基于所述通道录像检索指令从通道信息元数据中查询符合检索条件的时间段列表;基于所述主中心服务承担所述录像锁定包括:接收录像锁定指令,并基于所述录像锁定指令从通道信息元数据中查询符合锁定时间范围的所有时间段,并将所述时间段的状态设置为锁定,并向所述时间段所在的节点服务发送锁定当前时间段的命令;基于所述主中心服务承担所述时间段淘汰检测包括:基于所述主中心服务定期遍历通道信息元数据以对每个通道的时间段列表进行检测判断,基于检测判断结果与所述时间段的状态确定是否淘汰所述时间段。14.一种数据存储系统,其特征在于,包括:中心服务,所述中心服务配置于执行以下步骤:按预设条件开启集群中所述中心服务所在节点的计时器;监测所述计时器是否超时;响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以
及发起选举的节点自身对所述发起选举的节点进行投票;基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。15.一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1至13任意一项所述的方法的步骤。16.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1至13任意一项所述的方法的步骤。

技术总结
本发明涉及存储技术领域,并具体公开了一种数据存储方法、系统、计算机设备及存储介质,方法包括:按预设条件开启集群中节点的计时器;监测所述计时器是否超时;响应于所述计时器超时,基于计时器超时的节点发起选举,并基于集群中其它节点以及发起选举的节点自身对所述发起选举的节点进行投票;基于投票结果确定所述发起选举的节点能否成为主中心服务以基于所述主中心服务承担数据存储业务。通过本发明的方案,在服务器集群中实现了高可用的数据存储。据存储。据存储。


技术研发人员:夏华丽 郭军 张志勇
受保护的技术使用者:济南浪潮数据技术有限公司
技术研发日:2023.04.07
技术公布日:2023/7/20
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐