分布式系统、数据同步与节点管理方法、设备及存储介质与流程

文档序号:20918110发布日期:2020-05-29 13:47阅读:224来源:国知局
分布式系统、数据同步与节点管理方法、设备及存储介质与流程

本申请涉及数据库技术领域,尤其涉及一种分布式系统、数据同步与节点管理方法、设备及存储介质。



背景技术:

在分布式系统中,大多数节点的数据保持同步,其中部分节点故障,其它节点可继续使用,系统仍处于可用状态,系统具有较高的可靠性。对分布式系统来说,保证可靠性的关键就是多数节点之间数据的一致性问题。

在现有技术中,借助于预写日志(write-aheadlogging,wal)系统,通过同步wal日志在多数节点之间保证数据的一致性,但是具有一定延迟。



技术实现要素:

本申请的多个方面提供一种分布式系统、数据同步与节点管理方法、设备及存储介质,用以降低数据同步的延迟,提高数据同步效率,实现多数节点之间数据的一致性。

本申请实施例提供一种分布式系统,包括:领导节点设备和非领导节点设备,所述领导节点设备和非领导节点设备具有非易失性nvm内存;所述领导节点设备面向客户端,用于将客户端提交的数据写入自身的nvm内存中,并向所述非领导节点设备同步自身nvm内存中的数据;所述非领导节点设备,用于将所述领导节点设备同步的数据写入自身nvm内存中。

本申请实施例还提供一种数据同步方法,适用于分布式系统中的领导节点设备,所述方法包括:确定需要向分布式系统中的非领导节点设备同步自身nvm内存中的数据;向所述非领导节点设备同步自身nvm内存中的数据,以供所述非领导节点设备将同步的数据写入其nvm内存中。

本申请实施例还提供一种数据同步方法,适用于分布式系统中的非领导节点设备,所述方法包括:接收分布式系统中的领导节点设备从其nvm内存中同步的数据;将所述领导节点设备同步的数据写入自身nvm内存中。

本申请实施例还提供一种节点设备,作为分布式系统中的领导节点设备实现,所述节点设备包括:存储器、处理器和通信组件;所述存储器,用于存储计算机程序,所述存储器包括nvm内存;所述处理器,与所述存储器耦合,用于执行所述存储器中的计算机程序,以用于:确定需要向分布式系统中的非领导节点设备同步自身nvm内存中的数据;通过所述通信组件向所述非领导节点设备同步自身nvm内存中的数据,以供所述非领导节点设备将同步的数据写入其nvm内存中。

本申请实施例还提供一种节点设备,作为分布式系统中的非领导节点设备实现,所述节点设备包括:存储器、处理器和通信组件:所述存储器,用于存储计算机程序,所述存储器包括nvm内存;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:通过所述通信组件接收分布式系统中的领导节点设备从其nvm内存中同步的数据;将所述领导节点设备同步的数据写入自身nvm内存中。

本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器实现本申请实施例提供的数据同步方法中的步骤。

本申请实施例还提供一种节点管控方法,适用于节点管控设备,所述方法包括:确定分布式系统中的领导节点设备和非领导节点设备,所述领导节点设备和非领导节点设备具有非易失性nvm内存;以及对所述领导节点设备和非领导节点设备进行功能配置;其中,所述领导节点设备被配置为:将客户端提交的数据写入自身的nvm内存中,并向所述非领导节点设备同步自身nvm内存中的数据;所述非领导节点设备被配置为:将所述领导节点设备同步的数据写入自身nvm内存中。

在本申请实施例中,分布式系统中的节点设备采用nvm内存,借助于nvm内存的非易失性,在节点设备之间进行数据一致性同步的过程中,数据可以直接从一个节点设备的nvm内存中同步到另一节点设备的nvm内存中,省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率,实现多数节点之间数据的一致性。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请示例性实施例提供的一种分布式系统的结构示意图;

图2a为本申请示例性实施例提供的一种领导节点设备向自身nvm内存中写入数据的状态示意图;

图2b为本申请示例性实施例提供的领导节点设备从自身nvm内存向非领导节点设备的nvm内存同步数据的状态示意图;

图2c和图2d为本申请示例性实施例提供的领导节点设备切换后新的领导节点设备删除nvm内存中非连续存储的数据的状态示意图;

图3为本申请示例性实施例提供的一种数据同步方法的流程示意图;

图4a本申请示例性实施例提供的另一种数据同步方法的流程示意图;

图4b为本申请示例性实施例提供的一种节点管控方法的流程示意图;

图5为本申请示例性实施例提供的一种节点设备的结构示意图

图6为本申请示例性实施例提供的另一种节点设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

针对现有分布式系统中多数节点之间在保证数据一致性方面具有一定延迟的技术问题,在本申请一些实施例中,分布式系统中的节点设备采用nvm内存,借助于nvm内存的非易失性,在节点设备之间进行数据一致性同步的过程中,数据可以直接从一个节点设备的nvm内存中同步到另一节点设备的nvm内存中,省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率,实现多数节点之间数据的一致性。

以下结合附图,详细说明本申请各实施例提供的技术方案。

图1为本申请示例性实施例提供的一种分布式系统的结构示意图。如图1所示,该分布式系统100包括:多个节点设备10。多个节点设备10具有非易失性(non-volatilememory,nvm)内存11,可以存储数据。nvm内存是一种在断电后所存储的数据不会消失的存储器或存储设备,其延迟比普通的固态硬盘要低若干数量级,读写速度接近于易失性的内存。如图1所示,除了nvm内存之外,节点设备10还包括:cpu12、网卡13、io接口14等其他组件。

本实施例中的节点设备10可以是任何具有数据存储能力、计算能力和通信能力的计算机设备。例如,节点设备10可以是台式电脑、笔记本电脑、智能手机或iot设备等终端设备,也可以是常规服务器、云服务器或服务器阵列等服务端设备。另外,分布式系统100中的多个节点设备10可以是同一类型的设备,也可以是多种不同类型的设备。

其中,多个节点设备10之间可以相互通信、相互协作,共同完成相应任务。其中,多个节点设备10之间的通信连接可以是有线连接,也可以是无线连接。若多个节点设备10之间通过移动网络通信连接,所述移动网络的网络制式可以为2g(gsm)、2.5g(gprs)、3g(wcdma、td-scdma、cdma2000、utms)、4g(lte)、4g+(lte+)、5g、wimax以及将来可能出现的新制式等中的任意一种。

本实施例的分布式系统100可以面向一个或多个客户端103提供数据相关的服务,例如数据存储、查询、分析等。无论是哪种数据相关的服务,都需要客户端103向分布式系统100提供服务所需的数据。在本实施例中,将分布式系统100中的多个节点设备10区分为领导(leader)节点设备101和非领导(non-leader)节点设备102;由领导节点设备101面向一个或多个客户端103,如图1所示。一个或多个客户端103可以将自己的数据提交给领导节点设备101。

