CN109426435B - 分布式系统的一致性实现方法和装置 - Google Patents
分布式系统的一致性实现方法和装置 Download PDFInfo
- Publication number
- CN109426435B CN109426435B CN201710740263.XA CN201710740263A CN109426435B CN 109426435 B CN109426435 B CN 109426435B CN 201710740263 A CN201710740263 A CN 201710740263A CN 109426435 B CN109426435 B CN 109426435B
- Authority
- CN
- China
- Prior art keywords
- state
- machine
- proposal
- cluster
- native
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种分布式系统的一致性实现方法和装置、计算机设备和存储介质,存储设备集群中的存储设备存储有集群状态列表,先将与操作请求相对应的提议编号更新到本机状态中,将本机状态和对机镜像状态与存储设备集群中的相应对机进行状态协商同步,可以通过状态的协商同步就提议编号达成一致以发起提议。提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中,再次进行状态协商同步,就可以在包括提议编号的状态所对应存储设备的数量满足提议选中条件时,就提议值达成一致,进而实现分布式系统的存储的一致性。通过状态的协商同步就可以高效地实现存储设备集群的一致性,降低了分布式在存储设备集群中实现一致性的复杂度。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种分布式系统的一致性实现方法和装置、计算机设备和存储介质。
背景技术
分布式存储是指将数据分散存储到多个数据存储服务器,多个数据存储服务器构成存储设备集群。
在分布式存储中,总会发生诸如机器宕机或网络异常等情况,因此,确保在发生上述异常时,分布式存储设备集群系统如何快速且准确地在集群内部对写操作请求对应的提议值达成一致,以保证在存储设备集群的各存储设备写入数据的一致,是至关重要的。
而传统的分布式系统的一致性实现方法过于复杂。
发明内容
基于此,有必要针对分布式系统的一致性实现方法过于复杂的问题,提供一种分布式系统的一致性实现方法和装置、计算机设备和存储介质。
为达到上述目的,一个实施例采用以下技术方案:
一种分布式系统的一致性实现方法,包括:
接收操作请求;
生成与所述操作请求相对应的准备阶段的提议编号;
更新所述准备阶段的提议编号到本机的集群状态列表中的本机状态中;
将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中响应所述准备阶段的提议编号的存储设备的数量;
当响应所述准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应所述准备阶段的提议编号的提议,令提议阶段的提议编号等于所述准备阶段的提议编号,并将所述提议阶段的提议编号和相应的提议值更新到所述本机的集群状态列表所包括的本机状态中;
将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量;
当接收所述提议的存储设备的数量满足提议选中条件时,将所述提议值提交至数据库。
一种分布式系统的一致性实现装置,包括:接收模块,生成模块,更新模块、同步模块、提议模块和提交模块;
所述接收模块,用于接收操作请求;
所述生成模块,用于生成与所述操作请求相对应的准备阶段的提议编号;
所述更新模块,用于更新所述准备阶段的提议编号到本机的集群状态列表中的本机状态中;
所述同步模块,用于将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中响应所述准备阶段的提议编号的存储设备的数量;
所述提议模块,用于当响应所述准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应所述准备阶段的提议编号的提议,令提议阶段的提议编号等于所述准备阶段的提议编号,并将所述提议阶段的提议编号和相应的提议值更新到所述本机的集群状态列表所包括的本机状态中;
所述同步模块,还用于将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量;
所述提交模块,用于当接收所述提议的存储设备的数量满足提议选中条件时,将所述提议值提交至数据库。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的布式系统的一致性实现方法的步骤。
一种存储介质,其上存储有计算机程序,该程序被处理器执行时,实现上述的布式系统的一致性实现方法的步骤。
上述的分布式系统的一致性实现方法和装置、计算机设备和存储介质,存储设备集群中的存储设备存储有集群状态列表,先将与操作请求相对应的提议编号更新到本机状态中,进而将本机状态和对机镜像状态与所述存储设备集群中的相应对机进行状态协商同步,可以通过状态的协商同步就提议编号达成一致以发起提议。提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中,再次进行状态协商同步,就可以在包括所述提议编号的状态所对应存储设备的数量满足提议选中条件时,就提议值达成一致,进而实现分布式系统的存储的一致性。通过状态的协商同步就可以高效地实现存储设备集群的一致性,降低了在存储设备集群中实现一致性的复杂度。
附图说明
图1为一个实施例中分布式系统的一致性实现方法的应用环境示意图;
图2为一个实施例中分布式系统的一致性实现方法的流程图;
图3为一个实施例中准备阶段的状态同步示意图;
图4为一个实施例中提议阶段的状态同步示意图;
图5为另一个实施例中分布式系统的一致性实现方法的流程示意图;
图6为一个实施例中分布式系统的一致性实现方法的时序交互图;
图7为一个实施例中分布式系统的一致性实现装置结构框图;
图8为一个实施例中计算机设备的内部结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
图1为一个实施例中分布式系统的一致性实现方法的应用环境图。如图1所示,终端110可以通过网络与存储设备集群120中的各存储设备120a进行通信。其中,终端110可以为一个或多个。存储设备是可以用于存储数据的设备。可以理解,存储设备除了可以用于存储数据以外,还可以具备其他的数据处理功能,对此不作限定。存储设备可以是服务器。存储设备集群120是由至少两个存储设备120a组成的集合。存储设备集群120中的各存储设备120a中可以存储相同的数据,以避免单机故障造成的数据不可读的问题。
存储设备集群120中的存储设备120a可以接收终端110发送的操作请求,生成与操作请求相对应的提议编号。基于提议编号将本机的集群状态列表中的本机状态和对机镜像状态与存储设备集群中的相应对机进行状态协商同步,当本机的集群状态列表中包括提议编号的状态所对应存储设备的数量满足提议发起条件时,发起对应提议编号的提议,基于提议编号和相应的提议值,将本机的集群状态列表中的本机状态和对机镜像状态与存储设备集群中的相应对机进行状态协商同步;当本机的集群状态列表中包括提议编号的状态所对应存储设备的数量满足提议选中条件时,将提议值在存储设备120a提交至数据库。
图2为一个实施例中分布式系统的一致性实现方法的流程示意图。本实施例主要以该分布式系统的一致性实现方法应用于图1中存储设备集群中的存储设备120a来举例说明。参照图1,该方法具体包括如下步骤:
S202,接收操作请求。
其中,操作请求是指用户在客户端进行对数据库产生的操作请求。操作包括读操作和写操作。写操作是指对数据进行修改的操作,包括插入、删除、修改等。读操作包括对数据进行读取的操作。用户在客户端执行上述操作时,触发写操作请求。
S204,生成与操作请求相对应的准备阶段的提议编号。
分布式系统的一致性实现通常包括准备阶段和提议阶段。准备阶段获得存储设备集群中对提议编号的响应,提议阶段获得响应了提议编号的存储设备对提议的接收。
其中,准备阶段的提议编号表示与操作请求对应的提议被提出的顺序。存储设备集群中各存储设备需要达成一致,在各存储设备120a写入提议的提议值。提议值并不是狭义上的某个数,它根据操作请求生成,可以是一条日志,也可以是一条命令,根据应用场景不同,提议值具有不同的含义。
由于分布式的存储设备集群的各存储设备都有可能接收到对于同一个数据的操作请求,为区分,提议还包括准备阶段的提议编号。准备阶段的提议编号应当满足的要求包括:较高且唯一。较高是指大于本机历史最高的提议编号,其中,本机是指当前接受操作请求的存储设备。为避免同一集群中各存储设备产生相同的提议编号,保证提议编号的唯一性,准备阶段的提议编号除以存储设备集群中的存储设备的总数量的余数不同。
例如,在一个存储设备集群中包括A、B和C三台存储设备,存储设备A的准备阶段的提议编号可以为1、4、7、……,存储设备B的准备阶段的提议编号可以为2、5、8、……,存储设备C的准备阶段的提议编号可以为3、6、9、……。
S206,更新准备阶段的提议编号到本机的集群状态列表中的本机状态中。
集群状态列表是指存储在存储设备中用于记录存储设备集群中各存储设备的状态的列表。即存储设备集群中各存储设备都设置有集群状态列表,用于存储集群中各存储设备的状态。其中,状态包括准备阶段的提议编号m和提议p,p包括提议阶段的提议编号n和提议值v,对于已接收过提议的存储设备,p中的n通常为已接收提议的提议阶段的提议编号,v通常为已接收提议的提议值,对于同一个提议而言,准备阶段的提议编号通常与提议阶段的提议编号相同。在协商提议编号的准备阶段,提议的初始值为空,即更新后的本机状态为(m,{})。
S208,将本机的集群状态列表中的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据本机的集群状态列表获得存储设备集群中响应准备阶段的提议编号的存储设备的数量。
对机是指存储设备集群中与本机协商的其它存储设备。例如,在一个存储设备集群中包括A、B和C三台存储设备,其中,存储设备A为本机编号,则存储设备A的对机为存储设备B和存储设备C。准备阶段是在存储设备集群就提议编号进行状态协商的阶段。
存储设备集群的各存储设备都设置有镜像状态列表,用于存储集群中各设备的状态,其中,本机的集群状态列表包括本机状态和对机镜像状态,对机的集群状态列表包括对机状态和本机镜像状态。对机状态是指对机的集群状态列表中存储的对机自身状态,本机镜像状态是对机的集群状态列表所记录的本机的状态。对机镜像状态是指本机的集群状态列表所记录的对机的状态,本机状态是指本机的集群列表中存储的本机自身状态。
状态协商同步是指通过将各自存储的状态同步给对应存储设备,各存储设备接受状态较新的对应存储设备的状态并更新本地的集群状态列表,从而通过状态协商同步更新各存储设备的集群状态列表。例如,将本机的集群状态列表的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步。其中,相应对机是指与对机镜像状态对应的对机。例如,A机将A机的集群状态列表的A机状态和B机镜像状态,与存储设备集群中的B机的镜像状态列表中的A机镜像状态和B机状态进行同步,或者,A机将A机的集群状态列表的A机状态和C机镜像状态,与存储设备集群中的C机的镜像状态列表中的A机镜像状态和C机状态进行同步。
由于在该阶段,更新写入本机的状态主要为准备阶段的提议编号,故在该阶段通过状态协商同步就准备阶段的提议编号达成一致,通过本机的集群状态列表的各存储设备的准备阶段的提议编号,能够得到准备阶段的存储设备集群中响应准备阶段的提议编号的存储设备的数量。
S210,当响应准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应准备阶段的提议编号的提议,令提议阶段的提议编号等于准备阶段的提议编号,并将提议阶段的提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中。
在准备阶段的状态协商同步后,通过本机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量,能够确定响应该提议编号的存储设备存储中的存储设备的数量。
当本机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量满足提议发起条件时,发起对应准备阶段的提议编号的提议,令提议阶段的提议编号等于准备阶段的提议编号(即令n=m),将提议阶段的提议编号n和相应的提议值v更新到本机的集群状态列表所包括的本机状态中,更新后的本机状态为(m,{n.v})。
S212,将本机的集群状态列表中的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据本机的集群状态列表获得存储设备集群中接收提议的存储设备的数量。
提议阶段的状态协商同步是指通过将各自存储的状态的提议(包括提议阶段的提议和提议值)同步给对应存储设备,各存储设备接受状态较新的对应存储设备的状态并更新本地的集群状态列表,从而通过状态协商同步更新各存储设备的集群状态列表。由于在该阶段,更新写入本机的状态主要为提议(包括提议阶段的提议编号和提议值),故在该阶段通过状态协商同步就提议阶段的提议编号和提议值达成一致。通过本机的集群状态列表的各存储设备的提议阶段的提议编号和提议值,能够得到准备阶段的存储设备集群中接收提议的存储设备的数量。
S214,当接收提议的存储设备的数量满足提议选中条件时,将提议值提交至数据库。
在提议阶段的状态同步后,通过本机的集群状态列表中包括提议阶段的提议编号的状态所对应存储设备的数量,能够确定接受该提议的存储设备存储中的存储设备的数量。
存储设备集群的各存储设备分别维护有各自的数据库,在存储设备上执行本实施例的分布式系统的一致性实现方法,实现各数据库中数据的一致。当接收提议的存储设备的数量满足提议选中条件时,将提议值提交至本机的数据库,由数据库执行提议值对应的命令,例如将提议值提交至数据库后,数据库执行提议值对应的读操作请求对应的命令或是写操作请求对应的命令。
可以理解的是,通过协商同步,各存储设备的集群状态列表一致。对机可根据其集群状态列表,在接收提议的存储设备的数量满足提议选中条件时,将提议值提交至对机数据库,由数据库执行提议值对应的命令。
上述的分布式系统的一致性实现方法,存储设备集群中的存储设备存储有集群状态列表,先将与操作请求相对应的提议编号更新到本机状态中,进而将本机状态和对机镜像状态与存储设备集群中的相应对机的本机镜像状态和对机状态进行状态协商同步,可以通过状态的协商同步就提议编号达成一致以发起提议。提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中,再次进行状态协商同步,就可以在包括提议编号的状态所对应存储设备的数量满足提议选中条件时,就提议值达成一致,进而实现分布式系统的存储的一致性。通过状态的协商同步就可以高效地实现存储设备集群的一致性,降低了在分布式存储设备集群中实现一致发生的复杂度。
在一个实施例中,将本机的集群状态列表中的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据本机的集群状态列表获得存储设备集群中响应提议编号的存储设备的数量的步骤,包括以下步骤S1和S2:
S1:本机的集群状态列表中的本机状态的准备阶段的提议编号,大于存储设备集群中的相应对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号接受本机的集群状态列表中的本机状态的准备阶段的提议编号后,根据对机的集群状态列表的对机状态的提议编号和提议值更新本机的集群状态列表中的对机镜像状态。
S2:根据本机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量,确定存储设备集群中响应准备阶段的提议编号的存储设备的数量。
集群状态列表的各状态包括参数,分别是提议编号m和提议p,其中提议p包括已接受提议的提议阶段的提议编号n和提议值v。例如,本机存储设备A的初始状态为(4,{}),其中4为提议编号,{}表示p为空。又例如,对机存储设备B的对机状态为(4,{4,7}),该状态表示准备阶段的提议编号为4,已接受提议的提议阶段的提议编号为4,对应的提议值为7。
具体地,本机的集群状态列表中的本机状态的准备阶段的提议编号大于存储设备集群中的相应对机的集群状态列表中的本机镜像状态的准备阶段的提议编号时,使对应的本机镜像状态的准备阶段的提议编号接受本机状态的准备阶段的提议编号。
若对机的集群状态列表的对机状态的准备阶段的提议编号小于本机的集群状态列表的本机状态的准备阶段的提议编号,则表明对机暂时未收到其它存储设备的协商同步请求,则对机状态中的准备阶段的提议编号接受本机状态的准备阶段的提议编号,达到响应本机提出的协商同步请求的作用。
在对机的集群镜像状态列表中,对机接受本机状态后,对机状态已发生变化,为使本机记录的对机镜像状态与对机实际状态同步,对机将对机的集群状态列表的对机状态和本机镜像状态发送至本机,此时,对机同步至本机的本机镜像状态与本机的集群状态列表中的本机状态相同,故本机状态的准备阶段的提议编号不会发生变化。而对机同步的对机状态已发生变化(对机的集群状态列表的对机状态的准备阶段的提议编号大于本机的集群状态列表的对机镜像状态的准备阶段的提议编号),需要根据对机的集群状态列表的对机状态更新本机的集群状态列表的对机镜像状态,以使本机记录的对象镜像状态与对机实际状态一致。
由于在准备阶段的状态协商过程中,本机状态新于对机的集群镜像状态列表的对机状态时,对机状态接受本机状态,而本机状态包括准备阶段的提议编号。故在状态协商后,通过本机的镜像状态列表中,包括准备阶段的提议编号的状态的数据所对应的存储设备的数量能够得到响应了准备阶段的提议编号的存储设备的数量。
一个实施例的准备阶段的状态同步示意图如图3所示,本实施例中存储设备集群包括A、B和C三台存储设备,以A为本机,B为对机,本机的提议编号为5为例。在准备阶段的协商同步过程中,本机向存储设备集群中的各对机发送本机的集群状态列表中的本机状态(5,{})和对应对机的对机镜像状态(0,{})。对于对机而言,将其于自身存储的集群镜像状态列表中的对机状态和本机镜像状态与本机镜像列表中的本机状态进行比较。
在存储设备B的集群状态列表中,记录的对机B状态为(0,{}),记录的本机A的镜像状态为(0,{})(表示存储设备B未接受到提议)。由于存储设备A传递的记录的本机A状态的准备阶段的提议编号,大于对机B的集群状态列表中的对机B状态和本机A镜像状态的准备阶段的提议编号,对机B状态和本机A镜像状态的准备阶段的提议编号接收本机A状态的准备阶段的提议编号,即同步后的存储设备B的集群状态列表中对机B状态和本机A镜像状态的准备阶段的提议编号均为(5,{})。
对机B状态已发生变化,将对机B的集群状态列表中的对机B状态发送至本机A,本机A根据对机B状态同步本机A的集群状态列表中对机B镜像状态。
存储设备A根据集群状态列表,确定包括准备阶段的提议编号5的状态所对应的存储设备的数量,即响应了准备阶段的提议编号的存储设备的数量。
在一个实施例中,将本机的集群状态列表中的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据状态获得存储设备集群中接收提议的存储设备的数量的步骤,包括以下步骤S1至S2:
S1:本机的集群状态列表中的本机状态的提议值大于存储设备集群中的相应对机的集群状态列表中的本机镜像状态的提议值时,使对机的集群状态列表中的本机镜像状态的提议值接受本机的集群状态列表中的本机状态的提议值后,和/或本机的集群状态列表中的本机状态的提议阶段的提议编号大于或等于存储设备集群中的相应对机的集群状态列表中的对机状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值接受本机的集群状态列表中的本机状态的提议阶段的提议编号和提议值后,根据对应对机的集群状态列表的对机状态更新本机的集群状态列表中的对机镜像状态。
S2:根据本机的集群状态列表中包括提议阶段的提议编号的状态所对应存储设备的数量,确定存储设备集群中接受提议的存储设备的数量。
具体地,当本机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量满足提议发起条件时,即响应了准备阶段的提议编号的存储设备的数量满足提议地起条件时,发起对应提议编号的提议,将提议编号和相应的提议值(m,{n,v})更新到本机的集群状态列表所包括的本机状态中,更新后的本机状态包括P(n,v)。
本实施例中,在发起提议阶段,令本机的提议阶段的提议编号n等于准备阶段的提议编号m。
在提议阶段的协商同步过程中,对于对机而言,本机的集群状态列表中本机状态(主要是提议阶段的提议编号和提议值)必然新于对机的集群状态列表的本机镜像状态,则对机的集群镜像状态列表的本机镜像状态接受本机状态,使对机记录的本机状态与实际本机状态同步。
若对机的集群状态列表的对机状态中的准备阶段的提议编号等于本机的集群状态列表的本机状态的提议阶段的提议编号,则表明对机在准备阶段已接受本机状态,则对机的集群状态列表的对机状态接受本机状态(主要是提议阶段的提议编号和提议值),达到响应本机提出的协商同步请求的作用,以对提议值达成一致。
在对机的集群镜像状态列表中,对机接受本机状态后,对机状态已发生变化,为使本机记录的对机镜像状态与对机实际状态同步,对机将对机的集群状态列表的对机状态和本机镜像状态发送至本机,此时,对机同步至本机的本机镜像状态与本机的集群状态列表中的本机状态相同,故本机状态不会发生变化。而对机同步的对机状态已发生变化,需要根据对机的集群状态列表的对机状态更新本机的集群状态列表的对机镜像状态,以使本机记录的对象镜像状态与对机实际状态一致。
一个实施例的提议阶段的状态同步示意图如图4所示,以提议值v=9为例,本机向存储设备集群中的各对机发送本机的集群状态列表中的本机状态(5,{5,9})和对机B的镜像状态(5,{})。对于对机而言,接受本机的集群状态中的本机状态和对机镜像状态,将其与对机的集群镜像状态列表的对机状态和本机镜像状态和本机的镜像列表的本机状态进行比较。
由于本机A的集群状态列表中的本机A状态的提议值大于存储设备集群中的对机B的集群状态列表中的本机镜像状态的提议值,使对机B的集群状态列表中的本机镜像状态的提议值接受本机的集群状态列表中的本机状态的提议值,即同步的对机B的集群状态列表中,本机A的镜像状态同步为(5,{5,9})。
由于本机A的集群状态列表中的本机状态的提议阶段的提议编号等于存储设备集群中的对机B的集群状态列表中的对机状态的准备阶段的提议编号,使对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值接受本机的集群状态列表中的本机状态的提议阶段的提议编号和提议值,即对机B的对机状态为(5,{5,9})。
根据对机的集群状态列表的对机状态更新本机的集群状态列表中的对机镜像状态,同步后的本机A的集群状态列表中的对机镜像状态为(5,{5,9})。
由于在状态协商过程中,对机状态接受本机状态,而本机状态包括提议阶段的提议编号和提议值。故在状态协商后,通过本机的镜像状态列表中,包括提议编号的状态的数据所对应的存储设备的数量能够得到接受了提议的存储设备的数量。
上述的分布式系统的一致性实现方法,通过状态的提议编号和提议值的协商同步就可以高效地实现存储设备集群中各设备在准备阶段就提议编号达成一致,获得本机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量,从而在数量满足条件时发起提议,并在提议阶段就提议值达成一致,本机的集群状态列表中包括提议阶段的提议编号的状态所对应存储设备的数量,从而在数量满足条件时,将提议值在本机提交至数据库。该方法降低了状态协商同步的复杂度。
在一个实施例中,提议发起条件包括:响应准备阶段的提议编号的存储设备的数量占存储设备集群的存储设备总数量的一半以上,即包括准备阶段的提议编号的状态所对应存储设备的数量占存储设备集群的存储设备总数量的一半以上,即集群中多数派的存储设备接受提议编号。
通过设置集群中多数派的存储设备接受提议编号作为提议发起条件,能够避免同时多个提议冲突导致的写入不一致。
在另一个实施例中,提议选中条件包括:
接收提议的存储设备的数量占存储设备集群的存储设备总数量的一半以上,即包括提议阶段的提议编号的状态所对应存储设备的数量占存储设备集群的存储设备总数量的一半以上。即集群中多数派的存储设备接受提议,即出现频率最高且占一半以上的提议编号。
在一个实施例中,发起对应准备阶段的提议编号的提议,包括:
当本机的集群状态列表中各对机镜像状态的提议值不为空时,发起对应准备阶段的提议编号和最大提议阶段的提议编号对应的提议值的提议。即接收到的各对机设备的提议值不为空时,令v等于最大提议阶段的提议编号对应的提议值。
在再一个实施例中,接收操作请求的步骤之后,分布式系统的一致性实现方法还包括,生成与操作请求相对应的提议值。
发起对应准备阶段的提议编号的提议,包括:
当本机的集群状态列表中各对机镜像状态的提议值为空时,发起对应准备阶段的提议编号和生成的提议值的提议。即接收到各对机设备的提议值为空时,令v等于生成的提议值。
在另一个实施例中,存储设备A还可以接受方,接受其它存储设备发送的提议。以存储设备B作为操作请求的接收方为例。
一个实施例的分布式系统的一致性实现方法的流程示意图如图5所示,包括以下步骤:
S502,接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行准备阶段的协商同步,使对机根据对机的集群状态列表获得响应其准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应准备阶段的提议编号的提议,令提议阶段的提议编号等于准备阶段的提议编号,并将提议阶段的提议编号和相应的提议值更新到对机的集群状态列表所包括的对机状态中。
其中,对机是指存储设备集群中与本机协商的其它存储设备。本实施例中的对机为提议发起方。
对机作为提议发起方,根据接收的操作请求,生成与操作请求对应的准备阶段的提议编号,并更新准备阶段的提议编号到对机的集群状态列表中的对机状态中。
对机的集群状态列表包括对机状态和本机镜像状态,本机镜像状态是指对机的集群状态列表所记录的本机的状态。状态协商同步是指通过将各自存储的状态同步给对应存储设备,各存储设备接受状态较新的对应存储设备的状态并更新本地的集群状态列表,从而通过状态协商同步更新各存储设备的集群状态列表。由于在该阶段,更新写入本机的状态主要为对机的准备阶段的提议编号,故在该阶段通过状态协商同步就准备阶段的提议编号达成一致,通过对机的集群状态列表的各存储设备的准备阶段的提议编号,能够得到准备阶段的存储设备集群中响应准备阶段的提议编号的存储设备的数量。
在准备阶段的状态协商同步后,通过对机的集群状态列表中包括其准备阶段的提议编号的状态所对应存储设备的数量,能够确定响应该提议编号的存储设备存储中的存储设备的数量。
当对机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量满足提议发起条件时,发起对应准备阶段的提议编号的提议,令提议阶段的提议编号等于准备阶段的提议编号,并将提议阶段的提议编号n和相应的提议值v更新到对机的集群状态列表所包括的对机状态中,更新后的对机状态为(m,{n,v})。
S504,接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行提议阶段的协商同步,以根据本机的集群状态列表获得存储设备集群中接收提议的存储设备的数量。
提议阶段的状态协商同步是指通过将各自存储的状态的提议(包括提议阶段的提议和提议值)同步给对应存储设备,各存储设备接受状态较新的对应存储设备的状态并更新本地的集群状态列表,从而通过状态协商同步更新各存储设备的集群状态列表。由于在该阶段,更新写入对机的状态主要为提议(包括提议阶段的提议编号和提议值),故在该阶段通过状态协商同步就提议阶段的提议编号和提议值达成一致。通过本机的集群状态列表的各存储设备的提议阶段的提议编号和提议值,能够得到准备阶段的存储设备集群中接收提议的存储设备的数量。
S506,当接收提议的存储设备的数量满足提议选中条件时,将提议值提交至数据库。
在提议阶段的状态同步后,通过本机的集群状态列表中包括提议阶段的提议编号的状态所对应存储设备的数量,能够确定接受该提议的存储设备存储中的存储设备的数量。
当本机的集群状态列表中包括准备阶段提议编号的状态所对应存储设备的数量满足提议选中条件时,将提议值提交至数据库。
可以理解的是,通过协商同步,各存储设备的集群状态列表一致。本机或其它对机可根据其集群状态列表,在包括提议阶段的提议编号的状态所对应存储设备的数量满足提议选中条件时,将提议值提交至数据库。
具体地,接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行准备阶段的协商同步的步骤,包括:
接收对机的集群状态列表的对机状态和本机镜像状态;
当对机状态的准备阶段的提议编号大于本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号时,本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号接受对机状态的准备阶段的提议编号后,将本机的集群状态列表中本机状态的已接收提议的提议阶段的提议编号和提议值更新对机的集群状态列表中的本机镜像状态。
具体地,若本机的集群状态列表的本机状态的准备阶段的提议编号小于对机的集群状态列表的对机状态准备阶段的提议编号,则表明本机暂时未收到其它存储设备的协商同步请求,则本机的集群状态列表的本机状态中的准备阶段的提议编号接受对机状态的准备阶段的提议编号,达到响应对机提出的协商同步请求的作用。
在本机的集群镜像状态列表中,本机接受对机状态后,本机状态已发生变化,为使对机记录的本机镜像状态与本机实际状态同步,本机将本机的集群状态列表的本机状态和对机镜像状态发送至对机,此时,本机同步至对机的对机镜像状态与对机的集群状态列表中的对机状态相同,故对机状态的准备阶段的提议编号不会发生变化。而对机同步的本机状态已发生变化(本机的集群状态列表的本机状态的准备阶段的提议编号大于对机的集群状态列表的本机镜像状态的准备阶段的提议编号),需要根据本机的集群状态列表的本机状态更新对机的集群状态列表的本机镜像状态,以使本机记录的对象镜像状态与对机实际状态一致。
由于在准备阶段的状态协商过程中,对机状态新于本机的集群镜像状态列表的本机状态时,本机状态接受对机状态,而本机状态包括准备阶段的提议编号。故在状态协商后,通过对机的镜像状态列表中,包括准备阶段的提议编号的状态的数据所对应的存储设备的数量能够得到响应了准备阶段的提议编号的存储设备的数量。
具体地,接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行提议阶段的协商同步,以根据本机的集群状态列表获得存储设备集群中接收提议的存储设备的数量的步骤,包括:
接收对机的集群状态列表的对机状态和本机镜像状态;
当接收到的对机状态的提议值大于对应的对机在本机的集群状态列表的对机镜像状态的提议值时,本机的集群状态列表的对机镜像状态的提议值接受对机的集群状态列表的对机状态的提议值,和/或,对机的集群状态列表中的对机状态的提议阶段的提议编号大于或等于本机的集群状态列表中的本机状态的准备阶段的提议编号时,本机状态的提议阶段的提议编号和提议值接受对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值;
向对应对机发送本机状态以更新对机的集群状态列表中的本机镜像状态。
在提议阶段的协商同步过程中,对于本机而言,对机的集群状态列表中对机状态(主要是提议阶段的提议编号和提议值)必然新于本机的集群状态列表的对机镜像状态,则本机的集群镜像状态列表的对机镜像状态接受对机状态,使本机记录的对机镜像状态与实际对机状态同步。
若本机的集群状态列表的本机状态中的准备阶段的提议编号等于对机的集群状态列表的对机状态的提议阶段的提议编号,则表明本机在准备阶段已接受对机状态,则本机的集群状态列表的本机状态接受对机状态(主要是提议阶段的提议编号和提议值),达到响应对机提出的协商同步请求的作用,以对提议值达成一致。
在本机的集群镜像状态列表中,本机接受对机状态后,本机状态已发生变化,为使对机记录的本机镜像状态与本机实际状态同步,本机将本机的集群状态列表的本机状态和对机镜像状态发送至对机,此时,本机同步至对机的对机镜像状态与对机的集群状态列表中的对机状态相同,故对机状态不会发生变化。而本机同步的本机状态已发生变化(本机的集群状态列表的本机状态的提议值大于对机的集群状态列表的本机镜像状态的提议值),需要根据本机的集群状态列表的本机状态更新对机的集群状态列表的本机镜像状态,以使对机记录的对象镜像状态与本机实际状态一致。
上述的分布式系统的一致性实现方法,不仅可以作为提议发起方,还可以作为提议接收方,就提议值达成一致。本机作为提议发起方和提议接收方时,状态交互的协议处理方式相同,降低了状态交互的复杂度。
在其它的实施例中,各存储设备在每次更新自身状态后,查看自身状态是否有变更,若是,则将变更后的自身状态写入Plog存储引擎,以本地持久化保存存储设备的状态,防止异常故障造成数据损失。
本实施例中为便于对集群中的异常情况进行处理,以统一处理集群中各存储设备的状态交互协议,本实施例中定义了生成提议编号的函数issue(m),发起提议的函数issue(p),状态同步的函数on message、状态更新的函数updatestate,和判断v是否被选择的函数Isvaluechoosen。
发起提议和响应提议的存储设备均可调用上述函数。为方便描述,以下的本机指的是在一个状态交互的过程中接收到状态以进行同步的存储设备,对机为在一个状态交互的过程中发送状态以进行同步的存储设备。可以理解的是,在一个状态协商同步的过程中,一个存储设备会发送状态至对方,也会接收对方的状态以进行状态协商同步。
具体地,生成提议编号的函数issue(m),生成的准备阶段的提议编号应当大于本机历史最大的提议编号,并将提议编号写入本机状态中,将本机状态写入Plog存储引擎。
发起提议的函数issue(p),令提议阶段的提议编号=准备阶段的提议编号。当包括准备阶段的提议编号的状态所对应存储设备的数量占存储设备集群的存储设备总数量的一半以上(多数派的存储设备的状态的提议编号为m),若本机的集群状态列表中各对机镜像状态的提议值不为空,发起对应提议编号和最大提议编号对应的提议值的提议,或若本机的集群状态列表中各对机镜像状态的提议值为空,发起对应提议编号和生成的提议值的提议。将提议编号和对应的提议值写入本机状态。
状态同步的函数on message,接收对机的对机状态和本机镜像状态,调用状态更新的函数更新本机状态和对机镜像状态。若本机状态变化,将变化的状态写入Plog存储引擎。调用判断v是否被选择的函数Isvaluechoosen判断v是否被选择,若是,则将对应的提议值写入本机状态。若更新后的本机状态比接收到的本机镜像状态更新(包括提议编号和提议值),则将本机状态同步至对机。
状态更新的函数updatestate,该函数用于判断接收到的状态是否新于本机的状态。包括:
若接收到的对机状态的准备阶段的提议编号大于本机存储的对机镜像状态的准备阶段的提议编号时,令本机存储的对机镜像状态的准备阶段的提议编号=接收到的对机状态的准备阶段的提议编号。
若接收到的对机状态的提议阶段的提议编号大于本机存储的对机镜像状态的提议阶段的提议编号时,令本机存储的对机镜像状态的提议阶段的提议编号和提议值=接收到的对机状态的提议阶段的提议编号和提议值。
若接收到的对机状态的准备阶段的提议编号大于本机状态的准备阶段的提议编号时,令本机状态的准备阶段的提议编号=对机状态的准备阶段的提议编号。
若提议阶段,接收到的对机状态的提议阶段的提议编号大于或等于本机状态的准备阶段的提议编号,以本机状态的提议阶段的提议编号和提议值=对机状态的提议阶段的提议编号和提议值。
判断v是否被选择的函数Isvaluechoosen,包括具有出现概率最大的提议编号n,且n占存储设备的数量的一半以上。
图6为一个实施例的分布式系统的一致性实现方法的交互图。本实施例以存储设备集群包括A、B和C三台存储设备,以请求至存储设备A上为例进行说明。
该方法包括以下步骤:
S602,接收操作请求。
S604,构造与操作请求对应的提议值V。
S606,调用生成提议编号的函数issue(m),生成的准备阶段的提议编号应当大于本机历史最大的提议编号,并将准备阶段的提议编号写入本机状态中,将本机状态写入Plog存储引擎。
具体地,更新准备阶段的提议编号到存储设备A的本机状态中,并写入Plog存储引擎,以本地持久化保存存储设备A的本机状态,防止异常故障造成数据损失。
S608,调用状态同步的函数on message,向B机发送A机镜像状态列表的A本机状态及B机镜像状态,向C机发送A机镜像状态列表的A本机状态及C机镜像状态。
S610,B机调用状态更新的函数updatestate更新本机状态和对机镜像状态。
B机根据A机镜像状态列表的A本机状态及B机镜像状态,当接收到的A本机状态的准备阶段的提议编号大于B机状态的准备阶段的提议编号时,B本机状态的准备阶段的提议编号接收A本机状态的准备阶段的提议编号。当接收到的A本机状态的准备阶段的提议编号大于A机镜像状态的准备阶段的提议编号时,A机镜像状态的准备阶段的提议编号接受A本机状态的准备阶段的提议编号。可以理解的是,在准备阶段的状态协商同步过程中,主要就提议编号进行协商同步。由于状态交互协议进行了统一,在实际处理时,对于updatedate函数中的其它判断,B机也会执行(其它的判断为否则不成立)。由于状态交互协议进行了统一,即使在存储设备异常恢复后,仍能全部每个函数中的相应判断,以对异常情况进行处理。
C机的处理方式与B机相同,此处不再赘述。
S612,当更新后的B本机状态有变化时,写入PLOG存储引擎。
S614,调用状态同步的函数on message,向A机发送B本机状态和A机镜像状态。
S616,A机调用状态更新的函数updatestate更新本机状态和对机镜像状态。
具体地,在这一阶段,产生变化的为B本机状态,与A中B机镜像状态不一致,根据B机状态的提议编号和提议值更新A机的集群状态列表中的B机镜像状态。
S618,更新后A本机状态是否有变化,若是,写入PLOG存储引擎,并再次进行状态同步。本实施例中,更新后A本机状态无变化。
S620,调用状态更新的函数updatestate更新本机状态和对机镜像状态令n=m,根据镜像状态列表判断m是否被多数派接受。本实施例中的多数派是指包括准备阶段的提议编号的状态所对应存储设备的数量占存储设备集群的存储设备总数量的一半以上。
若是,则发起提议P(n,v)。其中,当本机的集群状态列表中的提议值不为空时,发起对应提议编号和最大提议编号对应的提议值的提议,当本机的集群状态列表中的提议值为空时,发起对应提议编号和生成的提议值的提议。
S622,将提议阶段的提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中,并写入Plog存储引擎。
S624,调用状态同步的函数on message,A机发送A本机状态和B机镜像状态至B机。
S626,调用状态更新的函数updatestate,更新本机状态和对机镜像状态。如果接收到A本机状态新于B机中A机镜像状态,根据接收到的A本机状态更新B机中A的镜像状态,如果接收到的A本机状态新于B本机状态,根据接收到的A本机状态更新B本机头状态。
具体地,A本机状态的提议值新于B机中的A机镜像状态的提议值时,B机中A机镜像状态的提议值接受A本机状态的提议值。B本机状态的提议编号等于A本机状态的提议值时,B本机状态的提议阶段的提议编号和提议值接受A本机状态的提议阶段的提议编号和提议值。
S628,更新后B的状态是否有变化,若有,写入PLOG存储引擎。
S630,调用判断v是否被选择的函数Isvaluechoosen,根据集群状态列表,判断V是否被选择,即包括提议编号的状态所对应存储设备的数量占存储设备集群的存储设备总数量的一半以上。若是,则执行S632。
S632,将提议值在B机提交至数据库。
S634,调用状态同步的函数on message,B机发送B本机状态和A机镜像状态至A机。
S636,调用状态更新的函数updatestate,更新本机状态和对机镜像状态。如果接收到B本机状态新于A中B机镜像状态,根据接收到的B的状态更新B机镜像状态,如果接收到B本机状态新于A本机状态,根据B本机状态更新A本机状态。
具体地,B本机状态在B机更新,根据接收到的B机状态的提议值更新A机中B机镜像状态的提议值。
S638,更新后A的状态是否有变化,若有,写入PLOG存储引擎。
S640,调用判断v是否被选择的函数Isvaluechoosen,根据集群状态列表,判断V是否被选择,即包括提议编号的状态所对应存储设备的数量占存储设备集群的存储设备总数量的一半以上。若是,则执行S642。
S642,将提议值在A机提交至数据库。
上述的分布式系统的一致性实现方法,通过存储每台机完整状态镜像的方法,状态同步不仅可以将自身状态完整地同步给对机,还可以携带对机的状态镜像,以此简化分布式存储设备集群数据一致性的实现难度。
一种分布式系统的一致性实现装置,如图7所示,包括:接收模块702,生成模块704,更新模块706、同步模块708、提议模块710和提交模块712。
接收模块702,用于接收操作请求。
生成模块704,用于生成与操作请求相对应的准备阶段的提议编号。
更新模块706,用于更新准备阶段的提议编号到本机的集群状态列表中的本机状态中。
同步模块708,用于将本机的集群状态列表中的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据本机的集群状态列表获得存储设备集群中响应准备阶段的提议编号的存储设备的数量。
提议模块710,用于当响应准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应准备阶段的提议编号的提议,令提议阶段的提议编号等于准备阶段的提议编号,并将提议阶段的提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中。
同步模块708,还用于将本机的集群状态列表中的本机状态和对机镜像状态,与存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据本机的集群状态列表获得存储设备集群中接收提议的存储设备的数量。
提交模块712,用于当接收提议的存储设备的数量满足提议选中条件时,将提议值提交至数据库。
上述的分布式系统的一致性实现装置,存储设备集群中的存储设备存储有集群状态列表,先将与操作请求相对应的提议编号更新到本机状态中,进而将本机状态和对机镜像状态与存储设备集群中的相应对机进行状态协商同步,可以通过状态的协商同步就提议编号达成一致以发起提议。提议编号和相应的提议值更新到本机的集群状态列表所包括的本机状态中,再次进行状态协商同步,就可以在包括提议编号的状态所对应存储设备的数量满足提议选中条件时,就提议值达成一致,进而实现分布式系统的存储的一致性。通过状态的协商同步就可以高效地实现存储设备集群的一致性,降低了在存储设备集群中实现写一致性的复杂度。
在另一个实施例中,同步模块708,用于在本机的集群状态列表中的本机状态的准备阶段的提议编号大于存储设备集群中的相应对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号接受本机的集群状态列表中的本机状态的准备阶段的提议编号后,根据对应对机的集群状态列表的对机状态的准备阶段的提议编号和提议值更新本机的集群状态列表中的对机镜像状态;根据本机的集群状态列表中包括准备阶段的提议编号的状态所对应存储设备的数量,确定存储设备集群中响应准备阶段的提议编号的存储设备的数量。
在再一个实施例中,同步模块708,用于在本机的集群状态列表中的本机状态的提议值大于存储设备集群中的相应对机的集群状态列表中的本机镜像状态的提议值时,使对机的集群状态列表中的本机镜像状态的提议值接受本机的集群状态列表中的本机状态的提议值后,和/或本机的集群状态列表中的本机状态的提议阶段的提议编号大于或等于存储设备集群中的相应对机的集群状态列表中的对机状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值接受本机的集群状态列表中的本机状态的提议阶段的提议编号和提议值后,根据对应对机的集群状态列表的对机状态更新本机的集群状态列表中的对机镜像状态;根据本机的集群状态列表中包括提议阶段的提议编号的状态所对应存储设备的数量,确定存储设备集群中接受提议的存储设备的数量。
在一个实施例中,提议发起条件包括:响应准备阶段的提议编号的存储设备的数量占存储设备集群的存储设备总数量的一半以上;和/或,
提议选中条件包括:接收提议的存储设备的数量占存储设备集群的存储设备总数量的一半以上。
在又一个实施例中,提议模块,用于当本机的集群状态列表中各对机镜像状态的提议值不为空时,发起对应准备阶段的提议编号和最大提议阶段的提议编号对应的提议值的提议。
在再一个实施列中,生成模块,还用于生成与操作请求相对应的提议值;提议模块,用于当本机的集群状态列表中各对机镜像状态的提议值为空时,发起对应准备阶段的提议编号和生成的提议值的提议。
在一个实施例中,存储设备A还可以接受方,接受其它存储设备发送的提议。以存储设备B作为操作请求的接收方为例,存储设备B为提议的主机,存储设备A作为存储设备B的对机。
在该实施例中,同步模块708,还用于接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行准备阶段的协商同步,使对机根据对机的集群状态列表获得响应其准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应准备阶段的提议编号的提议,令提议阶段的提议编号等于准备阶段的提议编号,并将提议阶段的提议编号和相应的提议值更新到对机的集群状态列表所包括的对机状态中;接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行提议阶段的协商同步,以根据本机的集群状态列表获得存储设备集群中接收提议的存储设备的数量。
提交模块712,用于当接收提议的存储设备的数量满足提议选中条件时,将提议值提交至数据库。
在再一个实施例中,同步模块708,还用于接收对机的集群状态列表的对机状态和本机镜像状态,当对机状态的准备阶段的提议编号大于本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号时,本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号接受对机状态的准备阶段的提议编号后,将本机的集群状态列表中本机状态的已接收提议的提议阶段的提议编号和提议值更新对机的集群状态列表中的本机镜像状态。
在又一个实施例中,同步模块708,还用于接收对机的集群状态列表的对机状态和本机镜像状态;当接收到的对机状态的提议值大于对应的对机在本机的集群状态列表的对机镜像状态的提议值时,本机的集群状态列表的对机镜像状态的提议值接受对机的集群状态列表的对机状态的提议值,和/或,对机的集群状态列表中的对机状态的提议阶段的提议编号大于或等于相应本机的集群状态列表中的本机状态的准备阶段的提议编号时,本机状态的提议阶段的提议编号和提议值接受对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值;向对应对机发送本机状态以更新对机的集群状态列表中的本机镜像状态。
基于上述的实施例,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述各实施的分布式系统的一致性实现方法的步骤。
图8为一个实施例中计算机设备的内部结构示意图。该计算机设备可以是服务器。参照图8,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该计算机设备的非易失性存储介质可存储操作系统和计算机程序,该计算机程序被执行时,可使得处理器执行一种分布式系统的一致性实现方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种分布式系统的一致性实现方法。计算机设备的网络接口用于进行网络通信。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
基于上述的实施例,本发明还提供一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现上述各实施例的分布式系统的一致性实现方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性的计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种分布式系统的一致性实现方法,应用于存储设备集群的存储设备,其特征在于,包括:
接收操作请求;
生成与所述操作请求相对应的准备阶段的提议编号;
更新所述准备阶段的提议编号到本机的集群状态列表中的本机状态中;
将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中响应所述准备阶段的提议编号的存储设备的数量;
当响应所述准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应所述准备阶段的提议编号的提议,令提议阶段的提议编号等于所述准备阶段的提议编号,并将所述提议阶段的提议编号和相应的提议值更新到所述本机的集群状态列表所包括的本机状态中;
将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量;
当接收所述提议的存储设备的数量满足提议选中条件时,将所述提议值提交至数据库。
2.根据权利要求1所述的方法,其特征在于,将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中响应所述提议编号的存储设备的数量的步骤,包括:
所述本机的集群状态列表中的本机状态的准备阶段的提议编号,大于所述存储设备集群中的相应对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号接受所述本机的集群状态列表中的本机状态的准备阶段的提议编号后,根据对应对机的集群状态列表的对机状态的准备阶段的提议编号和提议值更新本机的集群状态列表中的对机镜像状态;
根据所述本机的集群状态列表中包括所述准备阶段的提议编号的状态所对应存储设备的数量,确定所述存储设备集群中响应所述准备阶段的提议编号的存储设备的数量。
3.根据权利要求1所述的方法,其特征在于,将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据状态获得所述存储设备集群中接收所述提议的存储设备的数量的步骤包括:
所述本机的集群状态列表中的本机状态的提议值大于所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态的提议值时,使对机的集群状态列表中的本机镜像状态的提议值接受所述本机的集群状态列表中的本机状态的提议值后,和/或本机的集群状态列表中的本机状态的提议阶段的提议编号大于或等于所述存储设备集群中的相应对机的集群状态列表中的对机状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值接受所述本机的集群状态列表中的本机状态的提议阶段的提议编号和提议值后,根据对应对机的集群状态列表的对机状态更新本机的集群状态列表中的对机镜像状态;
根据所述本机的集群状态列表中包括所述提议阶段的提议编号的状态所对应存储设备的数量,确定所述存储设备集群中接受所述提议的存储设备的数量。
4.根据权利要求1所述的方法,其特征在于,接收操作请求的步骤之后,所述方法还包括,生成与所述操作请求相对应的提议值;
发起对应所述准备阶段的提议编号的提议的步骤,包括:
当所述本机的集群状态列表中各对机镜像状态的提议值不为空时,发起对应所述准备阶段的提议编号和最大提议阶段的提议编号对应的提议值的提议;
当所述本机的集群状态列表中各对机镜像状态的提议值为空时,发起对应所述准备阶段的提议编号和生成的提议值的提议。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行准备阶段的协商同步;使对机根据对机的镜像状态列表获得响应其准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应所述准备阶段的提议编号的提议,令提议阶段的提议编号等于所述准备阶段的提议编号,并将所述提议阶段的提议编号和相应的提议值更新到所述对机的集群状态列表所包括的对机状态中;
接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行提议阶段的协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量;
当接收所述提议的存储设备的数量满足提议选中条件时,将所述提议值提交至数据库。
6.根据权利要求5所述的方法,其特征在于,接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行准备阶段的协商同步的步骤,包括:
接收对机的集群状态列表的对机状态和本机镜像状态;
当所述对机状态的准备阶段的提议编号大于本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号时,所述本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号接受所述对机状态的准备阶段的提议编号后,将本机的集群状态列表中所述本机状态的已接收提议的提议阶段的提议编号和提议值更新对机的集群状态列表中的本机镜像状态。
7.根据权利要求5所述的方法,其特征在于,接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行提议阶段的协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量的步骤,包括:
接收对机的集群状态列表的对机状态和本机镜像状态;
当接收到的对机状态的提议值大于对应的对机在本机的集群状态列表的对机镜像状态的提议值时,本机的集群状态列表的对机镜像状态的提议值接受对机的集群状态列表的对机状态的提议值,和/或,对机的集群状态列表中的对机状态的提议阶段的提议编号大于或等于本机的集群状态列表中的本机状态的准备阶段的提议编号时,所述本机状态的提议阶段的提议编号和提议值接受对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值;
向对应对机发送本机状态以更新对机的集群状态列表中的本机镜像状态。
8.一种分布式系统的一致性实现装置,其特征在于,应用于存储设备集群的存储设备,所述装置包括:接收模块,生成模块,更新模块、同步模块、提议模块和提交模块;
所述接收模块,用于接收操作请求;
所述生成模块,用于生成与所述操作请求相对应的准备阶段的提议编号;
所述更新模块,用于更新所述准备阶段的提议编号到本机的集群状态列表中的本机状态中;
所述同步模块,用于将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行准备阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中响应所述准备阶段的提议编号的存储设备的数量;
所述提议模块,用于当响应所述准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应所述准备阶段的提议编号的提议,令提议阶段的提议编号等于所述准备阶段的提议编号,并将所述提议阶段的提议编号和相应的提议值更新到所述本机的集群状态列表所包括的本机状态中;
所述同步模块,还用于将所述本机的集群状态列表中的本机状态和对机镜像状态,与所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态和对机状态进行提议阶段的状态协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量;
所述提交模块,用于当接收所述提议的存储设备的数量满足提议选中条件时,将所述提议值提交至数据库。
9.根据权利要求8所述的装置,其特征在于,所述同步模块,用于在所述本机的集群状态列表中的本机状态的准备阶段的提议编号,大于所述存储设备集群中的相应对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态或本机镜像状态的准备阶段的提议编号接受所述本机的集群状态列表中的本机状态的准备阶段的提议编号后,根据对应对机的集群状态列表的对机状态的准备阶段的提议编号和提议值更新本机的集群状态列表中的对机镜像状态;根据所述本机的集群状态列表中包括所述准备阶段的提议编号的状态所对应存储设备的数量,确定所述存储设备集群中响应所述准备阶段的提议编号的存储设备的数量。
10.根据权利要求8所述的装置,其特征在于,所述同步模块,用于在所述本机的集群状态列表中的本机状态的提议值大于所述存储设备集群中的相应对机的集群状态列表中的本机镜像状态的提议值时,使对机的集群状态列表中的本机镜像状态的提议值接受所述本机的集群状态列表中的本机状态的提议值后,和/或本机的集群状态列表中的本机状态的提议阶段的提议编号大于或等于所述存储设备集群中的相应对机的集群状态列表中的对机状态的准备阶段的提议编号时,使对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值接受所述本机的集群状态列表中的本机状态的提议阶段的提议编号和提议值后,根据对应对机的集群状态列表的对机状态更新本机的集群状态列表中的对机镜像状态;根据所述本机的集群状态列表中包括所述提议阶段的提议编号的状态所对应存储设备的数量,确定所述存储设备集群中接受所述提议的存储设备的数量。
11.根据权利要求8所述的装置,其特征在于,所述同步模块,还用于接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行准备阶段的协商同步;使对机根据对机的集群状态列表获得响应其准备阶段的提议编号的存储设备的数量满足提议发起条件时,发起对应所述准备阶段的提议编号的提议,令提议阶段的提议编号等于所述准备阶段的提议编号,并将所述提议阶段的提议编号和相应的提议值更新到所述对机的集群状态列表所包括的对机状态中;接收对机的镜像状态列表中的对机状态和本机镜像状态,并将本机的镜像状态列表中的本机状态和对机镜像状态,与对应对机的镜像状态列表中的对机状态和本机镜像状态进行提议阶段的协商同步,以根据所述本机的集群状态列表获得所述存储设备集群中接收所述提议的存储设备的数量;
所述提交模块,用于当接收所述提议的存储设备的数量满足提议选中条件时,将所述提议值提交至数据库。
12.根据权利要求11所述的装置,其特征在于,所述同步模块,还用于接收对机的集群状态列表的对机状态和本机镜像状态,当所述对机状态的准备阶段的提议编号大于本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号时,所述本机的镜像状态列表的本机状态或对机镜像状态的准备阶段的提议编号接受所述对机状态的准备阶段的提议编号后,将本机的集群状态列表中所述本机状态的已接收提议的提议阶段的提议编号和提议值更新对机的集群状态列表中的本机镜像状态。
13.根据权利要求11所述的装置,其特征在于,所述同步模块,还用于接收对机的集群状态列表的对机状态和本机镜像状态;当接收到的对机状态的提议值大于对应的对机在本机的集群状态列表的对机镜像状态的提议值时,本机的集群状态列表的对机镜像状态的提议值接受对机的集群状态列表的对机状态的提议值,和/或,对机的集群状态列表中的对机状态的提议阶段的提议编号大于或等于本机的集群状态列表中的本机状态的准备阶段的提议编号时,所述本机状态的提议阶段的提议编号和提议值接受对机的集群状态列表中的对机状态的提议阶段的提议编号和提议值;向对应对机发送本机状态以更新对机的集群状态列表中的本机镜像状态。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述的分布式系统的一致性实现方法的步骤。
15.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现权利要求1至7任一项所述的分布式系统的一致性实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710740263.XA CN109426435B (zh) | 2017-08-25 | 2017-08-25 | 分布式系统的一致性实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710740263.XA CN109426435B (zh) | 2017-08-25 | 2017-08-25 | 分布式系统的一致性实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109426435A CN109426435A (zh) | 2019-03-05 |
CN109426435B true CN109426435B (zh) | 2021-04-20 |
Family
ID=65501101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710740263.XA Active CN109426435B (zh) | 2017-08-25 | 2017-08-25 | 分布式系统的一致性实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109426435B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110636112A (zh) * | 2019-08-22 | 2019-12-31 | 达疆网络科技(上海)有限公司 | Es双集群解决方案及数据最终一致性的实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
US9720619B1 (en) * | 2012-12-19 | 2017-08-01 | Springpath, Inc. | System and methods for efficient snapshots in a distributed system of hybrid storage and compute nodes |
-
2017
- 2017-08-25 CN CN201710740263.XA patent/CN109426435B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720619B1 (en) * | 2012-12-19 | 2017-08-01 | Springpath, Inc. | System and methods for efficient snapshots in a distributed system of hybrid storage and compute nodes |
CN103268318A (zh) * | 2013-04-16 | 2013-08-28 | 华中科技大学 | 一种强一致性的分布式键值数据库系统及其读写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109426435A (zh) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106331098B (zh) | 一种服务器集群系统 | |
KR101752928B1 (ko) | 객체 저장부들의 네트워크상의 스웜-기반의 동기화 | |
EP3937051A1 (en) | Methods and apparatuses for processing transactions based on blockchain integrated station | |
CN110874384B (zh) | 数据库集群扩缩容的方法、装置和系统 | |
US20190238414A1 (en) | Online capacity-expanding and online capacity-reducing methods and apparatuses for distributed consensus system | |
EP3937053B1 (en) | Methods and apparatuses for transferring transaction based on blockchain integrated station | |
TWI716822B (zh) | 事務因果序的校正方法及裝置、電子設備 | |
CN109426435B (zh) | 分布式系统的一致性实现方法和装置 | |
CN111857772B (zh) | 终端边缘应用程序远程传输及动态加载方法及设备 | |
CN112003943A (zh) | 语音数据同步方法和装置 | |
CN110928952A (zh) | 基于区块链的数据同步方法及装置 | |
CN108874947B (zh) | 一种数据处理系统及数据处理方法 | |
CN113452770A (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN110581892B (zh) | 基于区块链的网络连接及恢复机制 | |
CN113297236A (zh) | 分布式一致性系统中主节点的选举方法、装置及系统 | |
CN112019614A (zh) | 双系统之间通信与通信同步的方法、系统与处理器 | |
US10356220B2 (en) | Information processing apparatus, method for controlling information processing apparatus, and storage medium | |
CN116360954A (zh) | 基于云边协同技术的工业物联网管控方法和管控系统 | |
JP2005534099A (ja) | データベースの同期 | |
CN109005203B (zh) | 数据同步方法及装置、存储介质、处理器、终端 | |
CN107277099B (zh) | 信息处理装置及信息处理装置的控制方法 | |
CN113055444B (zh) | 一种文件共享方法及其相关装置 | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN111083068A (zh) | 一种聚合链路收敛方法、装置及存储介质 | |
CN112769824B (zh) | 一种信息传输状态更新方法、终端、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |