CN112749178A - 一种保证数据一致性的方法及相关设备 - Google Patents

一种保证数据一致性的方法及相关设备 Download PDF

Info

Publication number
CN112749178A
CN112749178A CN201911057345.XA CN201911057345A CN112749178A CN 112749178 A CN112749178 A CN 112749178A CN 201911057345 A CN201911057345 A CN 201911057345A CN 112749178 A CN112749178 A CN 112749178A
Authority
CN
China
Prior art keywords
node
data
identifier
metadata
cluster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911057345.XA
Other languages
English (en)
Inventor
孟俊才
徐鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201911057345.XA priority Critical patent/CN112749178A/zh
Priority to PCT/CN2020/096005 priority patent/WO2021082465A1/zh
Publication of CN112749178A publication Critical patent/CN112749178A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种保证数据一致性的方法及相关设备。其中,该方法包括:第一节点接收节点管理服务器发送的升级消息,所述节点管理服务器用于管理节点集群,所述节点集群包括第一节点;第一节点更新任期管理数据,该任期管理数据包括root元数据标识和任期标识,root元数据标识用于确定root元数据,该root元数据用于管理所述节点集群对应的元数据,所述任期标识用于表征所述第一节点升级为所述节点集群的主节点;第一节点将所述节点集群对应的数据设置为只读模式,所述数据包括root元数据。上述方法能够保证数据一致性,避免数据冲突。

Description

