一种分布式系统的数据一致性方法及装置与流程

文档序号:11677219阅读:163来源:国知局
一种分布式系统的数据一致性方法及装置与流程

本发明涉及计算机应用技术领域,特别涉及一种分布式系统的数据一致性方法及装置。



背景技术:

随着现代社会的发展,人们对于计算机的应用越来与广泛,使得分布式存储系统得到了广泛的发展。

一个完整的分布式存储系统是由很多处在不同位置的节点通过网络连接在一起形成的,海量的数据分布在整个系统的不同节点中。连接到该分布式存储系统的所有计算机都可以访问任意一个节点中的数据。有些是只读数据,有些是可写数据,在读写数据的时候一个很重要的问题就是要保证每次读到的数据是可信的。这里不仅指数据的真实性,我们更关注的是,数据是否为脏数据,即已经被更新过,但是在访问中并没有体现出来的数据。由于在分布式存储系统中数据量巨大,而且每个数据对象的副本数量多,因此,此时维护各个节点中副本的一致性,也就是用户的数据一致性成为了一个很关键的问题。

现有技术中,分布式系统维护各个节点中副本的一致性的方式为实时更新数据,也就是分布式系统中每个节点对数据进行改动后,将该数据对应的副本传输至其他具有该数据对应的副本的其他的节点中,使其他的节点更新该数据对应副本。由于在分布式系统中,为了保证高性能,对于系统中的每个用户都要尽量减小网络的延迟和因网络拥塞造成的影响。但是,这种实时更新数据的方式,对网络带宽的要求较高,并且对网络性能的要求更高,也就是网络的延迟和网络拥塞的情况更容易对分布式系统造成影响。因此如何使用一种新的数据一致性方法,减小分布式系统对网络的负载,降低分布式系统对网络性能的要求,是现今急需解决的问题。



技术实现要素:

本发明的目的是提供一种分布式系统的数据一致性方法及装置,以利用时间戳的机制将分布式系统中的数据的强一致性需求变为最终一致性需求,减小分布式系统对网络的负载,降低分布式系统对网络性能的要求。

为解决上述技术问题,本发明提供一种分布式系统的数据一致性方法,包括:

当节点需要改动数据时,向分布式系统中的全部其他节点广播所述数据的辨识信息和所述数据对应的保存在所述节点的副本的最新的时间戳;其中,所述时间戳为所述节点记录的所述副本的更新时间;

所述节点判断是否接收到所述其他节点发送的副本;

若否,则所述节点对所述数据进行改动,并更新所述副本。

可选的,所述当所述节点再次需要改动所述数据时,向分布式系统中的其他节点广播所述数据的改动消息之后,还包括:

所述其他节点根据接收到的所述辨识信息和所述时间戳后,判断自身是否保存有所述数据对应的副本;

若是,则判断所述其他节点保存的所述数据对应的副本中的时间戳是否比所述时间戳新;

若所述其他节点保存的所述数据对应的副本中的时间戳不比所述时间戳新,则所述其他节点根据所述副本更新自身保存的所述数据对应的副本。

可选的,所述判断所述其他节点保存的所述数据对应的副本中的时间戳是否比所述时间戳新之后,还包括:

若所述其他节点保存的所述数据对应的副本中的时间戳比所述时间戳新,则所述其他节点将比所述时间戳新的所述数据对应的副本发送至所述节点。

可选的,所述节点判断是否接收到所述其他节点发送的副本之后,还包括:

若所述节点接收到所述其他节点发送的副本,则所述节点根据接收到的副本中的时间戳,选择最新的时间戳对应的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动。

可选的,所述若所述节点接收到所述其他节点发送的副本,则所述节点根据接收到的副本中的时间戳,选择最新的时间戳对应的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动,包括:

若所述节点接收到一个所述其他节点发送的副本,则根据接收到的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动。

此外,本发明还提供了一种分布式系统的数据一致性装置,包括:

广播模块,用于当节点需要改动数据时,向分布式系统中的全部其他节点广播所述数据的辨识信息和所述数据对应的保存在所述节点的副本的最新的时间戳;其中,所述时间戳为所述节点记录的所述副本的更新时间;

第一判断模块,用于所述节点判断是否接收到所述其他节点发送的副本;

改动模块,用于若所述节点未接收到所述其他节点发送的副本,则所述节点对所述数据进行改动,并更新所述副本。

可选的,该装置还包括:

第二判断模块,用于所述其他节点根据接收到的所述辨识信息和所述时间戳后,判断自身是否保存有所述数据对应的副本;

第三判断模块,用于若自身保存有所述数据对应的副本,则判断所述其他节点保存的所述数据对应的副本中的时间戳是否比所述时间戳新;