领导节点设备101负责接收客户端103提交的数据,一方面将客户端103提交的数据写入自身的nvm内存中;另一方面向非领导节点设备102同步自身nvm内存中的数据。对非领导节点设备102来说,可将领导节点设备101同步的数据写入自己的nvm内存中。这样,多个节点设备10之间的数据在一定程度上可以保持一致,有利于保证分布式系统10的可靠性。另外,借助于nvm内存的非易失性,在领导节点设备101向非领导节点设备102同步数据的过程中,不需要担心节点设备掉电后nvm内存中的数据会丢失,数据可以直接从领导节点设备101的nvm内存中同步到非领导节点设备102的nvm内存中,也就不需要将nvm内存中的数据写入wal日志中(写wal日志是为了解决节点设备掉电后内存数据会丢失的问题),省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率。

在本实施例中,并不限定领导节点设备101的数量,其可以是一个,也可能是多个。例如,在分布式系统100发生网络分裂(networkpartition)的情况下,被分裂出的多个子系统之间彼此无法通信,每个子系统可能会选举出自己的领导节点设备101,这样分布式系统100中就会存在多个领导节点设备101。在分布式系统100中,除领导节点设备101之外的其它具有nvm内存的节点设备10被认为是非领导节点102,非领导节点102也可以被称为从属节点设备或跟随(follwer)节点设备等。非领导节点102的数量一般是多个,当然,也可以是一个。

在本实施例中,并不限定客户端103提交的数据的格式,具体可视分布式系统100支持的存储格式而定。例如,若分布式系统100支持键值对(key-value,kv)存储,则客户端103提交的数据可以是kv值。又例如,若分布式系统100支持行式存储,则客户端103提交的数据可以是一行数据,也可以是一张行式数据表。又例如,若分布式系统100支持列式存储,则客户端103提交的数据可以是一列数据,也可以是一张列式数据表。

在本申请一些示例性实施例中,客户端103在向领导节点设备101提交数据之后,可以等待领导节点设备101返回处理结果。领导节点设备101在接收到客户端103提交的数据之后,可根据对该数据的存储和同步情况,向客户端103返回处理结果。该处理结果可以是表示数据提交成功的确认信息,也可以是表示数据提交失败的错误信息。

可选地,为了保证多个节点设备10之间数据的一致性,领导节点设备101可以在确定将客户端103提交的数据成功地同步到多数非领导节点102的情况下,再向客户端103返回确认信息。相反,若未能成功地将客户端103提交的数据同步到多数非领导节点102的情况下,可以向客户端103报错,例如返回错误信息。在本实施例中,并不对“多数非领导节点102”的数量进行限定,可根据应用需求灵活设定。例如,可以将不少于一半的非领导节点设备视为“多数非领导节点设备”,也可以将不少于三分之一的非领导节点设备视为“多数非领导节点设备”,还可以将系统中全部非领导节点设备视为“多数非领导节点设备”。

在一可选实施例中,非领导节点102在成功将领导节点设备101同步的数据写入自身nvm内存之后,可以向领导节点设备101返回一个成功响应消息,告知领导节点设备101其已经将数据成功同步至自身nvm内存中。对领导节点设备101来说,可以通过统计接收到的成功响应消息的数量,来判断是否已经成功地将客户端103提交的数据同步到了多数非领导节点设备102。当然,除了这种方式,领导节点设备101也可以采用其他方式统计是否已经成功地将客户端103提交的数据同步到了多数非领导节点设备102,对此不做限定。

需要说明的是,对于被报错的客户端,其可以重新向领导节点设备101提交数据,也可以采用其他方式进行处理,例如通知用户,由人工介入等等,对此不做限定。

在本申请一些示例性实施例中,领导节点设备101和非领导节点设备102除了将数据写入自身nvm内存之外,还可以按照一定策略,例如定期地将自身nvm内存中的数据保存到硬盘或磁盘等价格便宜、容量较大的存储介质中。关于领导节点设备101和非领导节点设备102是否需要将自身nvm内存中的数据保存到硬盘或磁盘等价格便宜、容量较大的存储介质中,可根据应用需求灵活而定。例如,对于nvm内存足够的情况,或者有足够资金购买更多或更大容量的nvm内存的情况,领导节点设备101和非领导节点设备102无需将自身nvm内存中的数据保存到硬盘或磁盘等价格便宜、容量较大的存储介质中。

在本申请各实施例中,并不限定领导节点设备101向自身nvm内存写入数据的方式。例如,领导节点设备101可以采用串行写入方式,将数据一个一个地依次写入自身nvm内存中。或者,领导节点设备101也可以采用并行写入方式,每次同时向自身nvm内存中写入多个数据。并行写入方式的效率较高,适用于实时、快速的场合。在本申请下述实施例中,以领导节点设备101采用并行写入方式为例展开说明。

对领导节点设备101来说,可能同时接收到同一客户端103提交的多个数据,也可能同时接收到多个不同客户端103提交的数据,在多个客户端103的情况下,每个客户端103提交的数据可以是一个,也可以是多个。为了便于区分和管理客户端103提交的数据,领导节点设备101在接收至少一个客户端103提交的数据时,可以为至少一个客户端提交的数据分配序号,一个数据一个序号,该序号可唯一标识一个数据。

之后,领导节点设备101可以采用并行写入方式将至少一个客户端103提交的数据按序写入自身nvm内存中。这里的“按序写入”是指在nvm内存中数据是按照序号存储的,如图2a所示。如图2a所示,领导节点设备101为客户端103提交的数据分配序号,将分配序号后的数据分别为seq1、seq2、seq3等,seq后面的数字表示该数据的序号。在一次并行写入操作中,领导节点设备101同时向其nvm内存中写入序号为1、2和3的数据,即seq1、seq2和seq3;在另一次并行写入操作中,同时向其nvm内存中写入序号为4、5和7的数据,即seq4、seq5和seq7,在nvm内存中seq6的位置被预留出来,以便实现按序存储。

另外,在本实施例中,并不限定领导节点设备101将至少一个客户端103提交的数据以并行写入方式写入其nvm内存中所执行的并行写入操作的次数,具体可视领导节点设备101的并行写入能力和客户端103提交的数据的多少而定。例如,在客户端提交的数据不太多的情况下,领导节点设备101可以在一次并行写入操作中将所有数据写入nvm内存中。又例如,在客户端提交的数据较多的情况下,领导节点设备101可以执行多次并行写入操作,每次并行写入操作负责将部分数据写入nvm内存中。

在上述实施例的基础上,领导节点设备101在向非领导节点设备102同步其自身nvm内存中的数据时,不仅可以向非领导节点设备102同步其自身nvm内存中的数据,还可以向非领导节点设备102同步数据的序号。对非领导节点设备102来说,在其nvm内存中也可以按序存储数据。

需要说明的是,领导节点设备101将客户端提交的数据写入自身nvm内存,与向非领导节点设备102同步其自身nvm内存中的数据,是两个并行操作,执行顺序不受限制。另外,领导节点设备101可以采用广播或组播的通信方式,同时向多个非领导节点设备102同步数据;或者,也可以采用单播通信方式,分别向每个非领导节点设备102同步数据。在领导节点设备101分别向每个非领导节点设备102同步数据的场景中,领导节点设备101向不同非领导节点设备102同步的数据可能相同,也可能不同。

同理,在本申请各实施例中,并不限定非领导节点设备102向自身nvm内存写入数据的方式。例如,非领导节点设备102可以采用串行写入方式,将数据一个一个地依次写入自身nvm内存中。或者,非领导节点设备102也可以采用并行写入方式,每次同时向自身nvm内存中写入多个数据。在本申请下述实施例中,以非领导节点设备102采用并行写入方式为例展开说明。

接续于上述领导节点设备101向非领导节点设备102同步数据及数据的序号的实施方式,非领导节点设备102可接收领导节点设备101同步的数据及数据的序号,之后,根据领导节点设备101同步的数据的序号,以并行写入方式将领导节点设备101同步的数据按序写入自身nvm内存中。如图2b所示,以领导节点设备101向一个非领导节点设备102同步数据seq4、seq5和seq7,并向另一个非领导节点设备102同步数据seq3和seq4为例,假设两个非领导节点设备102在一次并行写入操作中,同时将领导节点设备101同步的数据写入自身nvm内存中。在图2b中,以领导节点设备101分别向每个非领导节点设备102同步自身nvm内存中的数据为例进行说明,但并不限于此。

进一步,结合数据的序号,领导节点设备101和非领导节点设备102可以分别记录一基准序号。其中,领导节点设备101和非领导节点设备102记录的基准序号分别指向领导节点设备101和非领导节点设备102自身nvm内存中连续存储的数据。鉴于领导节点设备101和非领导节点设备102采用并行写入方式,所以各自nvm内存中的数据可能出现不连续的情况,如图2a和图2b所示。在图2a中,领导节点设备101的nvm内存中连续存储的数据是数据seq1-seq5;数据seq7算是不连续的数据,则领导节点设备101记录的基准序号指向数据seq1-seq5。在图2b中,上面一个非领导节点设备102的nvm内存中连续存储的数据是数据seq1-seq5,数据seq7算是不连续的数据,则非领导节点设备102记录的基准序号指向数据seq1-seq5。在图2b中,下面一个非领导节点设备102的nvm内存中连续存储的数据是数据seq1-seq4,暂时不存在不连续的数据,则非领导节点设备102记录的基准序号指向数据seq1-seq4。

在本实施例中,并不限定基准序号的实现方式,凡是可以指向相应nvm内存中连续存储的数据序号均可作为本实施例中的基准序号。在一可选实施例中,可以将领导节点设备101或非领导节点设备102自身nvm内存中连续存储的数据中的最大序号作为各自的基准序号。在另一可选实施例中,可以将领导节点设备101或非领导节点设备102自身nvm内存中连续存储的数据中的最大序号减1作为各自的基准序号。在又一可选实施例中,可以将领导节点设备101或非领导节点设备102自身nvm内存中连续存储的数据中的最大序号加1作为各自的基准序号。根据基准序号表示的物理意义,基准序号可以被称为连续提交序号(consecutive-committed-seq)。

需要说明的是,随着写入操作的不断执行,领导节点设备101或非领导节点设备102自身nvm内存中连续存储的数据会不断变化。因此,对领导节点设备101或非领导节点设备102来说,在每次并行写入操作结束后,需要更新所记录的基准序号。

进一步可选地,领导节点设备101或非领导节点设备102除了记录基准序号之外,还可以记录上限序号。领导节点设备101和非领导节点设备102记录的上限序号分别指向领导节点设备101和非领导节点设备102自身nvm内存中已经存储的最大序号的数据。可选地,上限序号可以是nvm内存中已经存储的所有数据中的最大序号。根据上限序号表示的物理意义,上限序号可以被称为最大提交序号(max-committed-seq)。

若基准序号是相应nvm内存中连续存储的数据中的最大序号,则对领导节点设备101或非领导节点设备102来说,序号低于该基准序号consecutive-committed-seq的所有数据都已经在nvm内存中被持久化成功,序号大于上限序号max-committed-seq的数据都没有被持久化到nvm内存中,序号在consecutive-committed-seq和max-committed-seq之间的数据,有的可能已经被持久化到nvm内存中,有的可能还没有被持久化到nvm内存中。在图2a和图2b中,灰色框表示nvm内存中连续存储的数据,灰色框内的序号表示基准序号。

在本申请实施例中,并不限定领导节点设备101和非领导节点设备102是如何确定的。凡是可以确定出领导节点设备额01和非领导节点设备102的实施方式均适用于本申请实施例。下面举例说明:

在本申请一些示例性实施例中,分布式系统100可以包括节点管控设备。节点管控设备主要负责管理分布式系统100中的节点设备,例如可以确定分布式系统100中的领导节点设备101和非领导节点设备102;以及对领导节点设备101和非领导节点设备102进行功能配置。其中,领导节点设备101可被配置为:将客户端103提交的数据写入自身的nvm内存中,并向非领导节点设备102同步自身nvm内存中的数据;相应地,非领导节点设备102可被配置为:将领导节点设备101同步的数据写入自身nvm内存中。当然,除了这里列举的部分功能之外,领导节点设备101和非领导节点设备102所实现的其它功能(例如前文中描述的其它功能)也可以由节点管控设备配置。在此说明,领导节点设备101和非领导节点设备102所实现的各种功能可以由节点管控设备配置,也可以是预置好的,例如在出厂时预置。

进一步可选地,节点管控设备在确定分布式系统中的领导节点设备101和非领导节点设备102时,可以将分布式系统中一个节点设备直接配置为领导节点设备101,并将其余节点设备配置为非领导节点设备102。例如,可以随机选择一个节点设备,将该节点设备配置为领导节点设备101;或者,可以按照设定的选择策略,选择一个节点设备,将该节点设备配置文领导节点设备101。设定的选择策略可以是:选择mac地址最大的节点设备,或者选择ip地址最大的节点设备,或者选择出厂日期最新的节点设备,或者选择cpu核数最多的节点设备,或者选择nvm内存最大的节点设备等作为领导节点设备。

除上述方式之外,节点管控设备也可以控制分布式系统100中的节点设备进行选举,从而选举出领导节点设备和非领导节点设备。在本实施例中,不对选举机制不做限定。需要说明的是,除了由节点管控设备控制分布式系统100中的节点设备进行选举之外,分布式系统100中的节点设备之间也可以采用自主选举机制,选举出领导节点设备和非领导节点设备。在下面实施例中,将对节点设备之间的自主选举过程进行详细说明:

在本申请一些示例性实施例中,分布式系统100中各节点设备10之间可以采用选举机制,可动态选举领导节点设备101。例如,在初始阶段,各节点设备10可以采用选举机制选举出领导节点设备。又例如,在原来的领导节点设备发生故障的情况下,其余节点设备可以采用选举机制重新选举出新的领导节点设备。或者,也可以根据其它需求,由特定条件或事件触发各节点设备采用选举机制重新选举出新的领导节点设备。关于选举机制以及节点设备采用选举机制选举领导节点设备的实施方式,本申请实施例并不做限定。一种选举机制的示例可参见后续实施例中的描述,在此不做详述。

在重新选举新的领导节点设备的情况下,更高概率的是,原来的非领导点设备被选举成为新的领导节点设备。当然,若原来的领导节点设备也参与了选举过程,则原来的领导节点设备有可能被重新选举成为新的领导节点设备。若原来的领导节点设备有可能被重新选举成为新的领导节点设备,意味着领导节点设备未发生变化,一些操作可以继续按照以前的逻辑执行,对此不做过多说明。下面重点针对非领导点设备在选举过程中被选举成为新的领导节点设备的情况进行说明。

在本申请实施例中,在非领导节点设备被选举成为新的领导节点设备的情况下,被选举出的新的领导节点设备可以执行以下至少一种操作:

操作1:根据自身记录的基准序号,将自身nvm内存中非连续存储的数据删除。这里的基准序号指向被选举出的新的领导节点设备自身nvm内存中连续存储的数据。

操作2:向未被选举成为新的领导节点设备的非领导节点设备通知其被选举成为新的领导节点设备。

操作3:向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。

在操作1-3中,除操作3之外,操作1和操作2均为可选操作。

关于操作1,若被选举出新的领导节点设备的nvm内存中存在非连续存储的数据,则可以将nvm内存中非连续存储的数据删除;若被选举出新的领导节点设备的nvm内存中不存在非连续存储的数据,则无需执行该删除操作。通过执行操作1,可避免数据同步过程中有数据被遗漏,有利于保证不同节点设备之间数据的一致性。

接续于图2b,参见图2c,假设原来的领导节点设备(处于中间位置的节点设备)发生故障,其余节点设备发起新的选举过程,且上面一个节点设备被选举成为新的领导节点设备,其需要将其nvm内存中非连续存储的数据seq7删除,删除后的状态如图2d所示。

关于操作2,其可以是一个独立的过程,在操作3之前执行,也可以和操作3融合在一起实现。若操作2是一个独立的过程,则在选举出新的领导节点设备之后,被选举出的新的领导节点设备可以专门向未被选举成为新的领导节点设备的非领导节点设备发送一通知消息,该通知消息携带有被选举出的新的领导节点设备的标识信息,以供其它未被选举成为新的领导节点设备的非领导节点设备获知新的领导节点设备。对未被选举成为新的领导节点设备的非领导节点设备来说,可以接收被选举出的新的领导节点设备发送的通知消息,根据该通知消息,确定被选举出的新的领导节点设备。

关于操作3,作为新的领导节点设备,要接替原来的领导节点设备面向至少一个客户端,一方面将客户端提交的数据写入自身nvm内存中;另一方面,需要向其它未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。其中,被选举出的新的领导节点设备可以在有需要或必要的时候,发起向其它未被选举成为新的领导节点设备的非领导节点设备同步数据的操作。例如,被选举出的新的领导节点设备可以在有客户端向其提交数据的情况下,发起向其它未被选举成为新的领导节点设备的非领导节点设备同步数据的操作。又例如,被选举出的新的领导节点设备可以在自己被选举成为新的领导节点设备的情况下,默认向其它未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。

无论是上述哪种发起方式,被选举出的新的领导节点设备可以采用组播或广播的方式,同时向多个非领导节点设备同步其自身nvm内存中的数据;或者,也可以采用单播方式,分别向每个非领导节点设备同步其自身nvm内存中的数据。

在一可选实施例中,为了简化选举机制,减少被选举出的新的领导节点设备的通信次数,节约其资源,操作2和操作3融合在一起实现。在该融合实现方式中,在选举出新的领导节点设备之后,被选举出的新的领导节点设备可以向未被选举成为新的领导节点设备的非领导节点设备发送一个空数据(nop),以通知这些非领导节点设备其被选举成为新的领导节点设备;另外,在该空数据中携带第一序号,表示自己将从第一序号开始向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。第一序号是其自身nvm内存中连续存储的数据中的最大序号的下一序号。结合图2d,第一序号是6,即将从数据seq6开始向非领导节点设备同步数据。

对于未被选举成为新的领导节点设备的非领导节点设备,可接收到新的领导节点设备发送的空数据,一方面可以根据空数据中携带的节点设备的标识信息,确定被选举出的新的领导节点设备;另一方面,可以从空数据中解析出第一序号,判断第一序号是否与第二序号相同;并在第一序号与第二序号不相同的情况下,向被选举出的新的领导节点设备返回第二序号,以供新的领导节点设备依据第二序号向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。其中,第二序号是未被选举成为新的领导节点设备的非领导节点设备需要被选举出的新的领导节点设备向其同步数据的起始序号。结合图2d,下面一个非领导节点设备需要新的领导节点设备从序号5开始向其同步数据,而不是序号6。在图2d中,第一序号是6,第二序号是5。

需要说明的是,非领导节点设备的数量通常为多个,不同非领导节点设备的第二序号可能相同,也可能不相同。

进一步,对被选举出的新的领导节点设备来说,在向未被选举成为新的领导节点设备的非领导节点设备发送空数据之后,可接收这些非领导节点设备返回的第二序号,进而可依据这些非领导节点设备返回的第二序号,向这些非领导节点设备同步其自身nvm内存中的数据。

在一可选实施方式中,被选举出的新的领导节点设备采用广播方式,同时向这些非领导节点设备同步其自身nvm内存中的数据。基于此,被选举出的新的领导节点设备可以确定这些非领导节点设备返回的第二序号中的最小序号,然后从最小序号开始,向这些非领导节点设备同步其自身nvm内存中的数据。对于一些非领导节点设备来说,在接收到新的领导节点设备同步的数据后,可以将接收到的数据与nvm内存中的数据进行比较;若新接收到的数据未存在于nvm内存中,则将该新接收到的数据写入nvm内存中;反之,若新接收到的数据已经存在于nvm内存中,则可以将新接收到的数据丢弃,或者用新接收到的数据覆盖nvm内存中已有的数据。

在另一可选实施方式中,被选举出的新的领导节点设备采用单播方式,分别向这些非领导节点设备同步其自身nvm内存中的数据。基于此,被选举出的新的领导节点设备可以根据每个非领导节点设备返回的第二序号分别向每个非领导节点设备同步其自身nvm内存中的数据。对每个非领导节点设备来说,被选举出的新的领导节点设备可以从该非领导节点设备返回的第二序号开始,向该非领导节点设备同步其自身nvm内存中的数据。结合图2d,新的领导节点设备可以从数据seq5开始向下面的非领导节点设备同步其自身nvm内存中的数据。

进一步可选地,对未被选举成为新的领导节点设备的非领导节点设备来说,在接收到被选举出的新的领导节点设备发送的通知消息或空数据之后,还可以确定自己未被选举成为新的领导节点设备,并根据所记录的基准序号,将自身nvm内存中非连续存储的数据删除。该操作与新的领导节点设备执行的操作1相适配,有利于保证不同节点设备之间数据的一致性。

在本申请下面实施例中给出一种选举机制的示例。在该选举机制示例中,对同一节点设备来说,具有三种角色,分别是领导节点设备、非领导节点设备和候选节点设备,而且,节点设备在这三个角色之间可以相互切换。该选举机制可被多种条件或事件触发,主要的事件包括原来的领导节点设备发生故障或者断网,此时,非领导节点设备会触发选举机制进行重新选主。

在选举机制被触发的情况下,非领导节点设备可以判断自身是否可以作为候选节点设备;并在自身可以作为候选节点设备的情况下,向非候选节点设备发送选举请求,以参与新的领导节点设备的选举过程。

可选地,每个节点设备上有一个倒计时器(electiontimeout),其计时时间随机在某个时间范围内波动,例如,该时间范围可以是15ms到300ms之间。其中,若接收到候选节点设备发送的选举请求,或者接收到新的领导节点设备发送的心跳消息,节点设备会将自己的倒计时器的计时时间重设,这意味着该节点设备将继续作为非领导节点设备。

基于上述,对每个非领导节点设备来说,在选举机制被触发的情况下,可以判断自身的倒计时器是否计时结束;若计时结束,且未收到其它节点设备发送的选举请求或心跳消息,则可以确定自己可以作为候选节点设备,并向非候选节点设备发送选举请求,以参与新的领导节点设备的选举过程。

在一可选实施例中,在选举新的领导节点设备的过程中,可以参考各节点设备记录的基准序号。基于此,候选节点设备可以将其所记录的基准序号携带在选举请求中发送给非候选节点设备,以参与新的领导节点设备的选举过程。对非候选节点设备来说,可根据接收到的选举请求中携带的基准序号,从候选节点设备中选举出新的领导节点设备;向新的领导节点设备返回选举成功消息。

例如,非候选节点设备可以将接收到的选举请求中携带的基准序号进行比较;将最小基准序号对应的候选节点设备作为新的领导节点设备。又例如,非候选节点设备可以将接收到的选举请求中携带的基准序号进行比较;将最大基准序号对应的候选节点设备作为新的领导节点设备。又例如,非候选节点设备可以将接收到的选举请求中携带的基准序号与设定的序号范围进行比较;将基准序号在设定的序号范围内的候选节点设备作为新的领导节点设备。

需要说明的是,选举请求中除了携带有基准序号这一信息之外,还可以携带其他信息,例如发送选举请求的节点设备的标识信息和选举的轮次等。节点设备的标识信息可以是节点设备的ip地址、mac地址、物理地址或在系统中的设备编号等等。

进一步,对于非候选节点设备来说,在选举出新的领导节点设备之后,可以向选举出的新的领导节点设备返回成功消息。若新的领导节点设备接收到多数非候选节点设备返回的成功消息,可以将自己的角色由候选节点设备设置成领导节点设备,并在每隔一小段时间后,就给其它未被选举为新的领导节点设备的非领导节点设备发送心跳(heartbeat)消息,以让其它非领导节点设备重设其倒计时器的计时时间,从而保持在非领导节点的状态直至下次需要重新选举新的领导节点设备。

在本申请上述实施例中,分布式系统100包括具有nvm内存的多个节点设备10,这些具有nvm内存的多个节点设备10被划分为领导节点设备101和非领导节点设备102,但并未限定分布式系统100中只能包含具有nvm内存的节点设备。在一些应用场景下,分布式系统100中可能同时包括具有nvm内存的节点设备和具有非nvm内存(即传统内存)的节点设备。例如,假设分布式系统100原本包括的节点设备都是具有非nvm内存的节点设备,随着系统升级,系统中具有非nvm内存的节点设备不断被具有nvm内存的节点设备代替,在这个升级过程中,分布式系统100会同时存在具有nvm内存的节点设备和具有非nvm内存的节点设备;当系统中所有具有非nvm内存的节点设备均被升级为具有nvm内存的节点设备之后,分布式系统100中全部都是具有nvm内存的节点设备。对于同时包括具有nvm内存的节点设备和具有非nvm内存(即传统内存)的节点设备的分布式系统100,在具有nvm内存的节点设备之间可以采用本申请各实施例提供的数据同步方案进行数据同步;对于具有非nvm内存的节点设备可以借助于wal日志,通过写wal日志的方式进行数据同步,对此不做限定。

在本申请上述实施例中,对分布式系统100中的节点设备及相关功能和工作原理等进行了描述,但需要说明的是,本实施例的分布式系统100所能实现的功能并不限于所描述的。另外,在具体实现上,本实施例的分布式系统100可以参照现有raft协议,但并不限于此。在参照raft协议实现过程中,领导节点设备和非领导节点设备在将自身nvm内存中非连续存储的数据删除时,可以执行raft协议中的truncatetail命令,通过执行该命令,将自身nvm内存中非连续存储的数据删除,但并不限于此。

图3为本申请示例性实施例提供的一种数据同步方法的流程示意图。该方法是从分布式系统中的领导节点设备的角度进行的描述,如图3所示,该方法包括:

301、确定需要向分布式系统中的非领导节点设备同步自身nvm内存中的数据。

302、向非领导节点设备同步自身nvm内存中的数据,以供非领导节点设备将同步的数据写入其nvm内存中。

在本实施例中,分布式系统包括:多个节点设备;多个节点设备具有nvm内存,可以存储数据。多个节点设备区分为领导(leader)节点设备和非领导(non-leader)节点设备。领导节点设备面向一个或多个客户端,负责接收客户端提交的数据,一方面将客户端提交的数据写入自身的nvm内存中;另一方面向非领导节点设备同步自身nvm内存中的数据。

可选地,在步骤301之前,领导节点设备还会接收客户端提交的数据,并将客户端提交的数据写入自身的nvm内存中。

进一步,在一可选实施例中,领导节点设备可以为客户端提交的数据分配序号,以并行写入方式将客户端提交的数据按序写入自身nvm内存中。