一种保证数据一致性的方法及相关设备
技术领域
本发明涉及计算机分布式存储***技术领域,尤其涉及一种保证数据一致性的方法及相关设备。
背景技术
目前,在分布式数据库的应用中,为了保证数据写入的唯一性,在整个数据库集群中,必须保证在同一时间只有一个节点可以写入数据,即在同一时刻,必须保证数据库集群中只存在一个主节点。
Raft协议是一种分布式一致性协议,采用精英领导全局的方案。整个集群中只有主节点可以处理客户端发送的请求,其它节点即使接收到了请求也必须转发到主节点进行处理。Raft协议强依赖主节点来确保集群数据一致性。
在云计算环境下,分布式锁有着非常广泛的使用场景。例如,在分布式***中,不同设备对一个共享资源进行访问的时候,***往往需要分布式锁来支持对共享资源访问的互斥性以保证一致性,即只有一个节点能够持有锁,通过锁的抢占可以保证主节点的唯一性。
然后,不管是raft协议还是分布式锁,都存在一定的缺陷。利用raft协议进行选主节点,必须保证集群中存活的节点数大于节点总数的一半,否则无法选出主节点,而利用分布式锁,为了严格保证数据一致性(即写操作不冲突),需要在每次写入的时候都加上锁,数据库性能将遭到严重损失。因此,如何在数据库性能不损失的情况下保证数据一致性是一个亟待解决的问题。
发明内容
本发明实施例公开了一种保证数据一致性的方法及相关设备,能够在数据库性能不损失的情况下,保证数据一致性,避免数据冲突。
第一方面,本申请提供了一种保证数据一致性的方法,包括:第一节点接收节点管理服务器发送的升级消息,所述节点管理服务器用于管理节点集群,所述节点集群包括所述第一节点;所述第一节点更新任期管理数据,所述任期管理数据包括root元数据标识和任期标识,所述root元数据标识用于确定root元数据,所述root元数据用于管理所述节点集群对应的元数据,所述任期标识用于表征所述第一节点升级为所述节点集群的主节点;所述第一节点将所述节点集群对应的数据设置为只读模式,所述数据包括所述root元数据。
在本申请提供的方案中,第一节点在接收到节点管理服务器发送的升级消息之后升级为主节点,更新任期管理数据,并将节点集群对应的数据设置为只读模式,保证在同一时刻,只有一个节点能够写入数据,从而保证数据的一致性,避免出现数据冲突,此外,由于整个过程不需要和其它节点进行协商,保证了***的性能。
结合第一方面,在第一方面的一种可能的实现方式中,所述第一节点读取所述root元数据标识的同时更新所述任期标识。
在本申请实施例中,第一节点保证读取root元数据标识和更新任期标识是原子性的,可以避免其它节点,例如原主节点在此过程中并发修改root元数据标识,导致数据冲突,进而导致数据的不一致。
结合第一方面,在第一方面的一种可能的实现方式中,所述节点集群还包括第二节点,所述第二节点用于读写所述节点集群对应的数据并更新所述root元数据标识;在所述第一节点更新任期管理数据之后,所述root元数据标识被锁定,所述root元数据标识禁止被所述第二节点更新。
在本申请实施例中,在第一节点更新任期管理数据之前,第二节点(例如原主节点)可以读写节点集群对应的数据,并且可以更新root元数据的标识,但是在第一节点更新任期管理数据之后,root元数据标识将被锁定,第二节点虽然可以继续读写数据,但不被允许修改root元数据标识,这样可以保证在后续过程中,任意一个时刻,只会存在一个节点能够写入数据,保证数据的一致性。
结合第一方面,在第一方面的一种可能的实现方式中,所述节点集群对应的数据包括root元数据、元数据和用户数据,所述元数据用于管理所述用户数据,所述用户数据为写入所述节点集群的数据;所述第一节点将所述节点集群对应的数据设置为只读模式之后,将所述元数据设置为只读模式,最后将所述用户数据设置为只读模式。
在本申请实施例中,第一节点分层次进行设置,依次将root元数据、元数据和用户数据设置为只读模式,保证节点集群所对应的数据的一致性,保证第一节点能够准确的找到所有写入节点集群的用户数据。
结合第一方面,在第一方面的一种可能的实现方式中,所述第一节点更新所述root元数据标识并向所述节点集群写入数据。
在本申请实施例中,第一节点在升级成为新的主节点之后,可以向节点集群写入用户数据,并可以通过更新root元数据标识进行对写入的用户数据进行管理。
第二方面,本申请提供了一种第一节点,包括:接收模块,用于接收节点管理服务器发送的升级消息,所述节点管理服务器用于管理节点集群,所述节点集群包括所述第一节点;更新模块,用于更新任期管理数据,所述任期管理数据包括root元数据标识和任期标识,所述root元数据标识用于确定root元数据,所述root元数据用于管理所述节点集群对应的元数据,所述任期标识用于表征所述第一节点升级为所述节点集群的主节点;处理模块,用于将所述节点集群对应的数据设置为只读模式,所述数据包括所述root元数据。
结合第二方面,在第二方面的一种可能的实现方式中,所述更新模块,还用于读取所述root元数据标识的同时更新所述任期标识。
结合第二方面,在第二方面的一种可能的实现方式中,所述节点集群还包括第二节点,所述第二节点用于读写所述节点集群对应的数据并更新所述root元数据标识;所述更新模块更新所述任期管理数据之后,所述root元数据标识禁止被所述第二节点更新。
结合第二方面,在第二方面的一种可能的实现方式中,所述节点集群对应的数据包括root元数据、元数据和用户数据,所述元数据用于管理所述用户数据,所述用户数据为写入所述节点集群的数据;所述处理模块,还用于将所述root元数据设置为只读模式之后,将所述元数据设置为只读模式,最后将所述用户数据设置为只读模式。
结合第二方面,在第二方面的一种可能的实现方式中,所述处理模块,还用于更新所述root元数据标识并向所述节点集群写入数据。
第三方面,本申请提供了一种计算设备,所述计算设备包括处理器和存储器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码执行上述第一方面以及结合上述第一方面中的任意一种实现方式的方法。
第四方面,本申请提供了计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法的流程。
第五方面,本申请提供了一种计算机程序产品,该计算机程序产品包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法的流程。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种节点状态切换的示意图;
图2是本申请实施例提供的一种应用场景示意图;
图3是本申请实施例提供的一种保证数据一致性的方法的流程示意图;
图4是本申请实施例提供的一种数据存储关系的示意图;
图5是本申请实施例提供的一种第一节点的结构示意图;
图6是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
云数据库是一种稳定可靠、可弹性伸缩的在线数据库服务,这种数据库被部署到一个虚拟计算环境中,通过一套统一的管理***进行管理,可以有效降低维护成本。云数据库的计算与存储是分离的,计算层数据库不存储用户的数据,只负责计算,存储层采用新型存储***作为共享存储***。
原子写(atomic write)是指一笔不可分开的事务中的所有写操作必须一起结束或者一起回退,不可分割。传统存储***是以块为单位来管理数据(比如一个块为512字节),在没有原子写的情况下会出现某次写入部分成功,部分失败;或者是在并发场景下,两个线程写入的数据相互覆盖,例如一个线程需要写入123,一个线程需要写入456,并发可能会导致出现写入为126的情况。原子写的功能是保证一次写入要么全部成功,要么全部失败,因此可以避免出现上述情况。
只允许追加(append only)存储为固态硬盘(solid state drive,SSD)等新型存储硬件定制的一种文件***,这种文件***提供新增(append)、删除(delete)、固化(seal)等基本操作,不支持修改操作。seal操作是append only存储***特有的一种操作,即将一个文件设置为只读、不可新增的状态。
在分布式存储***中,数据分为用户数据和元数据,用户数据是指用户真正需要读写的数据,存储在固定大小的文件夹中,每个文件夹对应一个唯一的标识(identification,ID)。元数据是用来描述和管理一个文件的特征的***数据,例如访问权限、文件拥有者、文件数据块的分布信息等,在集群文件***中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置。用户需要操作一个文件必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
一般,在分布式场景下,为了保证数据写入的唯一性,可以通过采用分布式一致性协议选出主节点,然后由主节点进行数据的写入,从而保证任意时刻,只有一个节点能够写入数据,保证数据的一致性。
参见图1,如图1所示,每个节点都存在三种状态,分别是备用状态、选举状态以及主节点状态。所有节点在启动时都处于备用状态,如果在预设时间内(例如2个心态周期内)没有接收到主节点发生的消息(例如心跳信息),则将发生状态切换,由备用状态切换为选举状态。当节点处于选举状态时,会先投自己一票,然后会向其它节点拉选票,即请求其它节点投票给自己,以使自己成为主节点。如果某个节点得到的票数大于集群中节点总数的一半,那么该节点就将成为新的主节点,其它节点则将切换为备用状态。处于主节点状态的节点是整个集群的主节点,所有对***数据的添加、修改和删除等操作只能通过主节点完成。
可以理解,在这种分布式一致性协议的算法逻辑下,可以保证任意时刻只有一个主节点,即可以保证数据一致性,但是,当集群中存活的节点小于等于节点总数的一半时,无法再选举出新的主节点。
此外,在分布式场景下,还可以通过锁的抢占来保证主机的唯一性。例如在使用zookeeper集群来做分布式锁管理,各个节点各自向zookeeper申请分布式锁,zookeerer可以根据先到先得或者权重分配等方式向唯一一个节点授权使用锁,最终获得锁的节点可以写入数据。
应理解,分布式锁所需要的时间较长,且占用的带宽较大,在实际使用过程中往往需要在多个节点之间进行协商,整个***性能将遭受严重损失。
为了解决上述问题,本申请提供了一种保证数据一致性的方法及相关设备,能够在不损失数据库性能的情况下,保证数据一致性,避免数据冲突。其中,节点可以是容器、虚拟机、物理机等,本申请对此不作限定。
参见图2,图2示出了本申请实施例的一种可能的应用场景。在该应用场景中,分布式存储***200包括节点管理服务器210、节点集群220、存储设备230。其中,节点集群220中包括主节点221、备节点222、备节点223和备节点224。应理解,节点集群220还可以包括更多或更少的节点,这里以包括4个节点为例进行说明。存储设备230包括任期管理数据存储单元2310和其它数据存储单元2320,任期管理数据存储单元2310用于存储主节点的任期标识和root元数据标识;其它数据存储单元2320用于存储root元数据、元数据和用户数据。节点管理服务器210用于监控节点集群220中的节点,当监控到主节点221发生异常时,选择一个备节点,例如选择备节点222升级为新的主节点。主节点221工作在可读模式和写模式,即主节点221可以读取存储设备230中的数据,也可以向存储设备230中写入数据,备节点222、备节点223和备节点224工作在可读模式,即只能够读取存储设备230中的数据,不能写入数据。特别的,在备节点222升级为新的主节点之后,可以更新任期管理数据存储单元2310中的主节点的任期标识,并可以向其它数据存储单元2320中写入数据,原主节点221在备节点222更新任期标识之后,可以判断出当前已经存在新的主节点,则原主节点221不能再写入数据,可以***或者将工作模式切换为只读模式。
容易理解,通过设置节点管理服务器210对节点集群220进行管理,可以在主节点221发生故障时,直接选出新的主节点,不需要利用分布式锁来确定新的主节点,可以提高***性能。此外,存储设备230中存储了任期标识,可以保证原主节点能够识别出产生了新的主节点,原主节点可以通过***或切换工作模式等方式来避免与新主节点同时写入数据,避免造成数据冲突,保证数据一致性。
结合图2所示的应用场景,下面将结合图3描述本申请实施例提供的保证数据一致性的方法,如图3所示,该方法包括但不限于以下步骤:
S301:第一节点接收节点管理服务器发送的升级消息。
具体地,该第一节点具体可以是虚拟机或容器等,运行于物理机中。多个节点组成一个集群,如上述节点集群220,在正常工作状态下,该集群中只有一个主节点,其它节点为备节点,主节点可以写入数据,其它备节点不能写入数据以保证数据一致性。多个节点组成的集群可以部署在云环境中,具体为云环境上的一个或多个计算设备上(例如中心服务器);也可以部署在边缘环境中,具体为边缘环境中的一个或多个计算设备(边缘计算设备)上,边缘计算设备可以为服务器。其中,云环境是指云服务提供商拥有的,用于提供计算、存储、通信资源的中心计算设备集群;边缘环境是指在地理位置上距离中心云环境较远的,用于提供计算、存储、通信资源的边缘计算设备集群。
进一步的,第一节点可以是节点集群中的任意一个备节点,例如上述的备节点222,第一节点在运行过程中,若接收到节点管理服务器发送的升级消息,则说明当前主节点可能存在故障或异常,则第一节点需要升级为新的主节点。
S302:第一节点更新任期管理数据。
具体地,第一节点在确定升级成为新的主节点之后,需要更新任期管理数据。任期管理数据包括root元数据标识和任期标识,该root元数据标识用于确定root元数据,即利用该root元数据标识,可以确定数据具体存储在存储设备中的具***置,该任期标识用于表征所述第一节点升级成为新的主节点,即该任期标识是会随着主节点的变化而发生变化的,每当节点管理服务器确定一个新的主节点时,被确定的新的主节点将会更新任期标识。示例性的,在节点管理服务器确定新的主节点之前,该任期标识为5,即该集群曾经产生过5个主节点,当节点管理服务器确定新的主节点之后,新的主节点将该任期标识更新为6,表示该新的主节点为该集群产生的第6个主节点。
需要说明的是,在分布式存储***中,用户写入的数据最终都是写入到一个个固定大小的文件中的,每个文件都被分配了一个唯一的标识。随着写入数据的增多,所需要的文件越多,为了管理这些文件,需要使用一些特定的数据,这些特定的数据叫做元数据,元数据中包括这些文件的标识。每一个元数据也存在着一个唯一标识,同理,为了便于管理元数据,需要使用一个根文件,该根文件又叫做root元数据,root元数据中包括所有元数据的标识。
示例性的,参见图4,如图4所示,所有的用户数据存储在不同的文件中,例如文件1.1、文件1.2等,一个元数据管理着多个文件,例如元数据1管理着文件1.1、文件1.2、…文件1.N,元数据2管理着文件2.1、文件2.2、…文件2.N,所有的元数据由root元数据进行管理,root元数据只有一个,root元数据也对应一个标识,该标识与任期标识属于任期管理数据,一起存储在任期管理数据单元中。
可以看出,第一节点通过更新任期标识,可以使得原来的主节点能够进行识别并确定已经产生新的主节点,避免再次写入数据,可以避免数据冲突,保证数据一致性。
在一种可能的实现方式中,该第一节点读取root元数据标识的同时更新所述任期标识。
具体地,第一节点必须确保读取root元数据以及更新任期标识是同时发生的,即该操作是原子性的,否则放弃本次操作,继续重新执行。
容易理解,原来的主节点可能因为网络波动等原因导致节点管理服务器判定出现了故障,重新选出了第一节点作为新的主节点,但是原来的主节点可能过一段时间又恢复正常了,但原来的主节点不能感知到已经出现了新的主节点,这时,就可能存在着并发的情况,即原来的主节点可能继续写入数据并更新root元数据标识。若第一节点没有同时读取root元数据并更新任期标识,这两个操作之间存在着一段时间间隔,例如第一节点先读取root元数据标识,然后再更新任期标识,就可能导致数据不一致。
示例性的,第一节点在读取root元数据标识的同时,原来的主节点需要修改root元数据的标识,那么第一节点读取到的root元数据的标识与存储设备实际存储的root元数据标识将不一致,而第一节点读取或写入数据是需要依靠root元数据标识的,因此最终会导致数据缺失或数据不一致。而如果第一节点是同时读取root元数据标识并修改任期标识的话,由于root元数据标识与任期标识是绑定的,原来的主节点在修改root元数据标识时需要确定任期标识与自己写入的任期一致,否则修改将不会成功,因此,在这种情况下,原来的主节点将不能成功修改root元数据标识,这时,原来的主节点可以确定当前存在着新的主节点,那么原来的主节点将停止修改root元数据标识以避免数据冲突,保证数据一致性。
S303:第一节点将root元数据设置为只读模式。
具体地,第一节点在更新任期管理数据之后,将root元数据设置为只读模式,即root元数据将不允许修改。
应理解,当原来的主节点没有感知到已经存在一个新的主节点,仍旧向存储设备写入数据,由上述图4所述可知,写入的数据将会存储到一个固定大小的文件中,若该文件存储空间已经不能支持继续存储,则会新建一个新的文件进行存储,此时需要修改元数据,在元数据中新增该新建的文件的标识等相关信息,同理,当元数据的存储空间也已经占满,此时需要创建一个新的元数据,并需要root元数据中新增该新建的元数据的标识等相关信息,而第一节点已经将root元数据设置为只读模式,因此,原来的主节点将不能成功修改root元数据中的相关信息,这时,原来的主节点将能够确定已经存在着新的主节点,原来的主节点将会放弃本次操作,停止向存储设备写入数据,利用***等方式避免数据冲突,以保证数据一致性。
S304:第一节点将所有的元数据设置为只读模式。
具体地,第一节点在将root元数据设置为只读模式之后,将所有的元数据设置为只读模式,即所有的元数据将不允许修改。
容易理解,在原来的主节点没有感知到新节点的情况下写入数据,并且写入的数据导致元数据需要修改时,由于第一节点已经将所有的元数据设置为只读模式,因此原来的主节点将修改失败,这时可以确认当前已经存在着新的主节点,那么原来的主节点将放弃本次操作,停止向存储设备写入数据,利用***等方式避免数据冲突,以保证数据一致性。
S305:第一节点将所有用户数据设置为只读模式。
具体地,第一节点在将所有元数据设置为只读模式之后,将存储用户数据的所有文件设置为只读模式,即所有的文件将不再允许写入数据。
由上述S303和S304中的描述可知,原来的主节点若需要写入数据,那么需要将数据写入到相应的文件中,而第一节点将所有的文件设置为只读模式,导致原来的主节点不能向存储设备写入数据,即写入失败,此时原来的主节点可以确认当前已经存在着新的主节点,那么原来的主节点将放弃本次操作,停止向存储设备写入数据,利用***等方式避免数据冲突,以保证数据一致性。
可以理解,第一节点分层次进行设置,依次将root元数据、元数据以及用户数据设置为只读模式,可以避免数据出现缺失,保证数据一致性,保证能够准确找到所有已经写入存储设备的数据。
S306:第一节点更新root元数据标识并向存储设备写入数据。
具体地,第一节点在将存储用户数据的所有的文件设置为只读模式之后,开始执行主节点的功能。若第一节点需要写入用户数据,由于第一节点已经将所有的文件设置为了只读模式,因此,第一节点需要重建一个文件存储写入的数据,由于新建了文件,因此需要更加元数据,进而需要更新root元数据以及root元数据标识,而其它的节点只能访问存储设备中的数据,不能写入数据以保证数据一致性。
应理解,上述方法实施例所涉及的步骤S301至步骤S306只是示意性的描述概括,不应构成具体限定,可以根据需要对所涉及的步骤进行增加、减少或合并。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
参见图5,图5是本申请实施例提供的一种第一节点的结构示意图。该第一节点可以是上述图3所述的方法实施例中第一节点,可以执行图3所述的保证数据一致性方法实施例中以第一节点为执行主体的方法和步骤。如图5所示,第一节点500包括接收模块510、更新模块520和处理模块530。其中,
接收模块510,用于接收节点管理服务器发送的升级消息,所述节点管理服务器用于管理节点集群,所述节点集群包括所述第一节点;
更新模块520,用于更新任期管理数据,所述任期管理数据包括root元数据标识和任期标识,所述root元数据标识用于确定root元数据,所述root元数据用于管理所述节点集群对应的元数据,所述任期标识用于表征所述第一节点升级为所述节点集群的主节点;
处理模块530,用于将所述节点集群对应的数据设置为只读模式,所述数据包括所述root元数据。
作为一个实施例,所述更新模块520,还用于读取所述root元数据标识的同时更新所述任期标识。
作为一个实施例,所述节点集群还包括第二节点,所述第二节点用于读写所述节点集群对应的数据并更新所述root元数据标识;所述更新模块520更新所述任期管理数据之后,所述root元数据标识禁止被所述第二节点更新。
作为一个实施例,所述节点集群对应的数据包括root元数据、元数据和用户数据,所述元数据用于管理所述用户数据,所述用户数据为写入所述节点集群的数据;所述处理模块530,还用于将所述root元数据设置为只读模式之后,将所述元数据设置为只读模式,最后将所述用户数据设置为只读模式。
作为一个实施例,所述处理模块530,还用于更新所述root元数据标识并向所述节点集群写入数据。
可以理解,本申请实施例中的接收模块510可以由收发器或收发器相关电路组件实现,更新模块520和处理模块530可以由处理器或处理器相关电路组件实现。
需要说明的是,上述第一节点的结构仅仅作为一种示例,不应构成具体限定,可以根据需要对第一节点中的各个模块进行增加、减少或合并。此外,第一节点中的各个模块的操作和/或功能为了实现上述图3所描述的方法的相应流程,为了简洁,在此不再赘述。
参见图6,图6是本申请实施例提供的一种计算设备的结构示意图。如图6所示,该计算设备600包括:处理器610、通信接口620以及存储器630,所述处理器610、通信接口620以及存储器630通过内部总线640相互连接。应理解,该计算设备600可以是云计算中的计算设备,或边缘环境中的计算设备。
所述处理器610可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。
总线640可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线640可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。
存储器630可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM);存储器630也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器630还可以包括上述种类的组合。存储器730可用于存储程序和数据,以便于处理器610调用存储器630中存储的程序代码以实现上述保证数据一致性方法。程序代码可以是用来实现图5所示的第一节点的功能模块,或者用于实现图3所示的方法实施例中以第一节点为执行主体的方法步骤。
本申请还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行任意一种保证数据一致性方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