更新模块,用于若所述其他节点保存的所述数据对应的副本中的时间戳不比所述时间戳新,则所述其他节点根据所述副本更新自身保存的所述数据对应的副本。

可选的,该装置还包括:

发送模块,用于若所述其他节点保存的所述数据对应的副本中的时间戳比所述时间戳新,则所述其他节点将比所述时间戳新的所述数据对应的副本发送至所述节点。

可选的,该装置还包括:

选择改动模块,用于若所述节点接收到所述其他节点发送的副本,则所述节点根据接收到的副本中的时间戳,选择最新的时间戳对应的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动。

可选的,所述选择改动模块,包括:

改动单元,用于若所述节点接收到一个所述其他节点发送的副本,则根据接收到的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动。

本发明所提供的一种分布式系统的数据一致性方法,包括:当节点需要改动数据时,向分布式系统中的全部其他节点广播所述数据的辨识信息和所述数据对应的保存在所述节点的副本的最新的时间戳;其中,所述时间戳为所述节点记录的所述副本的更新时间;所述节点判断是否接收到所述其他节点发送的副本;若否,则所述节点对所述数据进行改动,并更新所述副本;

可见,本发明通过当节点需要改动数据时,向分布式系统中的全部其他节点广播数据的辨识信息和数据对应的保存在节点的副本的最新的时间戳,可以使节点在需要对数据进行改动时,查看其他节点是否存在该数据对应的更新的副本,通过节点判断是否接收到其他节点发送的副本,确定节点保存的副本是否为最新版本,使节点可以根据最新版本的副本也就是可信的副本对数据进行改动,保证了节点改动数据前副本的一致性,因不需要实时传输副本,使得分布式系统对网络的负载小,降低了分布式系统对网络性能的要求,提升了用户体验。此外,本发明还提供了一种分布式系统的数据一致性装置,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种分布式系统的数据一致性方法的流程图;

图2为本发明实施例所提供的一种分布式系统的数据一致性方法的流程图;

图3为本发明实施例所提供的一种分布式系统的数据一致性装置的结构图。

具体实施方式

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

请参考图1,图1为本发明实施例所提供的一种分布式系统的数据一致性方法的流程图。该方法可以包括:

步骤101:当节点需要改动数据时,向分布式系统中的全部其他节点广播所述数据的辨识信息和所述数据对应的保存在所述节点的副本的最新的时间戳;其中,所述时间戳为所述节点记录的所述副本的更新时间。

需要说明的是,时间戳可以为节点对数据进行改动后,保存在该数据对应的副本的该副本更新时间,也就是该数据的改动时间。也就是说,本实施所示的方法,可以在现有技术中节点保存的副本中加入时间戳,用于记录副本保存的时间后副本的更新时间。对于时间戳加入副本的具体位置,本实施例不做任何限制。

具体的,对于副本中记录时间戳方式,可以为每次更新副本后,对应更新时间戳,也就是副本中只记录有一个最新的时间戳;也可以为每次更新副本后,加入本次跟新副本对应的时间戳,也就是副本中记录有多次更新副本时间的时间戳;还可以使用其他方式。本实施例对此不做任何限制。

可以理解的是,本步骤可以为节点在改动数据前,将要改动的数据的辨识信息和自身保存的该数据对应的副本中最新的时间戳发送给全部其他节点,用于全部其他节点根据辨识信息和时间戳确定各自是否保存有比该时间戳更加新的该数据对应的副本,并将更加新的副本发送给要改动该数据的节点。对于节点进行广播的方式以及广播的内容,只要可以达到上述效果,本实施例不做任何限制。对于上述辨识信息的具体内容,只要可以使其他节点确定该数据,可以为该数据的名称也可以为其他信息,本实施例对此不做任何限制。

具体的,对于其他节点接收上述辨识信息和时间戳后的具体处理流程,也可以说是,本节点接收到其他节点广播的辨识信息和时间戳后的具体处理流程,只要可以达到将更加新的该数据对应的副本发送给要改动该数据的节点,达到该节点保存的副本为该数据对应的最新副本的目的,本实施例不做任何限制。

可选的,对于节点向分布式系统中的全部其他节点广播数据的辨识信息和数据对应的保存在节点的副本的最新的时间戳的时间,也就是节点确定是否需要更新副本的时间,可以如本实施例所示,在对该数据进行改动之前,也可以为其他时间,如网络空闲的时间,只要可以保证在对该数据进行改动之前保证节点保存的该数据对应的副本为最新副本,对于广播的时间,本实施例不做任何限制。

可选的,本实施例所示的方法是通过广播辨识信息和时间戳的方式,确保节点对数据改动前,自身保存的该数据对应的副本为最新副本;也可以通过只广播辨识信息的方式,如其他节点根据该辨识消息将该数据对应的副本中的时间戳发送给该节点,该节点将接收的最新的时间戳与自身保存的副本中的时间戳进行比较,确定自身保存的该数据对应的副本是否为最新副本。本实施例对此不做任何限制。

步骤102:所述节点判断是否接收到所述其他节点发送的副本;若否,则进入步骤103。

其中,本步骤可以为根据是否接收到其他节点发送的副本,确定要改动数据的节点保存的该数据对应的副本是否为最新副本,从而确定是否需要更新该节点保存的副本。

可以理解的是,只要可以确定要改动数据的节点保存的该数据对应的副本是否为最新副本,对于具体的判断步骤,可以如本步骤所示,也可以根据其他节点具体的发送内容对应改变,如其他节点先发送该节点需要更新副本的消息,本步骤可以变为该节点是否接收到需要更新副本的消息。本实施例对此不做任何限制。对于本步骤进行的时间,可以根据其他节点对上述该节点广播的信息的处理时间对应设置,如每个其他节点接收到该节点广播的消息后,最多一秒便可以返回更加新的副本或确定该节点的副本跟新,则本步骤可以该节点广播一秒后进行,本实施例对此不做任何限制。

需要说明的是,对于节点接收到其他节点发送的副本的情况,可以该节点根据接收的时间戳最新的副本更新自身的副本,从而保证该节点在改动数据前自身保存的副本为最新副本,达到根据最新副本也就是可信副本对数据进行改动的目的。本实施例对此不做任何限制。

步骤103:所述节点对所述数据进行改动,并更新所述副本。

可以理解的是,本步骤中节点根据自身保存的最新的数据对应的副本对数据进行改动,对于具体的改动数据的流程,也就是根据副本判断是否数据需要改动的步骤和其他步骤,本实施例不做任何限制。

需要说明的是,节点对数据进行改动后,可以更新自身保存的该数据对应的副本以及副本中的时间戳。

本实施例中,本发明实施例通过当节点需要改动数据时,向分布式系统中的全部其他节点广播数据的辨识信息和数据对应的保存在节点的副本的最新的时间戳,可以使节点在需要对数据进行改动时,查看其他节点是否存在该数据对应的更新的副本,通过节点判断是否接收到其他节点发送的副本,确定节点保存的副本是否为最新版本,使节点可以根据最新版本的副本也就是可信的副本对数据进行改动,保证了节点改动数据前副本的一致性,因不需要实时传输副本,使得分布式系统对网络的负载小,降低了分布式系统对网络性能的要求,提升了用户体验。

请参考图2,图2为本发明实施例所提供的一种分布式系统的数据一致性方法的流程图。该方法可以包括:

步骤201:当节点需要改动数据时,向分布式系统中的全部其他节点广播数据的辨识信息和数据对应的保存在节点的副本的最新的时间戳。

其中,本步骤与步骤101相似,在此不再赘述。

步骤202:其他节点根据接收到的辨识信息和该时间戳后,判断自身是否保存有数据对应的副本;若是,则进入步骤203。

可以理解的是,本步骤的目的可以为每个其他节点根据接收到需要改动数据的辨识信息确定自身是否保存有该数据对应的副本。对于本步骤的具体判断过程,只要可以达到本步骤的目的,本实施例不做任何限制。

需要说明的是,对于其他节点判断出未保存有该数据对应的副本的情况,其他节点可以直接结束本方法,也可以向该广播的节点发送未保存该数据对应的节点的确认消息,本实施例对此不做任何限制。

步骤203:判断其他节点保存的数据对应的副本中的时间戳是否比该时间戳新;若否,则进入步骤204;若是,则进入步骤205。

其中,本步骤的目的是为了其他节点通过时间戳的比较判断自身保存的数据对应的副本是否比进行广播的节点保存的该数据对应的节点新。

步骤204:其他节点根据副本更新自身保存的数据对应的副本。

可以理解的是,其他节点可以根据进行广播的节点保存的更加新的数据对应的副本更新自身的副本,也可以不更新自身的副本,或将自身的副本中的时间戳发送至该节点。本实施例对此不做任何限制。

需要说明的是,对于其他节点根据进行广播的节点保存的更加新的数据对应的副本更新自身的副本的方式,可以为向该节点发送需要该副本的消息,等待该节点传输该副本,也可以直接从该节点传输该副本,本实施例对此不做任何限制。

步骤205:其他节点将比该时间戳新的数据对应的副本发送至节点。

需要说明的是,其他节点可以如本步骤所示将比广播的时间戳新的数据对应的副本发送至进行广播的节点,也可以只将副本中的时间戳发送至该节点。本实施例对此不做任何限制。

可以理解的是,步骤202至步骤205可以为分布式系统中除进行广播的节点外全部其他节点均需进行的步骤,步骤202至步骤205中的其他节点可以为全部其他节点中的一个。也就是说,每个其他节点均可以进行上述步骤。本实施例对此不受任何限制。

步骤206:节点判断是否接收到其他节点发送的副本;若否,则进入步骤207;若是,则进入步骤208。

步骤207:节点对数据进行改动,并更新副本。

其中,步骤206和步骤207与步骤102和步骤103相似,在此不再赘述。

步骤208:节点根据接收到的副本中的时间戳,选择最新的时间戳对应的副本更新副本,并根据更新后的副本对数据进行改动。

其中,本步骤可以为进行广播的节点根据接收到其他节点的数据对应的更加新的副本,选择最新的副本更新自身保存的副本。只要可以达到将自身保存的副本更新为最新副本的目的,对于最新副本的比较方式,可以如本实施例所示,直接比较接收的副本的时间戳;也可以根据接收到的时间戳进行比较,再从最新的时间戳对应的其他节点接收最新副本并更新。本实施例对此不受任何限制。

可以理解的是,本实施例所示的方法中,包含节点对接收的副本的时间戳进行比较的步骤,对于只接收到一个副本或通过在本实施例所提供的方法的基础上加入其他步骤保证节点只会接收一个最新副本的情况,可以不进行该比较步骤或直接去除该比较步骤,本实施例对此不受任何限制。

本实施例中,本发明实施例通过其他节点根据副本更新自身保存的数据对应的副本,可以是其他节点保存的该数据对应的副本得到更新,避免分布式系统中各节点保存的该数据对应的副本间的差距过大;通过节点根据接收到的副本中的时间戳,选择最新的时间戳对应的副本更新副本,并根据更新后的副本对数据进行改动,可以使节点在改动数据前获取该数据对应的最新副本,从而根据最新副本改动该数据,保证了各节点最终的副本一致性,也就是分布式系统的数据一致性。

请参考图3,图3为本发明实施例所提供的一种分布式系统的数据一致性装置的结构图。该装置可以包括:

广播模块100,用于当节点需要改动数据时,向分布式系统中的全部其他节点广播所述数据的辨识信息和所述数据对应的保存在所述节点的副本的最新的时间戳;其中,所述时间戳为所述节点记录的所述副本的更新时间;

第一判断模块200,用于所述节点判断是否接收到所述其他节点发送的副本;

改动模块300,用于若所述节点未接收到所述其他节点发送的副本,则所述节点对所述数据进行改动,并更新所述副本。

可选的,该装置还可以包括:

第二判断模块,用于所述其他节点根据接收到的所述辨识信息和所述时间戳后,判断自身是否保存有所述数据对应的副本;

第三判断模块,用于若自身保存有所述数据对应的副本,则判断所述其他节点保存的所述数据对应的副本中的时间戳是否比所述时间戳新;

更新模块,用于若所述其他节点保存的所述数据对应的副本中的时间戳不比所述时间戳新,则所述其他节点根据所述副本更新自身保存的所述数据对应的副本。

可选的,该装置还可以包括:

发送模块,用于若所述其他节点保存的所述数据对应的副本中的时间戳比所述时间戳新,则所述其他节点将比所述时间戳新的所述数据对应的副本发送至所述节点。

可选的,该装置还可以包括:

选择改动模块,用于若所述节点接收到所述其他节点发送的副本,则所述节点根据接收到的副本中的时间戳,选择最新的时间戳对应的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动。

可选的,所述选择改动模块,可以包括:

改动单元,用于若所述节点接收到一个所述其他节点发送的副本,则根据接收到的副本更新所述副本,并根据更新后的所述副本对所述数据进行改动。

本实施例中,本发明实施例通过广播模块100当节点需要改动数据时,向分布式系统中的全部其他节点广播数据的辨识信息和数据对应的保存在节点的副本的最新的时间戳,可以使节点在需要对数据进行改动时,查看其他节点是否存在该数据对应的更新的副本,通过第一判断模块200使节点判断是否接收到其他节点发送的副本,确定节点保存的副本是否为最新版本,使节点可以根据最新版本的副本也就是可信的副本对数据进行改动,保证了节点改动数据前副本的一致性,因不需要实时传输副本,使得分布式系统对网络的负载小,降低了分布式系统对网络性能的要求,提升了用户体验。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的分布式系统的数据一致性方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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