进一步,领导节点设备在每次并行写入操作结束后,更新所记录的基准序号;其中,所述基准序号指向领导节点设备自身nvm内存中连续存储的数据。可选地,基准序号可以是领导节点设备自身nvm内存中连续存储的数据中的最大序号,或者是,领导节点设备自身nvm内存中连续存储的数据中的最大序号减1,或者是,领导节点设备自身nvm内存中连续存储的数据中的最大序号加1,等等。

进一步可选地,步骤302,即向非领导节点设备同步自身nvm内存中的数据的实施过程包括:向非领导节点设备同步自身nvm内存中的数据及其序号,以供非领导节点设备将同步的数据写入其nvm内存中。

关于本实施例各步骤的详细描述,可参见前述系统实施例中的相关描述,在此不再赘述。

在本实施例中,分布式系统中的节点设备采用nvm内存,借助于nvm内存的非易失性,在节点设备之间进行数据一致性同步的过程中,数据可以直接从一个节点设备的nvm内存中同步到另一节点设备的nvm内存中,省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率,实现多数节点之间数据的一致性。

图4a为本申请示例性实施例提供的另一种数据同步方法的流程示意图。该方法是从分布式系统中非领导节点设备的角度进行的描述,如图4a所示,该方法包括:

401、接收分布式系统中的领导节点设备从其nvm内存中同步的数据。

402、将领导节点设备同步的数据写入自身nvm内存中。

在本实施例中,分布式系统包括:多个节点设备;多个节点设备具有nvm内存,可以存储数据。多个节点设备区分为领导(leader)节点设备和非领导(non-leader)节点设备。领导节点设备面向一个或多个客户端,负责接收客户端提交的数据,一方面将客户端提交的数据写入自身的nvm内存中;另一方面向非领导节点设备同步自身nvm内存中的数据。

非领导节点设备接收领导节点设备从其nvm内存中同步的数据,并将领导节点设备同步的数据写入自身nvm内存中,实现多数节点之间数据的一致性。

在一可选实施例中,领导节点设备会为客户端提交的数据分配序号,并会在数据同步过程中将数据的序号一并同步给非领导节点设备。基于此,在步骤401中,非领导节点设备可以接收领导节点设备从其nvm内存中同步的数据及其序号;根据领导节点设备同步的数据的序号,以并行方式将领导节点设备同步的数据按序写入自身nvm内存中。

进一步可选地,非领导节点设备还可以在每次并行写入操作结束后,更新所记录的基准序号;其中,所述基准序号指向非领导节点设备自身nvm内存中连续存储的数据。

在一些可选实施例中,领导节点设备可能会发生故障或者断网,这些情况会触发选举机制,重新选举新的领导节点设备。在选举机制被触发的情况下,非领导节点可以判断自身是否可以作为备选节点设备;在自身可以作为候选节点设备的情况下,向分布式系统中的非候选节点设备发送选举请求,以参与新的领导节点设备的选举过程;在自身不可以作为候选节点设备的情况下,作为非候选节点设备可以接收分布式系统中的候选节点设备发送的选举请求,根据接收到的选举请求从中选举出新的领导节点设备。

在一可选实施例中,若非领导节点设备判断出自己可以作为候选节点设备,则可以将所记录的基准序号携带在选举请求中发送给分布式系统中的非候选节点设备,以供非候选节点设备根据接收到的选举请求中携带的基准序号从候选节点设备中选举出新的领导节点设备。这里的基准序号指向候选节点设备自身nvm内存中连续存储的数据。进一步,在有非候选节点设备选举该候选节点设备作为新的节点设备的情况下,该候选节点设备还会接收非候选节点设备返回的选举成功消息,并可统计选举成功消息的数量或返回选举成功消息的节点设备的数量,并在统计出的数量超过设定数量阈值(即满足多数要求)的情况下,将自己配置成新的领导节点设备。

相应地,若非领导节点判断出自己不可以作为候选节点设备,则作为非候选节点设备可接收候选节点设备发送的选举请求,并可根据接收到的选举请求中携带的基准序号,从候选节点设备中选举出新的领导节点设备,向新的领导节点设备返回选举成功消息。可选地,根据接收到的选举请求中携带的基准序号,从所述候选节点设备中选举出新的领导节点设备,包括:将接收到的选举请求中携带的基准序号进行比较,将最大基准序号对应的候选节点设备作为新的领导节点设备。

需要说明的是,非领导节点设备可能会被选举成为新的领导节点设备,也可能不会被选举成为新的领导节点设备。

其中,在非领导节点设备被选举成为新的领导节点设备的情况下,被选举出新的领导节点设备可以执行以下至少一种操作:

操作1:根据所记录的基准序号,将自身nvm内存中非连续存储的数据删除。

操作2:向未被选举成为新的领导节点设备的非领导节点设备通知其被选举成为新的领导节点设备。

操作3:向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。

在一可选实施例中,向未被选举成为新的领导节点设备的非领导节点设备通知其被选举成为新的领导节点设备,包括:被选举出新的领导节点设备向未被选举成为新的领导节点设备的非领导节点设备发送一个携带有第一序号的空数据,以通知未被选举成为新的领导节点设备的非领导节点设备其被选举成为新的领导节点设备。其中,第一序号表示将从第一序号开始向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;第一序号是被选举出的新的领导节点设备自身nvm内存中连续存储的数据中的最大序号的下一序号。

进一步,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据,包括:若接收到未被选举成为新的领导节点设备的非领导节点设备返回的第二序号,依据未被选举成为新的领导节点设备的非领导节点设备返回的第二序号,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;其中,第二序号不同于第一序号,是未被选举成为新的领导节点设备的非领导节点设备要求被选举出的新的领导节点设备向其同步数据的起始序号。

可选地,依据未被选举成为新的领导节点设备的非领导节点设备返回的第二序号,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据的实施方式,包括:确定未被选举成为新的领导节点设备的非领导节点设备返回的第二序号中的最小序号,从最小序号开始,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。或者,

可选地,依据未被选举成为新的领导节点设备的非领导节点设备返回的第二序号,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据的实施方式,包括:对每个未被选举成为新的领导节点设备的非领导节点设备,从未被选举成为新的领导节点设备的非领导节点设备返回的第二序号开始,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。

其中,在非领导节点设备未被选举成为新的领导节点设备的情况下,可以配合新的领导节点设备做一些操作。例如,在非领导节点设备未被选举成为新的领导节点设备的情况下,接收被选举出的新的领导节点设备发送的通知,根据该通知,获知被选举出的新的领导节点设备是谁,并可确定自己未被选举为新的领导节点设备,还可以根据所记录的基准序号,将自身nvm内存中非连续存储的数据删除。