Claims (13)

1.一种保证数据一致性的方法,其特征在于,所述方法包括:
第一节点接收节点管理服务器发送的升级消息,所述节点管理服务器用于管理节点集群,所述节点集群包括所述第一节点;
所述第一节点更新任期管理数据,所述任期管理数据包括root元数据标识和任期标识,所述root元数据标识用于确定root元数据,所述root元数据用于管理所述节点集群对应的元数据,所述任期标识用于表征所述第一节点升级为所述节点集群的主节点;
所述第一节点将所述节点集群对应的数据设置为只读模式,所述数据包括所述root元数据。
2.如权利要求1所述的方法,其特征在于,所述第一节点更新任期管理数据包括:
所述第一节点读取所述root元数据标识的同时更新所述任期标识。
3.如权利要求1或2所述的方法,其特征在于,所述节点集群还包括第二节点,所述第二节点用于读写所述节点集群对应的数据并更新所述root元数据标识;在所述第一节点更新任期管理数据之后:
所述root元数据标识被锁定,所述root元数据标识禁止被所述第二节点更新。
4.如权利要求1-3任一项所述的方法,其特征在于,所述节点集群对应的数据包括root元数据、元数据和用户数据,所述元数据用于管理所述用户数据,所述用户数据为写入所述节点集群的数据;所述第一节点将所述节点集群对应的数据设置为只读模式,包括:
所述第一节点将所述root元数据设置为只读模式之后,将所述元数据设置为只读模式,最后将所述用户数据设置为只读模式。
5.如权利要求1-4所述的方法,其特征在于,所述第一节点将所述节点集群对应的数据设置为只读模式之后,所述方法还包括:
所述第一节点更新所述root元数据标识并向所述节点集群写入用户数据。
6.一种第一节点,其特征在于,包括:
接收模块,用于接收节点管理服务器发送的升级消息,所述节点管理服务器用于管理节点集群,所述节点集群包括所述第一节点;
更新模块,用于更新任期管理数据,所述任期管理数据包括root元数据标识和任期标识,所述root元数据标识用于确定root元数据,所述root元数据用于管理所述节点集群对应的元数据,所述任期标识用于表征所述第一节点升级为所述节点集群的主节点;
处理模块,用于将所述节点集群对应的数据设置为只读模式,所述数据包括所述root元数据。
7.如权利要求6所述的第一节点,其特征在于,所述更新模块,还用于读取所述root元数据标识的同时更新所述任期标识。
8.如权利要求6或7所述的第一节点,其特征在于,所述节点集群还包括第二节点,所述第二节点用于读写所述节点集群对应的数据并更新所述root元数据标识;所述更新模块更新所述任期管理数据之后,所述root元数据标识禁止被所述第二节点更新。
9.如权利要求6-8任一项所述的第一节点,其特征在于,所述节点集群对应的数据包括root元数据、元数据和用户数据,所述元数据用于管理所述用户数据,所述用户数据为写入所述节点集群的数据;
所述处理模块,还用于将所述root元数据设置为只读模式之后,将所述元数据设置为只读模式,最后将所述用户数据设置为只读模式。
10.如权利要求6-9任一项所述的第一节点,其特征在于,
所述处理模块,还用于更新所述root元数据标识并向所述节点集群写入数据。
11.一种计算设备,其特征在于,所述计算设备包括至少一个存储单元和至少一个处理器,所述至少一个存储单元用于存储至少一条指令,所述至少一个处理器执行所述至少一条指令,实现如权利要求1-5任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当该计算机程序被处理器执行时,实现如权利要求1-5任一项所述的方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述计算机程序被计算机执行时,实现如权利要求1-5任一项所述的方法。
CN201911057345.XA 2019-10-31 2019-10-31 一种保证数据一致性的方法及相关设备 Pending CN112749178A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911057345.XA CN112749178A (zh) 2019-10-31 2019-10-31 一种保证数据一致性的方法及相关设备
PCT/CN2020/096005 WO2021082465A1 (zh) 2019-10-31 2020-06-14 一种保证数据一致性的方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911057345.XA CN112749178A (zh) 2019-10-31 2019-10-31 一种保证数据一致性的方法及相关设备

