发明内容
有鉴于此,本说明书施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的一方面,提供了一种数据处理方法,包括:
接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目;
对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数;
在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点;其中,n为正整数,m>n;
应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
可选地,所述接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目步骤执行之前,还包括:
根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度;
根据所述节点容错度确定与各节点关联的待创建数据副本的数量阈值;
根据所述数量阈值以及各节点的标识信息,分别在各节点创建数据副本。
可选地,所述接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目步骤执行之前,还包括:
将获取的待分片数据按照预设分片规则分布到所述分布式系统的各个节点;
根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度;
根据所述节点容错度确定与各节点的数据分片关联的待创建数据副本的预设阈值;
根据所述预设阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
可选地,所述接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目步骤执行之前,还包括:
根据所述分布式系统中的节点数量以及所述分布式系统中数据分片总数,确定所述分布式系统中各节点的待创建数据副本的预设数量阈值;
根据所述预设数量阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
可选地,所述数据处理指令中携带有待处理数据的关键字信息;
相应的,所述从所述m个从节点中选择n个从节点作为目标节点步骤执行之前,还包括:
根据所述关键字信息确定所述待处理数据所属的数据分片的标识信息,并根据所述标识信息判断所述主节点中是否包含与所述数据分片关联的数据副本;
若是,则执行所述从所述m个从节点中选择n个从节点作为目标节点的步骤。
可选地,所述从所述m个从节点中选择n个从节点作为目标节点,包括:
根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点。
可选地,所述数据处理指令中携带有待处理数据的关键字信息;
相应的,所述从所述m个从节点中选择n个从节点作为目标节点,包括:
根据所述关键字信息确定所述待处理数据所属数据分片的标识信息;
根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;其中,预设阈值≤n+1≤m。
可选地,在预设选举周期内未接收到主节点返回的心跳信息的情况下,则确定所述主节点中是否包含与所述数据分片关联的数据副本的运行结果为否,执行如下操作:
根据所述标识信息确定候选节点;
向所述m个从节点发起选举指令,通过所述选举指令从候选节点中选举出所述分布式系统新的主节点;
获取各个从节点提交的对所述候选节点进行投票的投票结果;
对所述投票结果进行统计,将第一个获得投票数大于预设阈值的候选节点确定为所述分布式系统新的主节点。
可选地,所述从所述m个从节点中选择n个从节点作为目标节点,包括:
根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;n+1≤m。
可选地,所述根据所述预设阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本,包括:
根据所述标识信息,确定初始节点中是否包含与目标数据分片关联的数据副本;
若不包含,则根据所述标识信息,确定所述分布式系统中与所述目标数据分片关联的数据副本的数量是否大于或等于预设副本数量阈值;
若不大于,则确定所述初始节点中包含的数据副本的个数是否小于预设副本个数阈值;
若小于,则在所述初始节点中创建与所述目标数据分片关联的数据副本。
根据本说明书实施例的另一方面,提供了一种数据处理装置,包括:
接收模块,被配置为接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目;
请求发起模块,被配置为对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数;
选择模块,被配置为在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点;其中,n为正整数,m>n;
应用模块,被配置为应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
根据本说明书实施例的另一方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目;
对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数;
在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点;其中,n为正整数,m>n;
应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
根据本说明书实施例的另一方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据处理方法的步骤。
本说明书一个实施例通过接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目,对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目,在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点,应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回;
实现了在从分布式系统的多个从节点中确定几个节点作为目标节点,并将日志条目应用到主节点和目标节点,一方面能保证分布式系统的可用性以及其他性能,另一方面可以减少分布式系统中数据的冗余,有利于提高系统的运行效率。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语来描述各种信息,但这些信息不应限于这些术语。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
一致性协议:raft、paxos等分布式一致性协议。
副本:一致性协议进行复制的冗余数据单元,实现容错功能。
在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种数据处理方法的处理流程图,包括步骤102至步骤108。
步骤102,接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目。
随着互联网技术的快速发展,分布式系统的应用范围越来越广。由于分布式系统包含多个分布式节点,且该分布式系统可以为客户端提供数据的读/写服务,因此客户端可以通过该分布式系统中的任意一个分布式节点进行数据访问。
在分布式系统创建完成之后,该分布式系统可以从包括的多个分布式节点中,其中一个为主节点,除该主节点之外的均为从节点,在该主节点发生故障的情况下,可从其他从节点中重新选举主节点,为保证从节点可被选举为主节点,从而为客户端提供服务,各个从节点中均需存储大量的数据,为分布式系统的性能带来一定影响。
基于此,本说明书实施例提供的一种数据处理方法,通过接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目,对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目,在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点,应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回;
从分布式系统的多个从节点中确定几个节点作为目标节点,并将日志条目应用到主节点和目标节点,一方面能保证分布式系统的可用性以及其他性能,另一方面可以减少分布式系统中数据的冗余,有利于提高系统的运行效率。
具体的,所述数据处理指令可以为数据写指令,接收数据写指令后,通过一致性协议层写日志,即将所述数据写指令追加到日志中,获得所述数据处理指令的日志条目,分布式系统中的主节点通过同步机制将日志同步至其他从节点。
具体实施时,接收数据处理指令之前,需先在分布式系统的各个节点创建数据副本,具体可通过以下方式实现:
根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度;
根据所述节点容错度确定与各节点关联的待创建数据副本的数量阈值;
根据所述数量阈值以及各节点的标识信息,分别在各节点创建数据副本。
具体的,所述节点容错度即表示以能够正常为客户端提供服务为前提,所述分布式系统允许的可同时发生故障的分布式节点数量,分布式系统中的分布式节点数量不同,则允许可同时发生故障的分布式节点数量不同。
若所述数据处理指令为数据写指令,确定写指令中待处理数据所属的目标分布式节点,并对写指令进行处理获得处理结果后,可将处理结果存储于与所述目标分布式节点关联的数据副本中;
若接收到的数据处理指令为数据读指令,并且读指令中的待处理数据所属的分布式节点为目标分布式节点的情况下,分布式系统可通过包含与所述数据副本关联的分布式节点提供服务;因此,为保证分布式节点的可用性(在其中一个节点出现故障的情况下,仍能通过其他节点正常为客户端提供服务),可根据分布式系统的节点容错度,确定分布式系统中与目标分布式节点关联的数据副本的数量。
实际应用中,分布式系统的主节点接收客户端的数据写指令后,需将所述数据写指令追加到日志中,获得数据写指令的日志条目,并通过执行日志条目,将生成的执行结果存储于数据副本,客户端可在数据副本中查询执行结果,因此,为能够成功为客户端提供服务,则主节点中需存在与数据写指令中待处理数据相关的数据副本。
若用x表示分布式系统中的分布式节点数量(x=m+1),用f表示分布式系统的节点容错度(节点容错度为整数),则可通过式2f+1=x计算分布式系统的节点容错度,其中f为整数;若用y表示分布式系统中与各节点关联的待创建数据副本的数量阈值,则可通过y=f+1计算所述数量阈值。
以所述分布式系统中包含3个分布式节点为例,将x=3代入式2f+1=x,即可确定所述分布式系统的节点容错度f=1;同理,若分布式系统中包含4个分布式节点,则所述分布式系统的节点容错度同样为1;
确定所述分布式系统的节点容错度为1后,将f=1代入式y=f+1,可确定所述分布式系统中与各节点关联的待创建数据副本的数量阈值为y=2,即至少在分布式系统的两个分布式节点中分别创建一个与目标数据分片关联的数据副本;
若分布式系统中包含3个分布式节点,则可在任意两个分布式节点中分别创建一个数据副本;若分布式系统中包含4个分布式节点,则可在任意两个或任意三个分布式节点中分别创建一个数据副本。
通过减少分布式系统中数据副本的数量,有利于减小分布式系统的数据冗余,提高系统运行的效率。
进一步的,分布式系统中各个节点中待创建数据副本的数量可通过以下方式确定:
将获取的待分片数据按照预设分片规则分布到所述分布式系统的各个节点;
根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度;
根据所述节点容错度确定与各节点的数据分片关联的待创建数据副本的预设阈值;
根据所述预设阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
具体的,所述预设阈值为各个节点中与数据分片关联的待创建数据副本的数量下限。
为了保证分布式系统更高的性能和更大的扩展性,可采用数据分片技术,将应用数据(待分片数据)按照一定的分片规则分布到不同的分布式节点上。
因此,为保证分布式节点的可用性(在其中一个节点出现故障的情况下,仍能通过其他节点正常为客户端提供服务),可根据分布式系统的节点容错度,确定分布式系统中与目标数据分片关联的数据副本的数量,即根据所述节点容错度确定与各节点的数据分片关联的待创建数据副本的预设阈值。
具体实施时,若用x表示分布式系统中的分布式节点数量,用f表示分布式系统的节点容错度,则可通过式2f+1=x计算分布式系统的节点容错度,其中f为整数;若用y表示分布式系统中与目标数据分片关联的待创建数据副本的预设阈值,则可通过y=f+1计算所述预设阈值。
若将待分片数据按照预设分片规则分为数据分片A、数据分片B和数据分片C,以所述分布式系统中包含3个分布式节点,并且所述目标数据分片为数据分片A为例,将x=3代入式2f+1=x,即可确定所述分布式系统的节点容错度f=1;确定所述分布式系统的容错度为1后,可将f=1代入式y=f+1,可得,所述分布式系统中与目标数据分片A关联的待创建数据副本的预设阈值为2,即为保证系统能正常为客户端提供服务,则需在所述分布式系统的任意两个分布式节点中分别创建1个目标数据分片A的数据副本;
同理,若分布式系统中包含4个分布式节点,则所述分布式系统的容错度同样为1,确定所述分布式系统的容错度后,可将f代入式y=f+1,可得,所述分布式系统中与目标数据分片A关联的待创建数据副本的预设阈值为2,即为保证系统能正常为客户端提供服务,则至少需在所述分布式系统的任意两个节点中分别创建1个目标数据分片A关联的数据副本,也可在所述分布式系统的任意三个节点中分别创建1个与目标数据分片A关联的数据副本。
另外,数据分片B和数据分片C的待创建数据副本的数量的确定方式与数据副本A类似,在此不再赘述。
采用数据分片技术,将应用数据(待分片数据)按照一定的分片规则分布到不同的分布式节点上,当需要进行精确查询或小范围查询时,根据分片规则,该查询仅仅影响目标数据分片所在的节点,而其他的节点可以继续对外提供服务,使得分布式数据库可以对外提供更高的并发访问性能。
更进一步的,根据所述预设阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本,具体可通过以下方式实现:
根据所述标识信息,确定初始节点中是否包含与目标数据分片关联的数据副本;
若不包含,则根据所述标识信息,确定所述分布式系统中与所述目标数据分片关联的数据副本的数量是否大于或等于第三预设阈值;
若不大于,则确定所述初始节点中包含的数据副本的个数是否小于第四预设阈值;
若小于,则在所述初始节点中创建与所述目标数据分片关联的数据副本。
具体的,所述第三预设阈值为分布式系统中与目标数据分片关联的数据副本的数量上限;所述第四预设阈值为各个节点中数据副本的数量上限。
为保证分布式系统中各节点的负载均衡,需平均分配数据副本,并且为保证可用性,需将与同一数据分片关联的待创建副本创建于不同的分布式节点,因此,在确定与各节点的数据分片关联的待创建数据副本的预设阈值,并根据所述预设阈值以及各节点中数据分片的标识信息进行数据副本的创建过程中,可根据所述标识信息,确定分布式系统的初始节点中是否包含与目标数据分片关联的数据副本;若不包含,则根据所述标识信息,确定所述分布式系统中与所述目标数据分片关联的数据副本的数量是否超过副本数量的上限;若未超过,则确定所述初始节点中包含的数据副本的数量是否低于副本数量的上限;若低于,则在所述初始节点中创建与所述目标数据分片关联的数据副本。
仍以所述分布式系统中包含3个分布式节点为例,分别为节点1、节点2和节点3,若将待分片数据按照预设分片规则分为数据分片A、数据分片B和数据分片C,所述目标数据分片为数据分片A,计算可得,与数据分片A关联的待创建数据副本的个数为2个,则若准备在节点1(初始节点)创建一个数据副本,则在创建之前,需先确定节点1中是否已包含与数据分片A关联的数据副本,若未包含,则确定分布式系统中与数据分片A关联的数据副本的个数是否大于或等于2,若小于,则确定节点1中包含的数据副本的数量是否小于2,若是,则在节点1中创建1个与数据分片A关联的数据副本。
另外,若根据所述标识信息,确定初始节点中包含与目标数据分片关联的数据副本,则继续根据所述标识信息确定下一节点中是否包含与目标数据分片关联的数据副本;或者,若根据所述标识信息,确定所述分布式系统中与所述目标数据分片关联的数据副本的数量大于或等于第三预设阈值,则继续创建与其他数据分片关联的数据副本;或者,若确定所述初始节点中包含的数据副本的个数大于或等于第四预设阈值,则根据所述标识信息确定下一节点中是否包含与目标数据分片关联的数据副本。
数据副本的创建结果的示意图如图2所示,图2所示的分布式系统中包含三个节点(x=3),分别为节点1、节点2以及节点3,包含3个数据分片,分别为数据分片A、数据分片B以及数据分片C,每个数据分片分布于不同的节点,则根据式2f+1=x确定分布式系统的节点容错度f=1,各个节点的待创建数据副本的数量为2,由图2可知,节点1中包含与数据分片A和数据分片B关联的数据副本A0和B1,节点2中包含与数据分片B和数据分片C关联的数据副本B0和C1,节点3中包含与数据分片A和数据分片C关联的数据副本A1和C0。
另外,图2中的a0、a1、a2、b0、b1、b2、c0、c1、c2均为日志副本,用于存储数据处理指令的日志条目。在节点1接收到数据处理指令后,根据所述数据处理指令中的待处理信息的关键词信息确定所述待处理信息所属的数据分片为数据分片A,则由节点1将数据处理指令的日志条目同步至节点2的a1和节点3的a3,节点2和节点3接收到数据处理指令后的处理过程与节点1类似,在此不再赘述。
在分布式系统的多个节点中确定几个节点作为目标节点,并在目标节点中创建与目标数据分片关联数据副本,一方面能保证分布式系统的可用性以及其他性能,另一方面可以减少分布式系统中数据的冗余,有利于提高系统的运行效率。
除此之外,分布式系统中各个节点的待创建数据副本的数量还可通过以下方式确定:
根据所述分布式系统中的节点数量以及所述分布式系统中数据分片总数,确定所述分布式系统中各节点的待创建数据副本的预设数量阈值;
根据所述预设数量阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
具体的,所述预设数量阈值即分布式系统中与目标数据分片关联的数据副本的数量下限,也可表示包含与目标数据分片关联的数据副本的分布式节点的数量下限。
若分布式系统中的分布式节点数为x,节点容错度为f,且系统中的数据分片的个数为z,用y表示各节点中与目标数据分片关联的待创建数据副本的预设数量阈值,则y=(x-f)z/x。
以分布式系统中的节点数为5,数据分片的个数为5为例,则将x=5代入2f+1=5可得,分布式系统的节点容错度f=3,将z=5、x=5、f=2代入式y=(x-f)z/x可得,各节点中与目标数据分片关联的待创建数据副本的预设数量阈值y=3,即分布式系统中包含的与目标数据分片关联的数据副本的分布式节点的数量下限为3个,因此,可在分布式系统的3个或4个分布式节点中创建与目标数据分片关联的数据副本。
确定分布式系统中各个节点的待创建数据副本的数量后,具体的创建过程可参考前述的数据副本创建过程,在此不再赘述。
在分布式系统的多个节点中确定几个节点作为目标节点,并在目标节点中创建与目标数据分片关联数据副本,一方面能保证分布式系统的可用性以及其他性能,另一方面可以减少分布式系统中数据的冗余,有利于提高系统的运行效率。
步骤104,对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数。
具体的,分布式系统中的主节点通过同步机制实现日志同步,所述同步机制为主节点将为每一个客户端提交的数据处理指令追加到日志中去,获得数据处理指令的日志条目,并对其他所有从节点发起同步请求操作,让从节点复制该日志条目,以实现分布式系统中数据的一致性。
步骤106,在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点;其中,n为正整数,m>n。
具体的,一致性协议算法(Raft算法)保证所有已提交的日志条目都是持久化的并且最终会被所有可用的状态机执行。一旦创建该日志条目的主节点将它复制到过半的从节点上(即从节点安全复制所述日志条目),该日志条目就会被提交,主节点将已提交的日志条目应用到状态机中。
具体实施时,数据处理指令中携带有待处理数据的关键字信息,从所述m个从节点中选择n个从节点作为目标节点,具体可通过以下方式实现:
根据所述关键字信息确定所述待处理数据所属数据分片的标识信息;
根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;其中,预设阈值≤n+1≤m。
具体的,所述预设阈值为分布式系统的节点中与数据分片关联的待创建数据副本的数量下限,也可表示分布式系统中包含与目标数据分片关联的数据副本的分布式节点的数量下限,若将主节点作为1个目标节点,则n+1即表示分布式系统中包含与数据分片关联的数据副本的数量,m表示分布式系统中从节点的个数,因此,预设阈值≤n+1≤m。
接收到数据写指令后,可根据数据写指令中待处理数据的关键词信息(key值)确定所述待处理数据所属的目标数据分片,并在从节点中选择包含与所述目标数据分片关联的数据副本的分布式节点作为目标节点。
另外,主节点接收数据处理指令后,若要为客户端提供服务,则主节点需满足的条件是主节点中包含与待处理信息所属目标数据副本关联的数据副本,因此,从所述m个从节点中选择n个从节点作为目标节点之前,还需确定主节点是否满足这条件,具体可通过以下方式实现:
根据所述关键字信息确定所述待处理数据所属的数据分片的标识信息,并根据所述标识信息判断所述主节点中是否包含与所述数据分片关联的数据副本;
若是,则从所述m个从节点中选择n个从节点作为目标节点。
具体的,分布式系统的主节点接收客户端的数据写指令后,需通过执行日志,将生成的执行结果存储于数据副本,客户端可在数据副本中查询执行结果,因此,为能够成功为客户端提供服务,则节点中需包含数据副本。
若主节点满足条件,则从所述m个从节点中选择n个从节点作为目标节点,即根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点。
另外,在预设选举周期内未接收到主节点返回的心跳信息的情况下,则确定所述主节点中不包含与所述数据分片关联的数据副本,需重新选举新的主节点,具体可通过以下方式实现:
根据所述标识信息确定候选节点;
向所述m个从节点发起选举指令,通过所述选举指令从候选节点中选举出所述分布式系统新的主节点;
获取各个从节点提交的对所述候选节点进行投票的投票结果;
对所述投票结果进行统计,将第一个获得投票数大于预设阈值的候选节点确定为所述分布式系统新的主节点。
具体的,在预设选举周期内未接收到主节点返回的心跳信息的情况下,则确定所述主节点不符合条件,即主节点中不包含与所述数据分片关联的数据副本,无法为客户端提供服务,因此,需重新选举新的主节点,将包含与目标数据分片关联的数据副本的从节点作为候选节点,并向分布式系统中的从节点发起选举指令,由从节点进行投票,并根据投票结果确定新的主节点;其中,对投票结果的统计是随着投票过程动态进行的,分布式系统中的从节点对所述候选节点进行投票,根据投票结果确定新的主节点,即在投票过程中,对各候选节点的得票数进行动态统计,并将至少两个候选节点中第一个得票数大于预设阈值的节点确定为新的主节点。
在获取投票成员的投票结果后,对所述投票结果进行统计,并将第一个获得投票数大于预设阈值的候选节点确定为新的主节点;实际应用中,所述预设阈值可根据分布式系统中节点的个数确定,例如,若所述分布式系统中包含3个节点(1个主节点和2个从节点),则预设阈值可设置为2(得票率大于50%),并将第一个获得投票数大于2的候选节点确定为新的主节点。
在主节点无法正常提供服务的情况下,重新进行主节点选举,保证了分布式系统的可用性。
进一步的,若分布式系统的主节点不满足条件,则重新选举新的主节点后,从所述m个从节点中选择n个从节点作为目标节点,具体可通过以下方式实现:
根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;n+1≤m。
具体的,分布式系统中共包含m个从节点,并且新的主节点在m个从节点中选举生成,的主节点之外的剩余m-1个从节点中选择n个从节点作为目标节点,因此n+1≤m。
如图2所示,若节点1为主节点,根据数据处理指令中待处理数据的关键词信息确定所述待处理数据所属的目标数据分片为数据分片C,但节点1中不包含与数据分片C关联的数据副本,无法正常提供服务,则需重新选举新的主节点,根据数据分片C的标识信息确定节点2和节点3中包含与数据分片C关联的数据副本,因此将节点2和节点3确定为候选节点进行选举,若将节点2选举为新的主节点,则从m个从节点中确定包含所述数据分片关联的数据副本的n个节点,即将剩余的1个从节点(节点3)作为目标节点。
步骤108,应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
具体的,确定目标节点后,即可将日志条目应用于主节点和目标节点的状态机。
沿用上例,若主节点满足条件,则应用日志条目于节点1和节点2的状态机,并由节点1返回执行结果;若主节点不满足条件,则应用日志条目于节点2和节点3,并由节点2返回执行结果。
图2中的a0、a1、a2、b0、b1、b2、c0、c1、c2均为日志副本,节点1和节点2中分别包含数据副本A0和数据副本A1,节点3中不包含与数据分片A关联的数据副本,因此可将日志副本a2与节点3的状态机解耦合;在日志同步完成后,由节点1读取日志副本a0中的日志条目,并由节点1状态机执行日志条目,以及由节点2读取日志副本a1中的日志条目,并由节点2状态机执行日志条目,节点3的状态机则不执行日志条目。
本说明书实施例中,日志副本依然是按照分布式系统中的副本数进行部署,而将日志应用于状态机产生的数据则可以根据数据冗余配置进行调整,并且,在减少数据副本以减少数据冗余的基础上,仍可以保证分布式系统的容错度和可用性,减少数据冗余,有利于减少存储数据所带来的开销,有利于提升分布式系统的运行速度,从而提高分布式系统的数据处理效率。
下述结合附图3,以本说明书提供的数据处理方法在实际场景的应用为例,对所述数据处理方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种数据处理方法应用于实际场景的处理过程流程图,具体步骤包括步骤302至步骤318。
步骤302,将获取的待分片数据按照预设分片规则分布到所述分布式系统的各个节点。
步骤304,根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度。
步骤306,根据所述节点容错度确定与各节点的数据分片关联的待创建数据副本的预设阈值。
步骤308,根据所述预设阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
步骤310,接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目,其中,所述数据处理指令中包含待处理数据的关键词信息。
步骤312,对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数。
在从节点安全复制所述日志条目的情况下,执行步骤314。
步骤314,根据所述关键字信息确定所述待处理数据所属的数据分片的标识信息,并根据所述标识信息判断所述分布式系统的主节点中是否包含与所述数据分片关联的数据副本。
具体的,若所述分布式系统的主节点中包含与所述数据分片关联的数据副本,则执行步骤316。
步骤316,根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;其中,预设阈值≤n+1<m。
步骤318,应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
本说明书实施例中,日志副本依然是按照分布式系统中的副本数进行部署,而将日志应用于状态机产生的数据则可以根据数据冗余配置进行调整,并且,在减少数据副本以减少数据冗余的基础上,仍可以保证分布式系统的容错度和可用性,减少数据冗余,有利于减少存储数据所带来的开销,有利于提升分布式系统的运行速度,从而提高分布式系统的数据处理效率。
与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图4示出了本说明书一个实施例提供的一种数据处理装置的示意图。如图4所示,该装置包括:
接收模块402,被配置为接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目;
请求发起模块404,被配置为对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数;
选择模块406,被配置为在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点;其中,n为正整数,m>n;
应用模块408,被配置为应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
可选地,所述数据处理装置,还包括:
计算模块,被配置为根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度;
确定模块,被配置为根据所述节点容错度确定与各节点关联的待创建数据副本的数量阈值;
创建模块,被配置为根据所述数量阈值以及各节点的标识信息,分别在各节点创建数据副本。
可选地,所述数据处理装置,还包括:
分布模块,被配置为将获取的待分片数据按照预设分片规则分布到所述分布式系统的各个节点;
容错度计算模块,被配置为根据所述分布式系统中的节点数量计算所述分布式系统的节点容错度;
阈值确定模块,被配置为根据所述节点容错度确定与各节点的数据分片关联的待创建数据副本的预设阈值;
副本创建模块,被配置为根据所述预设阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
可选地,所述数据处理装置,还包括:
数量阈值确定模块,被配置为根据所述分布式系统中的节点数量以及所述分布式系统中数据分片总数,确定所述分布式系统中各节点的待创建数据副本的预设数量阈值;
数据副本创建模块,被配置为根据所述预设数量阈值以及各节点中数据分片的标识信息,分别在各节点创建数据副本。
可选地,所述数据处理指令中携带有待处理数据的关键字信息;
相应的,所述数据处理装置,还包括:
判断模块,被配置为根据所述关键字信息确定所述待处理数据所属的数据分片的标识信息,并根据所述标识信息判断所述主节点中是否包含与所述数据分片关联的数据副本;
若所述判断模块的运行结果为是,则运行所述选择模块406。
可选地,所述选择模块406,包括:
选择子模块,被配置为根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点。
可选地,所述数据处理指令中携带有待处理数据的关键字信息;
相应的,所述选择模块406,包括:
确定子模块,被配置为根据所述关键字信息确定所述待处理数据所属数据分片的标识信息;
节点选择子模块,被配置为根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;其中,预设阈值≤n+1≤m。
可选地,在预设选举周期内未接收到主节点返回的心跳信息的情况下,则确定所述判断模块的运行结果为否,所述数据处理装置,还包括:
候选节点确定模块,被配置为根据所述标识信息确定候选节点;
指令发起模块,被配置为向所述m个从节点发起选举指令,通过所述选举指令从候选节点中选举出所述分布式系统新的主节点;
投票结果获取模块,被配置为获取各个从节点提交的对所述候选节点进行投票的投票结果;
主节点确定模块,被配置为对所述投票结果进行统计,将第一个获得投票数大于预设阈值的候选节点确定为所述分布式系统新的主节点。
可选地,所述选择模块406,包括:
目标节点确定子模块,被配置为根据所述标识信息确定包含与所述数据分片关联的数据副本的n个从节点,并将所述n个从节点作为所述目标节点;n+1≤m。
可选地,所述副本创建模块,包括:
确定子模块,被配置为根据所述标识信息,确定初始节点中是否包含与目标数据分片关联的数据副本;
若所述确定子模块的运行结果为不包含,则运行数量确定子模块;
所述数量确定子模块,被配置为根据所述标识信息,确定所述分布式系统中与所述目标数据分片关联的数据副本的数量是否大于预设副本数量阈值;
若所述数量确定子模块的运行结果为不大于,则运行副本确定子模块;
所述副本确定子模块,被配置为确定所述初始节点中包含的数据副本的个数是否小于预设副本个数阈值;
若所述副本确定子模块的运行结果为小于,则运行创建子模块;
所述创建子模块,被配置为在所述初始节点中创建与所述目标数据分片关联的数据副本。
上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
其中,所述存储器510用于存储计算机可执行指令,处理器520用于执行如下计算机可执行指令:
接收数据处理指令,将所述数据处理指令追加到日志中,获得所述数据处理指令的日志条目;
对分布式系统中m个从节点发起同步请求操作,以使所述从节点复制所述日志条目;其中,m为正整数;
在从节点安全复制所述日志条目的情况下,从所述m个从节点中选择n个从节点作为目标节点;其中,n为正整数,m>n;
应用所述日志条目到所述分布式系统的主节点的状态机以及所述目标节点的状态机,并将所述主节点的状态机的执行结果返回。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于实现所述数据处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。