分布式数据的一致性维护系统和方法

文档序号:7868443阅读:234来源:国知局
专利名称:分布式数据的一致性维护系统和方法
技术领域
本发明涉及一种分布式数据的一致性维护系统和方法,属于计算机的技术领域。
背景技术
分布式系统是在由通信网络互连的多处理机体系结构上执行分布式处理任务的系统。因为分布式集群系统中的每份数据都被保存于分布式集群中的多个节点,当其中某个集群节点上的数据被更新时,如何实现和保证该集群系统中的其余节点上的数据副本也能够进行相同的更新操作,使得整个集群系统中的各个数据的所有副本都保证一致的课题是业内科技人员关注的一个焦点。解决分布式数据一致性方法的现有技术主要有以下五种,但其分别存在不同缺点。下面分别介绍之主更新方法当系统中存在一个数据的多份数据副本时,设定其中的一个数据为主数据。每次更新时,先对主数据进行更新;主数据更新成功后,更新消息从主数据发送到其它数据副本中,使得数据副本也进行同样的更新操作。其缺点是更新消息必须在尽可能短的时间内发送到所有数据节点,如果不能在短时间内发送完成,系统就会产生过时的数据;而且,一旦主数据所在的节点出现故障,数据副本节点将不能得到更新消息。镜像更新方法该方法 不考虑每个数据的数据副本,仅仅考虑每个主数据和定义在主数据上的镜像,当更新主数据时,同时刷新定义在主数据上的镜像。它的缺点是镜像数据是只读而不能写,存在一定的限制。懒惰更新方法该方法是数据的更新操作并不是马上执行,而是只有当数据被访问时,才执行更新操作。其缺陷是增大了客户端访问数据的时延,尤其是当多个并发访问同时进行时,时延更加明显,并且,很容易引起死锁。消息队列法该方法是所有的更新操作消息都存放在一个消息队列中,并由系统中所有的节点共享,该消息队列中的消息按照先进先出的原则进行处理。因为消息队列中的消息是按照先进先出原则处理的,且消息队列的长度有限制,当并发的更新消息比较多、且消息的数据包比较大时,容易引起消息队列的溢出,导致更新消息的丢失。事务控制法事务是指一系列的原子操作,数据通过执行该一系列的原子操作,从一个一致性状态转移到另一个一致性状态。这种方法的缺点是发生事务更新失败时,会引起事务重启频率的加大,而且,当本地事务和全局事务同时执行时,很容易导致数据更新不—致。总之,在数据更新过程中,现有技术的上述数据一致性更新方法可能出现的节点故障和网络通信故障方面都存在不完善地方。因此,业内科技人员也在孜孜不倦地寻求相关的解决方法。