Publications (1)

Publication Number Publication Date
CN112749178A true CN112749178A (zh) 2021-05-04

Family

ID=75645771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911057345.XA Pending CN112749178A (zh) 2019-10-31 2019-10-31 一种保证数据一致性的方法及相关设备

Country Status (2)

Country Link
CN (1) CN112749178A (zh)
WO (1) WO2021082465A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282334A (zh) * 2021-06-07 2021-08-20 深圳华锐金融技术股份有限公司 软件缺陷的恢复方法、装置、计算机设备和存储介质
CN113326251A (zh) * 2021-06-25 2021-08-31 深信服科技股份有限公司 数据管理方法、***、设备和存储介质
CN113448649A (zh) * 2021-07-06 2021-09-28 聚好看科技股份有限公司 一种基于Redis的首页数据加载的服务器及方法
CN114844799A (zh) * 2022-05-27 2022-08-02 深信服科技股份有限公司 一种集群管理方法、装置、主机设备及可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017161050A2 (en) * 2016-03-15 2017-09-21 Cloud Crowding Corp. Distributed storage system data management and security
CN109729129B (zh) * 2017-10-31 2021-10-26 华为技术有限公司 存储集群***的配置修改方法、存储集群及计算机***
CN110377577B (zh) * 2018-04-11 2022-03-04 北京嘀嘀无限科技发展有限公司 数据同步方法、装置、***和计算机可读存储介质
CN110096237B (zh) * 2019-04-30 2022-02-08 北京百度网讯科技有限公司 副本处理方法及节点、存储***、服务器、可读介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282334A (zh) * 2021-06-07 2021-08-20 深圳华锐金融技术股份有限公司 软件缺陷的恢复方法、装置、计算机设备和存储介质
CN113326251A (zh) * 2021-06-25 2021-08-31 深信服科技股份有限公司 数据管理方法、***、设备和存储介质
CN113326251B (zh) * 2021-06-25 2024-02-23 深信服科技股份有限公司 数据管理方法、***、设备和存储介质
CN113448649A (zh) * 2021-07-06 2021-09-28 聚好看科技股份有限公司 一种基于Redis的首页数据加载的服务器及方法
CN114844799A (zh) * 2022-05-27 2022-08-02 深信服科技股份有限公司 一种集群管理方法、装置、主机设备及可读存储介质