在一可选实施例中,接收被选举出的新的领导节点设备发送的通知,包括:收被选举出的新的领导节点设备发送的空数据,所述空数据携带有第一序号,表示被选举出的新的领导节点设备将从第一序号开始向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;第一序号是被选举出的新的领导节点设备自身nvm内存中连续存储的数据中的最大序号的下一序号;将第一序号与第二序号进行比较;并在第一序号与第二序号不相同的情况下,向被选举出的新的领导节点设备返回第二序号,以供被选举出的新的领导节点设备依据第二序号向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;其中,第二序号是非领导节点设备在未被选举成为新的领导节点设备的情况下需要被选举出的新的领导节点设备向其同步数据的起始序号。

在本实施例中,分布式系统中的节点设备采用nvm内存,借助于nvm内存的非易失性,在节点设备之间进行数据一致性同步的过程中,数据可以直接从一个节点设备的nvm内存中同步到另一节点设备的nvm内存中,省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率,实现多数节点之间数据的一致性。

图4b为本申请示例性实施例提供的一种节点管控方法的流程示意图。如图4b所示,该方法包括:

41、确定分布式系统中的领导节点设备和非领导节点设备,所述领导节点设备和非领导节点设备具有非易失性nvm内存。

42、对领导节点设备和非领导节点设备进行功能配置;其中,领导节点设备被配置为:将客户端提交的数据写入自身的nvm内存中,并向非领导节点设备同步自身nvm内存中的数据;非领导节点设备被配置为:将领导节点设备同步的数据写入自身nvm内存中。

本实施例可由节点管控设备实施,主要用于管理分布式系统中的节点设备。分布式系统中的节点设备具有nvm内存。其中,节点管控设备对分布式系统中的节点设备的管理包括但不限于以下两个方面:确定分布式系统中的领导节点设备和非领导节点设备;以及对领导节点设备和非领导节点设备进行功能配置。

在本实施例中,领导节点设备被配置为:将客户端提交的数据写入自身的nvm内存中,并向非领导节点设备同步自身nvm内存中的数据。非领导节点设备被配置为:将领导节点设备同步的数据写入自身nvm内存中。当然,除了这里列举的部分功能之外,领导节点设备和非领导节点设备所实现的其它功能(例如前文中描述的其它功能)也可以由节点管控设备配置。其中,节点管控设备对领导节点设备和非领导节点设备进行功能配置之后,领导节点设备和非领导节点设备按照被配置的功能进行数据同步以及其它操作的详细过程,可参见前述实施例的描述,在此不再赘述。

可选地,在确定分布式系统中的领导节点设备和非领导节点设备时,可以将分布式系统中一个节点设备直接配置为领导节点设备,并将其余节点设备配置为非领导节点设备。例如,可以随机选择一个节点设备,将该节点设备配置为领导节点设备;或者,可以按照设定的选择策略,选择一个节点设备,将该节点设备配置文领导节点设备。设定的选择策略可以是:选择mac地址最大的节点设备,或者选择ip地址最大的节点设备,或者选择出厂日期最新的节点设备,或者选择cpu核数最多的节点设备,或者选择nvm内存最大的节点设备等作为领导节点设备。

除上述方式之外,节点管控设备也可以控制分布式系统中的节点设备进行选举,从而选举出领导节点设备和非领导节点设备。在本实施例中,不对选举机制不做限定。

需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤401至步骤402的执行主体可以为设备a;又比如,步骤401的执行主体可以为设备a,步骤402的执行主体可以为设备b;等等。

另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如401、402等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

图5为本申请示例性实施例提供的一种节点设备的结构示意图。该节点设备可作为分布式系统中的领导节点设备实现。如图5所示,该节点设备包括:存储器51、处理器52和通信组件53。

存储器51,用于存储计算机程序,并可被配置为存储其它各种数据以支持在节点设备上的操作。这些数据的示例包括用于在节点设备上操作的任何应用程序或方法的指令,消息,图片,视频等。

本实施例的存储器51包括nvm内存和除nvm内存之外的其它存储介质。其它存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

需要说明的是,上述计算机程序可存储于nvm内存,也可以存储于nvm内存之外的其它存储介质中,对此不做限定。在图5中,以上述计算机程序可存储于nvm内存之外的其它存储介质中为例进行图示。

处理器52,与存储器51耦合,用于执行存储器51中的计算机程序,以用于:确定需要向分布式系统中的非领导节点设备同步自身nvm内存中的数据;通过通信组件53向非领导节点设备同步自身nvm内存中的数据,以供非领导节点设备将同步的数据写入其nvm内存中。

在一可选实施例中,处理器52还用于:通过通信组件53接收客户端提交的数据,并将客户端提交的数据写入自身的nvm内存中。

在一可选实施例中,处理器52在接收客户端提交的数据时,具体用于:为客户端提交的数据分配序号;以并行写入方式将客户端提交的数据按序写入自身nvm内存中。

在一可选实施例中,处理器52还用于:在每次并行写入操作结束后,更新所记录的基准序号;其中,基准序号指向该节点设备自身nvm内存中连续存储的数据。

在一可选实施例中,处理器52在向非领导节点设备同步自身nvm内存中的数据时,具体用于:通过通信组件53向非领导节点设备同步自身nvm内存中的数据及其序号,以供非领导节点设备以并行方式将同步的数据按序写入其nvm内存中。

进一步,如图5所示,该节点设备还包括:显示器54、电源组件55和音频组件56等其它组件。图5中仅示意性给出部分组件,并不意味着节点设备只包括图5所示组件。另外,图5中虚线框内的组件为可选组件,而非必选组件,具体可视节点设备的产品形态而定。本实施例的节点设备可以实现为台式电脑、笔记本电脑、智能手机或iot设备等终端设备,也可以是常规服务器、云服务器或服务器阵列等服务端设备。若本实施例的节点设备实现为台式电脑、笔记本电脑、智能手机等终端设备,可以包含图5中虚线框内的组件;若本实施例的节点设备实现为常规服务器、云服务器或服务器阵列等服务端设备,则可以不包含图5中虚线框内的组件。

本实施例提供的节点设备可作为分布式系统中的领导节点设备实现,采用nvm内存,借助于nvm内存的非易失性,在向非领导节点设备同步数据的过程中,可以直接将数据从自身nvm内存中同步到非领导节点设备的nvm内存中,省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率,实现多数节点之间数据的一致性。

除此之外,本实施例提供的节点设备也有可能重新成为非领导节点,当本实施例提供的节点设备作为非领导节点时,还可以具有下述实施例提供的节点设备的功能。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现上述方法实施例中可由领导节点设备执行的各步骤或操作。

图6为本申请示例性实施例提供的另一种节点设备的结构示意图。该节点设备可以作为分布式系统中的非领导节点设备实现。如图6所示,该节点设备包括:存储器61、处理器62和通信组件63。

存储器61,用于存储计算机程序,并可被配置为存储其它各种数据以支持在节点设备上的操作。这些数据的示例包括用于在节点设备上操作的任何应用程序或方法的指令,消息,图片,视频等。

本实施例的存储器61包括nvm内存和除nvm内存之外的其它存储介质。其它存储介质可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

需要说明的是,上述计算机程序可存储于nvm内存,也可以存储于nvm内存之外的其它存储介质中,对此不做限定。在图6中,以上述计算机程序可存储于nvm内存之外的其它存储介质中为例进行图示。

处理器62,与存储器61耦合,用于执行存储器61中的计算机程序,以用于:通过通信组件63接收分布式系统中的领导节点设备从其nvm内存中同步的数据,并将领导节点设备同步的数据写入自身nvm内存中。

在一可选实施例中,处理器62在接收领导节点设备从其nvm内存中同步的数据时,具体用于:接收领导节点设备从其nvm内存中同步的数据及其序号;根据领导节点设备同步的数据的序号,以并行方式将领导节点设备同步的数据按序写入自身nvm内存中。

在一可选实施例中,处理器62还用于:在每次并行写入操作结束后,更新所记录的基准序号;其中,基准序号指向处理器62所属的节点设备自身nvm内存中连续存储的数据。

在一可选实施例中,在本实施例的节点设备被选举成为新的领导节点设备的情况下,处理器62具体用于执行以下至少一种操作:

根据所记录的基准序号,将自身nvm内存中非连续存储的数据删除;

向未被选举成为新的领导节点设备的非领导节点设备通知其被选举成为新的领导节点设备;

向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;

其中,基准序号指向被选举出的新的领导节点设备自身nvm内存中连续存储的数据。

可选地,处理器62在向未被选举成为新的领导节点设备的非领导节点设备通知其被选举成为新的领导节点设备时,具体用于:向未被选举成为新的领导节点设备的非领导节点设备发送一个空数据,以通知未被选举成为新的领导节点设备的非领导节点设备其被选举成为新的领导节点设备;其中,空数据携带有第一序号,表示将从第一序号开始向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;第一序号是被选举出的新的领导节点设备自身nvm内存中连续存储的数据中的最大序号的下一序号。

进一步,处理器62在向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据时,具体用于:若接收到未被选举成为新的领导节点设备的非领导节点设备返回的第二序号,依据未被选举成为新的领导节点设备的非领导节点设备返回的第二序号,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;其中,第二序号不同于第一序号,是未被选举成为新的领导节点设备的非领导节点设备要求被选举出的新的领导节点设备向其同步数据的起始序号。

进一步,处理器62在向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据,具体用于:确定未被选举成为新的领导节点设备的非领导节点设备返回的第二序号中的最小序号,从最小序号开始,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;或者,对每个未被选举成为新的领导节点设备的非领导节点设备,从未被选举成为新的领导节点设备的非领导节点设备返回的第二序号开始,向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据。

在一可选实施例中,在本实施例的节点设备未被选举成为新的领导节点设备的情况下,处理器62还用于:通过通信组件63接收被选举出的新的领导节点设备发送的通知,并根据所记录的基准序号,将自身nvm内存中非连续存储的数据删除。

进一步,处理器62在接收被选举出的新的领导节点设备发送的通知时,具体用于:通过通信组件63接收被选举出的新的领导节点设备发送的空数据,空数据携带有第一序号,表示被选举出的新的领导节点设备将从第一序号开始向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;第一序号是被选举出的新的领导节点设备自身nvm内存中连续存储的数据中的最大序号的下一序号。

进一步,处理器62还用于:在第一序号与第二序号不相同的情况下,通过通信组件63向被选举出的新的领导节点设备返回第二序号,以供被选举出的新的领导节点设备依据第二序号向未被选举成为新的领导节点设备的非领导节点设备同步其自身nvm内存中的数据;其中,第二序号是非领导节点设备在未被选举成为新的领导节点设备的情况下需要被选举出的新的领导节点设备向其同步数据的起始序号。

在一可选实施例中,处理器62还用于:在选举机制被触发的情况下,判断自身所属的节点设备是否可以作为候选节点设备;在自身所属的节点设备可以作为候选节点设备的情况下,向分布式系统中的非候选节点设备发送选举请求,以参与新的领导节点设备的选举过程。

进一步,处理器62在向分布式系统中的非候选节点设备发送选举请求是,具体用于:将所记录的基准序号携带在选举请求中发送给非候选节点设备,以供非候选节点设备根据接收到的选举请求中携带的基准序号从候选节点设备中选举出新的领导节点设备。其中,基准序号指向候选节点设备自身nvm内存中连续存储的数据。

在一可选实施例中,处理器62还用于:在自身所属的节点设备不可以作为候选节点设备的情况下,作为非候选节点设备接收分布式系统中的候选节点设备发送的选举请求;根据接收到的选举请求中携带的基准序号,从候选节点设备中选举出新的领导节点设备;向新的领导节点设备返回选举成功消息。

进一步,处理器62在从候选节点设备中选举出新的领导节点设备时,具体用于:将接收到的选举请求中携带的基准序号进行比较,将最大基准序号对应的候选节点设备作为新的领导节点设备。

进一步,如图6所示,该节点设备还包括:显示器64、电源组件65、音频组件66等其它组件。图6中仅示意性给出部分组件,并不意味着节点设备只包括图6所示组件。另外,图6中虚线框内的组件为可选组件,而非必选组件,具体可视节点设备的产品形态而定。本实施例的节点设备可以实现为台式电脑、笔记本电脑、智能手机或iot设备等终端设备,也可以是常规服务器、云服务器或服务器阵列等服务端设备。若本实施例的节点设备实现为台式电脑、笔记本电脑、智能手机等终端设备,可以包含图6中虚线框内的组件;若本实施例的节点设备实现为常规服务器、云服务器或服务器阵列等服务端设备,则可以不包含图6中虚线框内的组件。

本实施例提供的节点设备可作为分布式系统中的非领导节点设备实现,采用nvm内存,借助于nvm内存的非易失性,可与领导节点设备相互配合,支持领导节点设备直接将数据从其nvm内存中同步到非领导节点设备的nvm内存中,省掉了写wal日志的操作,可减少写wal日志带来的延迟,有利于提高数据同步效率,实现多数节点之间数据的一致性。

除此之外,本实施例提供的节点设备也有可能重新被选举为领导节点设备,当本实施例提供的节点设备被选举为领导节点设备时,还可以具有上述实施例提供的节点设备的功能。

相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现上述方法实施例中可由非领导节点设备执行的各步骤或操作。

上述图5和图6中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g、3g、4g/lte、5g等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还可以包括近场通信(nfc)模块,射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术等。

上述图5和图6中的显示器包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

上述图5和图6中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。

上述图5和图6中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(mic),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1