发明内容
有鉴于此,本发明的目的是提供一种分布式数据的一致性维护系统和方法,本发明用于分布式网络环境下,实现分布式数据的一致性维护,且能够有效减少网络通信开销,提高分布式数据更新的可靠性、高效性和可用性。为了达到上述目的,本发明提供了一种分布式集群系统中分布式数据的一致性维护系统,其特征在于,该系统是由集群管理节点、全局锁管理节点和多个数据维护节点所组成,其中:多个数据维护节点,分散地位于分布式集群系统中,每个数据维护节点都是能够接收客户端的数据更新请求、且具有相同处理功能和各自唯一标识的同构节点,每个数据维护节点存储有一个或多个数据的副本,每个数据都附有互不相同的唯一标识和不同版本号,但同一数据的所有副本的唯一标识皆相同,每次数据更新成功后,版本号也相应变更;设有事件监听、数据一致性维护和事件发送共三个模块;全局锁管理节点,负责存储和管理系统中所有数据的更新锁,并存储系统中所有数据维护节点信息,用于广播数据更新消息;还将含有相同数据副本的节点归属于同一组,每个数据维护节点可属于多个组;全局锁管理节点接收数据更新锁请求消息,且数据的更新锁申请成功后,分布式集群系统中各个数据维护节点之间的数据传输并不经过全局锁管理节点,以便减少其通信负担和降低故障出现概率,提高系统可靠性;数据维护节点需要更新数据时,先向全局锁管理节点申请该目标数据的更新锁;如果该目标数据的更新锁暂时不可用,则将该目标数据的更新锁请求放入相应的更新锁请求队列中,直到该目标数据更新锁可用为止;设有顺序连接的消息接收和发送模块、更新锁请求队列、数据维护节点信息管理模块共三个部件;集群管理节点,负责管理系统中所有节点包括其IP地址、监听端口号、运行状态和存储的数据的信息,并为全局锁管理节点中的数据维护节点信息管理模块提供各节点的最新信息;负责周期检测系统中每个数据维护节点的运行状态,并存储处于正常运行状态、且可达的数据维护节点信息,以及删除处于异常运行状态、不可达的数据维护节点信息,保证集群管理节点中只存储可达的数据维护节点信息,不可达节点不参与数据一致性的维护更新。所述数据的更新锁用于限制对数据的访问数据维护节点若要更新某个数据,首先必须向全局锁管理节点申请获取该目标数据的更新锁,成功获取目标数据更新锁后,该目标数据就不再接收客户端的读写请求,直到该目标数据的更新锁被释放;如果该目标数据的更新锁暂时不能用,则该目标数据的更新请求被放入相应的更新锁请求队列中,直到该目标数据更新锁能够使用为止。为了达到上述目的,本发明还提供了一种分布式集群系统中分布式数据的一致性维护系统的工作方法,其特征在于所述方法包括下列操作步骤(1)发起数据更新请求的数据维护节点、即只管理自身发起的数据更新请求的临时主节点先向全局锁管理节点发送包含其节点唯一性标识和期望更新的目标数据的唯一性标识的数据更新锁请求消息;此时,临时主节点并未对目标数据进行更新,而处于等待更新的状态;(2)全局锁管理节点中的消息接收和发送模块接收到该数据更新锁请求消息,判断该消息中是否包含多个目标数据的更新请求;若是,则把该消息分割成各自独立的多个数据更新请求消息,并分别放入对应数据的更新锁请求队列中;若否,则把该消息直接发送到目标数据的更新锁请求队列中;更新锁请求队列中的消息是按照先入先出方式发送到数据维护节点信息管理模块; (3)数据维护节点信息管理模块接收到该消息后,先寻找到含有目标数据的数据维护节点组,并向组中的数据维护节点广播该数据更新请求消息;同时,还设置接收消息的时间窗口初始值,准备在该设定的时间窗口内,接收含有目标数据的维护节点发送的数据是否更新成功的确认消息; (4)含有目标数据的其他数据维护节点接收到该数据更新请求消息后,解析和执行该消息中的目标数据更新操作若为删除操作,则直接删除目标数据中的对应数据,并增加该数据的版本号;若为回滚操作,则直接回滚目标数据最近一次执行的更新,并减少数据的版本号;若为增加或修改操作,则数据维护节点先从临时主节点获取新添数据内容后,才更新目标数据,同时增加数据的版本号;(5)含有目标数据的其他数据维护节点的目标数据更新成功后,向全局锁管理节点发送包含该目标数据更新成功后的版本号的更新成功确认消息;(6)全局锁管理节点中的数据维护节点信息管理模块对更新失败的数据维护节点重新发送数据更新请求,直到在重发次数的最大值以内就接收到更新成功确认消息时,再判断是否接收到除去临时主节点以外,所有含有目标数据的其他数据维护节点发送的数据更新成功的确认消息,以便采取相应不同的后续处理操作;(7)在分布式集群系统中,数据维护节点信息管理模块完成一次数据更新的全部操作后,对其接收消息的时间窗口值进行调整,以适应网络环境的变化。本发明分布式数据的一致性维护系统和方法的具有下述多项优点本发明分布式节点集群系统中的数据维护节点均是同构和对等的,不存在永久的主节点。当发起更新操作的数据维护节点出现故障时,可以选择该集群中其他包含相同数据的数据维护节点重新发起数据更新操作请求,这样就提高了系统的工作可靠性和灵活性,另外,本发明提供的数据一致性是强一致性。而且,客户端可以对多个目标数据同时发起数据更新操作。在数据更新过程中,引入数据的版本号,以减少网络故障带来的不必要的操作开销。另外,本发明中发起数据更新操作的数据维护节点是在最后阶段才执行数据更新操作,此策略可以在数据维护节点发生数据更新失败的情况下,减少该发起数据更新操作的数据维护节点执行回滚操作开销,也缩短了数据一致性更新过程的执行时间。总之,本发明既结合了分布式技术体现的可靠性(体现在数据集群中的数据分布在多个数据维护节点,并且数据维护节点均是同构的),又结合了集中式管理的高效性和可用性(体现在全局锁管理节点管理集群中所有数据的更新锁)。因此,本发明的应用前景看好。


图1是本发明分布式数据一致性维护系统的总体结构组成示意图。图2是本发明系统中的数据维护节点内部结构组成示意图。图3是本发明系统中的全局锁管理节点内部结构示意图。图4是本发明分布式数据的一致性维护系统工作方法在正常情况下分布式数据一致性维护时序示意图。图5是本发明分布式数据的一致性维护系统工作方法在数据维护节点更新失败时的分布式数据一致性维护时序示意图。图6是本发明方法网络传输故障情况下分布式数据一致性维护时序示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。本发明分布式数据的一致性维护系统和方法的应用场景是客户端向本发明系统中的某个数据维护节点发起包括增加、删除或修改的数据更新请求时,该数据维护节点首先将该数据更新请求发送到全局锁管理节点,全局锁管理节点再将该数据更新请求转发给除去发起更新请求的节点以外的、包含该目标数据的所有其他数据维护节点;当其他数据维护节点上的数据都更新成功后,发起更新请求的数据维护节点才对该目标数据执行更新操作;然后,再给发起数据更新请求的客户端返回目标数据更新完成的确认消息。如果目标数据更新失败,则所有的数据维护节点都放弃本次数据更新,保证系统中的所有数据在任何情况下都保持一致。参见图1,介绍本发明分布式数据一致性维护系统的结构组成由集群管理节点、全局锁管理节点和多个数据维护节点所组成,其中多个数据维护节点分散地位于分布式集群系统中,每个数据维护节点都是能够接收客户 端的数据更新请求、且具有相同处理功能和各自唯一标识的同构节点,每个数据维护节点存储有一个或多个数据的副本,每个数据都附有互不相同的唯一标识和不同版本号,但同一数据的所有副本的唯一标识皆相同,每次数据更新成功后,版本号也相应变更;设有事件监听、数据一致性维护和事件发送共三个模块(参见图2)。这些模块的功能是事件监听模块用于监听客户端发送到该数据维护节点上的数据更新请求消息或者系统中其它节点发送到该数据维护节点上的数据更新请求消息和/或数据回滚操作消息,并把接收到的消息转送到数据一致性维护模块进行处理。数据回滚是撤销最近一次执行的数据更新操作。数据一致性维护模块用于将来自客户端发送的数据更新请求消息先保存在该数据一致性维护模块中的客户端数据更新请求消息队列中,以便按照先进先出原则处理该队列中的消息,同时向事件发送模块发送数据更新锁请求消息;而对于接收到的来自其他节点的数据更新请求消息,则直接更新该消息中的目标数据;数据更新操作包括数据内容的增加、删除、修改或数据回滚;每次数据更新成功后或回滚操作成功后,应同时更改该数据的版本号,并把更新成功或失败的确认消息、回滚操作成功或失败的确认消息发送给事件发送模块。事件发送模块用于将接收到的数据更新成功或失败的确认消息、回滚操作成功或失败的确认消息或者数据更新锁请求消息发送给全局锁管理节点。全局锁管理节点负责存储和管理系统中所有数据的更新锁,并存储系统中所有数据维护节点信息,用于广播数据更新消息;还将含有相同数据副本的节点归属于同一组,每个数据维护节点可属于多个组;全局锁管理节点接收数据更新锁请求消息,且数据的更新锁申请成功后,分布式集群系统中各个数据维护节点之间的数据传输并不经过全局锁管理节点,以便减少其通信负担和降低故障出现概率,提高系统可靠性。数据维护节点进行数据更新时,先向全局锁管理节点申请该目标数据的更新锁;如果该目标数据的更新锁暂时不可用,则将该目标数据的更新锁请求放入相应的更新锁请求队列中,直到该目标数据更新锁可用为止。设有顺序连接的消息接收和发送模块、更新锁请求队列、数据维护节点信息管理模块共三个部件(参见图3),这三个模块的功能分别是.消息接收和发送模块负责接收数据维护节点发送的更新一个或多个数据的数据更新请求消息,如果更新请求消息包含多个数据的更新请求时,则消息接收和发送模块要把该消息中包含的多个目标数据的更新请求分割成彼此独立的数据更新请求后,分别发送到对应数据的更新锁请求队列中,以使每个目标数据的更新请求各自并行地分别处理,以支持多个目标数据同时进行更新。该模块还接收更新锁请求队列发送的数据更新是否完成的确认消息,并把该确认消息转发给发起数据更新请求的数据维护节点,该数据维护节点再把该确认消息反馈给客户端,以使客户端根据其接收到的确认消息判断数据更新是否成功。更新锁请求队列负责管理该系统中所有数据的更新锁请求消息,并按照先进先出的原则顺序处理队列中的消息;设有多个分别与系统中的不同数据相对应的数据更新锁请求队列,以便能够把该队列中的消息发送到数据维护节点信息管理模块,并接收数据维护节点信息管理模块返回的更新锁释放请求消息,以使更新锁请求队列能够处理下一个更新锁请求消息,并在完成处理后,向消息发送和接收模块发送数据更新是否完成的确认消肩、O数据维护节点信息管理模块负责把分散的多个数据维护节点分成不同的节点组,每个节点组至少含有一份相同数据,并负责管理包括各节点的IP地址、监听端口号及其是否处于正常运行状态的每个节点组信息。设有接收消息的时间窗口,并根据网络环境的变化实时调整该时间窗口大小。负责将数据更新消息广播给系统中含有该数据副本的所有数据维护节点,并接收数据维护节点反馈的数据更新或回滚操作是否成功的确认消息;如果该确认消息未在时间窗口设定时长内到达,则放弃等待该确认消息。还按照设定时间从集群管理节点获取该系统中的所有数据维护节点包括节点的IP地址、监听的端口号、节点的运行状态及其存储的数据副本的最新状态信息;并根据集群管理节点上存储的所有数据维护节点最新信息同步其自身存储的相关信息,以使分布式系统进行一致性数据维护更新时,减少因不可达的数据维护节点更新失败而导致更新成功的数据维护节点的回滚操作开销,从而提高数据一致性维护的可靠性和高效性。数据维护节点信息管理模块还设置数据更新请求重发次数的最大值和数据回滚操作请求重发次数的最大值。集群管理节点负责管理系统中所有节点包括其IP地址、监听端口号、运行状态和存储的数据的信息,并为全局锁管理节点中的数据维护节点信息管理模块提供各节点的最新信息。负责周期检测系统中每个数据维护节点的运行状态,并存储处于正常运行状态、且可达的数据维护节点信息,以及删除处于异常运行状态、不可达的数据维护节点信息,保证集群管理节点中只存储可达的数据维护节点信息,不可达节点不参与数据一致性的维护更新。参见6,介绍本发明分布式集群系统中分布式数据的一致性维护系统的工作方法,为方便说明,将发起数据更新请求的数据维护节点称为临时主节点,临时主节点只管理自身发起的数据更新请求。该方法包括下列操作步骤步骤1,发起数据更新请求的数据维护节点(临时主节点)向全局锁管理节点发送包含其节点自身唯一标识和期望更新的目标数据的唯一标识的数据更新锁请求消息;此时,临时主节点并未对目标数据进行更新,而处于等待更新的状态。步骤2,全局锁管理节点中的消息接收和发送模块接收到该数据更新锁请求消息,判断该消息中是否包含多个目标数据的更新请求;若是,则把该消息分割成各自独立的多个数据更新请求消息,并分别放入对应数据的更新锁请求队列中;若否,则把该消息直接发送到目标数据的更新锁请求队列中。更新锁请求队列中的消息是按照先入先出方式发送到数据维护节点信息管理模块。步骤3,数据维护节点信息管理模块接收到该消息后,先寻找到含有目标数据的数据维护节点组,并向组中的数据维护节点广播该数据更新请求消息;同时,还设置接收消息的时间窗口初始值,准备在该设定的时间窗口内,接收含有目标数据的维护节点发送的数据是否更新成功的确认消息。步骤4,含有目标数据的其他数据维护节点接收到该数据更新请求消息后,解析和执行该消息中的目标数据更新操作若为删除操作,则直接删除目标数据中的对应数据,并增加该数据的版本号;若为回滚操作,则直接回滚目标数据最近一次执行的更新,并减少数据的版本号;若为增加或修改操作,则数据维护节点先从临时主节点获取新添数据内容后,才更新目标数据,同时增加数据的版本号。步骤5,含有目标数据的其他数据维护节点的目标数据更新成功后,向全局锁管理节点发送包含该目标数据更新成功后的版本号的更新成功确认消息。步骤6,全局锁管理节`点中的数据维护节点信息管理模块判断是否接收到除去临时主节点以外,所有含有目标数据的其他数据维护节点发送的数据更新成功的确认消息,以便采取相应不同的下述后续处理操作先参见图4,介绍在正常情况下的数据一致性维护方法操作流程的时序。所谓正常情况是分布式系统中各个数据维护节点之间的网络通信未出现故障,并且各个数据维护节点自身也工作正常,没有出现任何故障。其操作步骤为(61)数据维护节点信息管理模块向临时主节点发送目标数据更新成功的确认消息,临时主节点接收到该确认消息后,取出客户端数据更新请求消息队列中的队头消息,根据该队头消息对其自身节点上的目标数据进行相应的更新操作和增加其版本号,同时分别向数据维护节点信息管理模块和客户端反馈其目标数据更新成功的确认消息。(62)数据维护节点信息管理模块接收到临时主节点发送的更新成功的确认消息后,向目标数据的更新锁请求队列发送目标数据更新锁释放请求消息;使得更新锁请求队列释放目标数据的更新锁,以供下一个数据的更新锁请求使用之。如果步骤(6)中,数据维护节点信息管理模块没有接收到所有含有目标数据的其他数据维护节点发送的数据更新成功的确认消息时,即出现下述三种异常情况(具体情况是数据维护节点更新失败、数据维护节点之间的网络连接出现故障,以及数据维护节点更新失败与数据维护节点之间网络连接故障同时存在)时,执行的处理步骤如下所述(6A)数据维护节点信息管理模块重新设置接收含有目标数据的数据维护节点发送的更新成功确认消息时间窗口大小,以及对更新失败的数据维护节点再次发送数据更新请求的最大次数;然后,向没有发送更新成功确认消息的数据维护节点再次发送目标数据的更新请求消息。(6B)数据维护节点再次接收到该更新请求消息后,先比较其目标数据的版本号是否与该消息中的数据版本号相同,若两者相同,则直接向数据维护节点信息管理模块发送更新成功的确认消息;否则,再次更新目标数据并向数据维护节点信息管理模块发送更新成功确认消息。(6C)数据维护节点信息管理模块对更新失败的数据维护节点在其设置的重发次数最大值以内的重新发送的数据更新请求,并都在设定的时间窗口内就接收到所有曾经更新失败的数据维护节点返回的更新成功确认消息,则按照步骤(61)和(62)执行相应处理操作;否则,数据维护节点信息管理模块向已经发送了更新成功确认消息的数据维护节点发送目标数据回滚操作消息,以使该数据维护节点在接收到该回滚操作消息后,撤销目标数据最近一次已执行的更新操作,并反馈回滚操作是否完成的确认消息;此后,数据维护节点信息管理模块对没有发送回滚操作完成确认消息的数据维护节点,在设定的最大重发次数以内再次发送回滚操作消息;最后,数据维护节点信息管理模块向临时主节点发送目标数据更新失败的确认消息。(6D)临时主节点接收到目标数据的更新失败的确认消息后,直接丢弃客户端数据更新请求消息队列中的队头消息,同时向数据维护节点信息管理模块和客户端分别发送目标数据更新失败的确认消息。(6E)数据维护节点信息管理模块接收到临时主节点发送的目标数据更新失败的确认消息后,向目标数据的更新锁请求队列发送更新锁释放请求消息,使得更新锁请求队列释放目标数据的更新锁,以便将其交由下一个更新锁请求消息使用;客户端接收到更新失败的确认消息后,选择集群中其它含有目标数据的数据维护节点重新发起更新请求消息,或者停止本次数据更新请求操作。再参见图5,介绍数据维护节点更新失败时,数据一致性维护的操作时序图。数据维护节点更新失败是指因数据维护节点自身故障导致数据更新的操作失败,此时的数据一致性更新过程和正常情况下的一致性更新过程的不同点是当数据维护节点信息管理模块没有接收到所有的数据维护节点的更新成功消息时,就向发送数据更新失败的数据维护节点重新广播数据更新请求消息。参见图6,介绍网络传输故障时,数据一致性维护方法的操作时序图网络传输故障是指节点之间的网络连接中断,或者指网络拥塞导致的消息传输时延加大,导致消息没有在设定时间内到达,从而造成消息被丢弃。网络传输故障时的数据一致性维护过程和上述数据维护节点更新失败时的数据一致性维护过程的两者不同点是当数据维护节点重新接收到数据更新请求消息时,不是马上重新执行数据更新操作,而是先检查目标数据的版本号是否与成功更新后的数据版本号一致,如果是,则直接发送更新成功的确认消息;如果否,才重新执行数据的更新操作。如果数据维护节点更新失败与网络故障同时存在时,本发明数据一致性维护操作是综合上述两种异常情况下的处理方式,这种情况也是本发明方法在实施数据一致性维护更新过程中经常使用的方式。因为系统本身是无法判断数据更新失败是由哪种情况引起的。 步骤7,在分布式集群系统中,数据维护节点信息管理模块完成一次数据更新的全部操作后,对其接收消息的时间窗口值进行调整,以适应网络环境的变化。
权利要求
1.一种分布式集群系统中分布式数据的一致性维护系统,其特征在于,该系统是由集群管理节点、全局锁管理节点和多个数据维护节点所组成,其中 多个数据维护节点,分散地位于分布式集群系统中,每个数据维护节点都是能够接收客户端的数据更新请求、且具有相同处理功能和各自唯一标识的同构节点,每个数据维护节点存储有一个或多个数据的副本,每个数据都附有互不相同的唯一标识和不同版本号,但同一数据的所有副本的唯一标识皆相同,每次数据更新成功后,版本号也相应变更;设有事件监听、数据一致性维护和事件发送共三个模块; 全局锁管理节点,负责存储和管理系统中所有数据的更新锁,并存储系统中所有数据维护节点信息,用于广播数据更新消息;还将含有相同数据副本的节点归属于同一组,每个数据维护节点可属于多个组;全局锁管理节点接收数据更新锁请求消息,且数据的更新锁申请成功后,分布式集群系统中各个数据维护节点之间的数据传输并不经过全局锁管理节点,以便减少其通信负担和降低故障出现概率,提高系统可靠性;数据维护节点需要更新数据时,先向全局锁管理节点申请该目标数据的更新锁;如果该目标数据的更新锁暂时不可用,则将该目标数据的更新锁请求放入相应的更新锁请求队列中,直到该目标数据更新锁可用为止;设有顺序连接的消息接收和发送模块、更新锁请求队列、数据维护节点信息管理模块共三个部件; 集群管理节点,负责管理系统中所有节点包括其IP地址、监听端口号、运行状态和存储的数据的信息,并为全局锁管理节点中的数据维护节点信息管理模块提供各节点的最新信息;负责周期检测系统中每个数据维护节点的运行状态,并存储处于正常运行状态、且可达的数据维护节点信息,以及删除处于异常运行状态、不可达的数据维护节点信息,保证集群管理节点中只存储可达的数据维护节点信息,不可达节点不参与数据一致性的维护更新。
2.根据权利要求1所述的维护系统,其特征在于所述系统的应用场景为客户端向该系统中的某个数据维护节点发起包括增加、删除或修改的数据更新请求时,所述数据维护节点首先将该数据更新请求发送到全局锁管理节点,全局锁管理节点再将该数据更新请求转发给除去发起更新请求的节点以外的、包含该目标数据的所有其他数据维护节点;当其他数据维护节点上的数据都更新成功后,发起更新请求的数据维护节点才对该目标数据执行更新操作;然后,再给发起数据更新请求的客户端返回目标数据更新完成的确认消息;如果目标数据更新失败,则所有的数据维护节点都放弃本次数据更新,保证系统中的所有数据在任何情况下都保持一致。
3.根据权利要求1所述的维护系统,其特征在于所述数据的更新锁用于限制对数据的访问数据维护节点若要更新某个数据,首先必须向全局锁管理节点申请获取该目标数据的更新锁,成功获取目标数据更新锁后,该目标数据就不再接收客户端的读写请求,直到该目标数据的更新锁被释放;如果该目标数据的更新锁暂时不能用,则该目标数据的更新请求被放入相应的更新锁请求队列中,直到该目标数据更新锁能够使用为止。
4.根据权利要求1所述的维护系统,其特征在于所述数据维护节点中的各个模块的功能如下 事件监听模块,用于监听客户端发送到该数据维护节点上的数据更新请求消息或者系统中其它节点发送到该数据维护节点上的数据更新请求消息和/或数据回滚操作消息;并把接收到的消息转送到数据一致性维护模块进行处理;所述数据回滚是撤销最近一次执行的数据更新操作; 数据一致性维护模块,用于将来自客户端发送的数据更新请求消息先保存在该数据一致性维护模块中的客户端数据更新请求消息队列中,以便按照先进先出原则处理该队列中的消息,同时向事件发送模块发送数据更新锁请求消息;而对于接收到的来自其他节点的数据更新请求消息,则直接更新该消息中的目标数据;数据更新操作包括数据内容的增力口、删除、修改或数据回滚;每次数据更新成功后或回滚操作成功后,应同时更改该数据的版本号,并把更新成功或失败的确认消息、回滚操作成功或失败的确认消息发送给事件发送模块; 事件发送模块,用于将接收到的数据更新成功或失败的确认消息、回滚操作成功或失败的确认消息或者数据更新锁请求消息发送给全局锁管理节点。
5.根据权利要求1所述的维护系统,其特征在于所述全局锁管理节点中各个模块的功能如下 消息接收和发送模块,负责接收数据维护节点发送的更新一个或多个数据的数据更新请求消息,如果更新请求消息包含多个数据的更新请求时,则消息接收和发送模块要把该消息中包含的多个目标数据的更新请求分割成彼此独立的数据更新请求后,分别发送到对应数据的更新锁请求队列中,以使每个目标数据的更新请求并行地各自分别处理,以支持多个目标数据同时进行更新;该模块还接收更新锁请求队列发送的数据更新是否完成的确认消息,并把该确认消息转发给发起数据更新请求的数据维护节点,该数据维护节点再把该确认消息反馈给客户端,以使客户端根据其接收到的确认消息判断数据更新是否成功; 更新锁请求队列,负责管理该系统中所有数据的更新锁请求消息,并按照先进先出的原则顺序处理队列中的消息;设有多个分别与系统中的不同数据相对应的数据更新锁请求队列,以便能够把该队列中的消息发送到数据维护节点信息管理模块,并接收数据维护节点信息管理模块返回的更新锁释放请求消息,以使更新锁请求队列能够处理下一个更新锁请求消息,并在完成处理后,向消息发送和接收模块发送数据更新是否完成的确认消息; 数据维护节点信息管理模块,负责把散布的多个数据维护节点分成不同的节点组,每个节点组至少含有一份相同数据和负责管理包括各节点的IP地址、监听端口号及其是否处于正常运行状态的信息;设有接收消息的时间窗口,并根据网络环境的变化实时调整该时间窗口大小;负责将数据更新消息广播给系统中含有该数据副本的所有数据维护节点,并接收反馈的数据更新或回滚操作是否成功的确认消息,如果确认消息未在时间窗口设定时长内到达,则放弃接收该消息;还按照设定时间从集群管理节点获取该系统中所有数据维护节点包括节点的IP地址、监听的端口号、节点的运行状态及其存储的数据副本的最新信息;以便根据集群管理节点上存储的所有数据维护节点最新信息同步其自身存储的相关信息,使得分布式系统进行一致性数据维护更新时,减少因不可达的数据维护节点更新失败而导致更新成功的数据维护节点的回滚操作开销,从而提高数据一致性维护的可靠性和高效性;数据维护节点信息管理模块还设置数据更新请求重发次数的最大值和数据回滚操作请求重发次数的最大值。
6.一种分布式集群系统中分布式数据的一致性维护系统的工作方法,其特征在于所述方法包括下列操作步骤(1)发起数据更新请求的数据维护节点、即只管理自身发起的数据更新请求的临时主节点先向全局锁管理节点发送包含其节点唯一性标识和期望更新的目标数据的唯一性标识的数据更新锁请求消息;此时,临时主节点并未对目标数据进行更新,而处于等待更新的状态; (2)全局锁管理节点中的消息接收和发送模块接收到该数据更新锁请求消息,判断该消息中是否包含多个目标数据的更新请求;若是,则把该消息分割成各自独立的多个数据更新请求消息,并分别放入对应数据的更新锁请求队列中;若否,则把该消息直接发送到目标数据的更新锁请求队列中;更新锁请求队列中的消息是按照先入先出方式发送到数据维护节点信息管理模块; (3)数据维护节点信息管理模块接收到该消息后,先寻找到含有目标数据的数据维护节点组,并向组中的数据维护节点广播该数据更新请求消息;同时,还设置接收消息的时间窗口初始值,准备在该设定的时间窗口内,接收含有目标数据的维护节点发送的数据是否更新成功的确认消息; (4)含有目标数据的其他数据维护节点接收到该数据更新请求消息后,解析和执行该消息中的目标数据更新操作若为删除操作,则直接删除目标数据中的对应数据,并增加该数据的版本号;若为回滚操作,则直接回滚目标数据最近一次执行的更新,并减少数据的版本号;若为增加或修改操作,则数据维护节点先从临时主节点获取新添数据内容后,才更新目标数据,同时增加数据的版本号; (5)含有目标数据的其他数据维护节点的目标数据更新成功后,向全局锁管理节点发送包含该目标数据更新成功后的版本号的更新成功确认消息; (6)全局锁管理节点中的数据维护节点信息管理模块判断是否接收到除去临时主节点以外,所有含有目标数据的其他数据维护节点发送的数据更新成功的确认消息,以便采取相应不同的后续处理操作; (7)在分布式集群系统中,数据维护节点信息管理模块完成一次数据更新的全部操作后,对其接收消息的时间窗口值进行调整,以适应网络环境的变化。
7.根据权利要求6所述的工作方法,其特征在于所述步骤(6)中,数据维护节点信息管理模块接收到含有目标数据的所有其他数据维护节点发送的数据更新成功的确认消息时,执行的后续处理步骤如下 (61)数据维护节点信息管理模块向临时主节点发送目标数据更新成功的确认消息,临时主节点接收到该确认消息后,取出客户端数据更新请求消息队列中的队头消息,并根据该队头消息对其自身节点的目标数据进行相应的更新和增加其版本号,同时分别向数据维护节点信息管理模块和客户端反馈其目标数据更新成功的确认消息; (62)数据维护节点信息管理模块接收到临时主节点发送的更新成功的确认消息后,向目标数据的更新锁请求队列发送目标数据更新锁释放请求消息;使得更新锁请求队列释放目标数据的更新锁,以供下一个数据的更新锁请求使用之。
8.根据权利要求6或7所述的工作方法,其特征在于所述步骤(6)中,数据维护节点信息管理模块没有接收到所有含有目标数据的其他数据维护节点发送的数据更新成功的确认消息时,执行的后续处理步骤如下 (6A)数据维护节点信息管理模块重新设置接收含有目标数据的数据维护节点发送的更新成功确认消息时间窗口大小,以及设置更新失败的数据维护节点再次发送数据更新请求的最大次数;然后,向没有发送更新成功确认消息的数据维护节点再次发送目标数据的更新请求消息; (6B)数据维护节点再次接收到该更新请求消息后,先比较其目标数据的版本号是否与该消息中的数据版本号相同,若两者相同,则直接向数据维护节点信息管理模块发送更新成功的确认消息;否则,再次更新目标数据,并向数据维护节点信息管理模块发送更新成功确认消息; (6C)数据维护节点信息管理模块对更新失败的数据维护节点在其设置的重发次数最大值以内的重新发送的数据更新请求,并且在设定的时间窗口内就接收到所有曾经更新失败的数据维护节点返回的更新成功确认消息,则按照步骤(61)和(62)执行相应处理操作;否则,就向已经发送了更新成功确认消息的数据维护节点发送目标数据回滚操作消息,以使该数据维护节点在接收到该回滚操作消息后,撤销目标数据最近一次已执行的更新操作,并反馈回滚操作是否完成的确认消息;此后,数据维护节点信息管理模块对没有发送回滚操作完成确认消息的数据维护节点,在设定的最大重发次数以内再次发送回滚操作消息;最后,向临时主节点发送目标数据更新失败的确认消息; (6D)临时主节点接收到目标数据的更新失败的确认消息后,直接丢弃客户端数据更新请求消息队列中的队头消息,同时向数据维护节点信息管理模块和客户端分别发送目标数据更新失败的确认消息; (6E)数据维护节点信息管理模块接收到临时主节点发送的目标数据更新失败的确认消息后,向目标数据的更新锁请求队列发送更新锁释放请求消息,使得更新锁请求队列释放目标数据的更新锁,以便将其交由下一个更新锁请求消息使用;客户端接收到更新失败的确认消息后, 选择集群中其它含有目标数据的数据维护节点重新发起更新请求消息,或者停止本次数据更新请求操作。
全文摘要
一种分布式集群系统中分布式数据的一致性维护系统和方法,由集群管理节点、全局锁管理节点和多个分散位于系统中的数据维护节点组成该系统,其中,数据维护节点都是存储一个或多个数据副本的同构节点,设有事件监听、数据一致性维护和事件发送三个模块。全局锁管理节点负责存储和管理系统中所有数据的更新锁和存储所有数据维护节点信息,设有消息接收和发送模块、更新锁请求队列、数据维护节点信息管理模块三个部件。集群管理节点负责管理系统中所有节点最新信息,并负责周期检测系统中每个节点的状态。本发明方法工作可靠和灵活,客户端可对多个目标数据同时发起数据更新。且在数据更新过程中,操作简便,通信开销少,更新时延短,应用前景看好。
文档编号H04L12/24GK103036717SQ20121053537
公开日2013年4月10日 申请日期2012年12月12日 优先权日2012年12月12日
发明者赵耀, 邹志勇, 宋颖莹, 彭书凯, 杨放春, 邹华 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1