Also Published As

Publication number Publication date
WO2021082465A1 (zh) 2021-05-06

Similar Documents

Publication Publication Date Title
US11809726B2 (en) Distributed storage method and device
US10831614B2 (en) Visualizing restoration operation granularity for a database
US10635500B2 (en) Decoupling partitioning for scalability
CN112749178A (zh) 一种保证数据一致性的方法及相关设备
US9304815B1 (en) Dynamic replica failure detection and healing
US8868711B2 (en) Dynamic load balancing in a scalable environment
US10911540B1 (en) Recovering snapshots from a cloud snapshot lineage on cloud storage to a storage system
US10445186B1 (en) Associating a guest application within a virtual machine to create dependencies in backup/restore policy
US20170371596A1 (en) Method and system for managing storage system
CN111049928B (zh) 数据同步方法、***、电子设备及计算机可读存储介质
US11537553B2 (en) Managing snapshots stored locally in a storage system and in cloud storage utilizing policy-based snapshot lineages
US11537619B1 (en) Replica group modification in a distributed database
WO2021004256A1 (zh) 一种节点故障时进行节点切换的方法及相关设备
CN108255994A (zh) 一种基于数据库快照的数据库版本管理方法
CN111147274B (zh) 为集群解决方案创建高度可用的仲裁集的***和方法
CN114185558A (zh) 基于K8s的原生应用选主方法、装置及存储介质
US11573923B2 (en) Generating configuration data enabling remote access to portions of a snapshot lineage copied to cloud storage
US20210286677A1 (en) Recovering a storage volume associated with a snapshot lineage from cloud storage
CN108512753B (zh) 一种集群文件***中消息传输的方法及装置
US11522966B2 (en) Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment
US10783134B2 (en) Polling process for monitoring interdependent hardware components
US10678453B2 (en) Method and device for checking false sharing in data block deletion using a mapping pointer and weight bits
US11366600B2 (en) Moving snapshots from a local snapshot lineage on a storage system to a cloud snapshot lineage on cloud storage
US20240211434A1 (en) Orchestration of storage system-based snapshot shipping
CN117729095A (zh) 一种数据管理方法、存储***及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20220211

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination