首页> 中国专利> 一种实现机群环境中数据有效性的方法

一种实现机群环境中数据有效性的方法

摘要

本发明方案公开了一种实现机群环境中数据有效性的方法,该方法首先设置包含文件头及数据的数据文件格式,其中,文件头保存用于标识数据文件的版本信息,数据中则保存全局性数据,还需确定当前的配置结点;该配置结点在自身的数据文件被修改时,向机群系统中的其他普通结点发送包含版本信息的更新请求,收到该更新请求的普通结点根据版本信息进行比较,如果配置结点中的数据文件新,则将自身保存的数据文件更新为配置结点中的数据文件,并根据本结点上的信息对文件头作相应的修改;如果普通结点中的数据文件新,则要求配置结点将其保存的数据文件更新为本普通结点中的数据文件,同样需要对文件头进行修改;如果两个数据文件一样新,则不作处理。

著录项

  • 公开/公告号CN1664805A

    专利类型发明专利

  • 公开/公告日2005-09-07

    原文格式PDF

  • 申请/专利权人 联想(北京)有限公司;

    申请/专利号CN200410006937.6

  • 申请日2004-03-01

  • 分类号G06F15/177;G06F11/00;

  • 代理机构11018 北京德琦知识产权代理有限公司;

  • 代理人罗正云;宋志强

  • 地址 100085 北京市海淀区上地信息痖基础创业路6号

  • 入库时间 2023-12-17 16:25:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-04-08

    授权

    授权

  • 2005-11-02

    实质审查的生效

    实质审查的生效

  • 2005-09-07

    公开

    公开

说明书

技术领域

本发明涉及计算机数据访问和存储技术领域,更确切地说是涉及一种实现机群环境中数据有效性的方法。

背景技术

在机群环境中,各个结点之间需要共享很多的全局性数据。以典型的服务所对应的机群环境为例。大部分服务都需要使用一些配置数据。具体来说,服务在启动时,会从这些配置数据中读取配置信息;在运行过程中,还会根据需要更改数据或重新读取配置数据。如果服务只由单台服务器提供,由于单台服务器上配置信息的提供方和需求方往往都是唯一的,至少配置信息的入口是唯一的,因此单台服务器上配置信息的情况比较简单。

但是,如果服务是由多台服务器提供,并形成了大规模的机群环境,比如,多台服务器构成一个服务聚集,以提供某种或多种功能强大的服务,则情况会复杂得多。一个具体的例子就是使用多台Web服务器构成一个Web服务机群。在服务聚集中,每台服务器上的服务实例都需要使用配置文件,而一个服务聚集中所有服务器所使用的配置数据应该是唯一的。这就带来了如何在大规模机群环境中有效、安全地保存配置文件,并确保配置文件有效性的问题。另外,由于服务聚集本身就是动态的,既可能由于某些服务结点发生故障退出机群,又可能有新的服务结点加入机群承担服务,这就更增加了维护系统全局性数据有效性的难度。而机群系统要求全局性数据对于所有结点都要保持有效性,数据的有效性包括两方面:在任何时刻,所有结点中的任何服务进程或其它程序都可以随时访问配置数据,即数据的可用性;且所有结点所访问到的数据都是一致的,即数据的一致性。另外,配置数据还应该是高效的,也就是说,配置数据不会因为配置文件不一致等问题影响到服务的可用性,其访问效率不会随着机群规模的变化而发生显著的变化。

目前在大规模机群环境中,对于全局性数据访问和存储有两种策略:一种是集中式策略,另一种是分布式策略。集中式策略是将全局性数据集中保存在专用的配置服务器上,所有的全局性数据都必须由专用的服务器提供;分布式策略是在每个服务结点上都保存一份全局性数据的复本,由某种机制来确保这些全局性数据的一致性。对于这两种策略来说,集中式策略的优点是实现比较简单,但是这种策略存在单一故障点,也就是说,一旦提供全局性的配置结点出现异常,则无法继续提供全局性数据,并且客户端需要随时感知服务器的存在,否则可能造成全局性数据不可用、或数据陈旧的问题,也即客户端无法真正透明地使用全局性数据。另外,由于该策略需要每台服务器对专用的配置服务器进行访问,容易形成性能瓶颈,因此很容易对网络等资源产生较大的压力。分布式策略的优点是使客户端能够简单、高效地获取全局性数据,但是这种策略必须确保各个结点中全局性数据的一致性,这无疑增加了系统实现的难度,实际当中往往不能完全实现各个结点中全局性数据的一致性。另外,由于确保全局性数据一致性需要一定的系统维护时间,因此这种分布式策略还会降低系统的可用度。

对于目前采用集中式策略的机群环境来说,通常有两种使用方法,一种是使用一个集中的数据库来保存数据文件,该方法要求客户端通过访问数据库获取数据文件;另一种是使用文件系统来保存数据,该方法通过NFS等机制实现数据的共享。这两种使用方法除了以上所述的缺点之外,还有可扩展性很差的问题,这必然会限制该方法的应用范围,也就是说,该方法不适合大规模的机群环境。对于目前采用分布式策略的机群环境来说,通常是在更新数据时对数据进行同步,也有定时对数据进行同步的做法。不管采用的是哪种同步方法,如果在同步时某个结点出现故障,则该结点上的数据就不能被正确地更新。而且发出更改配置操作的源结点也可能会出现问题:在更改配置时如果采用唯一的配置结点,虽然可以较好地回避数据不一致的问题,但是该配置结点可能会成为单一故障点;如果采用多个配置结点,则很难判断出哪个结点上的配置信息是最新的,系统在运行一段时间后,很可能会出现数据混乱,甚至给系统带来灾难性的后果。

综上所述,目前各种访问和存储全局性数据的方案都不能很好地保证机群系统中数据的有效性。

发明内容

有鉴于此,本发明的主要目的在于提供一种实现机群环境中数据有效性的方法,以在维护机群环境中数据一致的同时,尽量提高访问效率和可用性。

为达到以上目的,本发明的技术方案是这样实现的:一种实现机群环境中数据有效性的方法,该方法包括以下步骤:

a.预先设置包含文件头及数据的数据文件格式,并在文件头中设置用于标识数据文件版本的版本信息,所有结点在本地系统中以该数据文件格式保存全局性数据;

b.从机群系统中确定当前唯一的配置结点;

c.配置结点在自身的数据文件被修改时,向当前存活的、且除本配置结点以外的其他普通结点发送包含数据文件头中的版本信息的更新请求;收到该更新请求的普通结点首先根据该更新请求中携带的文件头信息及自身数据文件中的文件头信息,判断配置结点中的数据文件是否新于自身保存的数据文件,如果两个数据文件的版本信息相同,则不作处理;如果配置结点中的数据文件新,则将自身保存的数据文件更新为配置结点中的数据文件,并对数据文件头中的版本信息作相应修改;如果普通结点中的数据文件新,则向配置结点发送要求配置结点更新数据文件的更新请求,配置结点收到该更新请求后,用该普通结点中的全局性数据更新自身保存的全局性数据,并对数据文件头中的版本信息作相应修改,之后再重复执行步骤c。

所述步骤b中,所述确定配置结点为:将首先加入机群、且能够修改全局性数据的结点作为配置结点。

该方法可以进一步包括:普通结点在将全局性数据保存到本地系统时,判断当前保存是否正确执行,如果正确,则不作处理,否则,退出机群系统。

该方法还可以进一步包括:

普通结点在加入到机群系统时,首先根据数据文件头中的版本信息判断配置结点中的数据文件是否新于自身保存的数据文件,如果两个数据文件同样新,则直接加入机群系统;如果配置结点中的数据文件新,则该普通结点将自身保存的数据文件更新为配置结点中的数据文件,并加入机群系统;如果数据结点中的数据文件新,则该普通结点向配置结点发送要求配置结点更新数据文件的更新请求,并加入机群系统,配置结点收到该更新请求后,将自身保存的数据文件更新为该普通结点中的数据文件,之后,再执行步骤c。

所述数据文件头中包含的版本信息为:版本号;

该方法进一步包括:配置结点中的数据文件被修改一次,则将该数据文件中的版本号加一;

所述判断配置结点中的数据文件是否新于普通结点中的数据文件为:根据数据文件头中的版本号进行判断,如果配置结点中的数据文件所对应的版本号大,则确定该配置结点中的数据文件新;如果普通结点中的数据文件所对应的版本号大,则确定该普通结点中的数据文件新;如果两个数据文件中的版本号相同,则确定这两个数据文件相同。

所述数据文件头中包含的版本信息进一步包括:当前数据文件的生存时间;

该方法可以进一步包括:结点在获取当前的数据文件时,确定该数据文件的生存时间,并将该生存时间保存在数据文件头中;

所述当前数据文件的生存时间为:最近一次对数据文件进行修改的时间与结点上的当前时间之间的时间段,与当前数据文件从最近一次被修改到写入本结点之间的时间段的和;

所述在根据版本号确定两个数据文件相同之前,进一步包括:根据两个数据文件的生存时间进行判断;如果配置结点所对应的数据文件生存时间短,则确定该数据文件新于普通结点中的数据文件;如果普通结点所对应的数据文件的生存时间短,则确定该数据文件新于配置结点中的数据文件;如果两个结点中的数据文件相同,则确定这两个数据文件相同。

该方法可以进一步包括:预先设置一个存活时间间隔;

所述在根据两个数据文件的生存时间进行判断时,如果两个数据文件的存活时间的间隔小于预先设置的存活时间间隔,则确定这两个数据文件相同。

所述数据文件头中包含的版本信息进一步包括:最近一次对当前数据文件进行修改的结点名称;

所述在根据版本号及数据文件的生存时间确定两个数据文件相同之前,获取最近一次对两个数据文件进行修改的结点名称,确定这两个结点中最近用作配置结点的结点所对应的数据文件新于另一个数据文件;如果这两个结点为同一个结点,则确定这两个数据文件相同。

该方法可以进一步包括:将数据文件的更新粒度设置为文件级。

该方法还可以进一步包括:机群系统在确定当前配置结点出现故障时,自动在所有结点中选择其他结点作为当前的配置结点。

本发明方案具有以下优点:

1)通过配置结点在自身保存的数据文件被修改后,即要求机群系统中的普通结点作相应的修改,确保了机群系统结点间数据的一致性;

2)配置结点在向其他普通结点发送更新请求时,普通结点通过判断数据文件头确定哪个数据文件更新,即使某个结点发生故障、甚至是大规模的结点发生故障时,依然能够保证机群系统中的全局性数据有效;

3)由于数据文件是保存在结点的本地系统,因此,每个结点获取全局性数据时,只读取本地的数据文件即可,而且结点更新数据文件的频率不会很高,因此确保全局性数据的访问效率较高,且不会随机群系统规模的变化而发生显著的变化,还能够尽量减少对网络带宽等资源的占用,且不会出现性能瓶颈的问题,具有良好的可扩展性;

4)由于虽然在某一时刻只有一个配置结点,但是如果当前的配置结点发生故障,还可以采用其他的配置结点,因此,本发明方案还消除了出现单一故障点的情况。

5)在版本新旧的比较过程中,本发明提出了一种基于版本、生存时间和最近一次修改的结点名的方法,既可以准确地判断数据文件版本的新旧,又消除了传统上基于时间戳方法所对于结点间时钟同步的要求。

附图说明

图1为本发明方案中由配置结点通知普通结点更新数据文件的流程图;

图2为本发明方案中普通结点在新加入机群系统时,与配置结点中的数据文件进行比较的流程图。

具体实施方式

下面结合附图及具体实施例对本发明方案作进一步详细的说明。

考虑到机群环境中所有结点在访问全局性数据时的角色各不相同,我们可以将所有的结点分为两类:配置结点和普通结点。配置结点是最近对全局性数据进行修改的结点,除配置结点之外的所有结点都是普通结点。因此,配置结点是修改这些数据的唯一入口,其上的全局性数据应该是最新被修改,而且在任一时刻,机群中只存在一个配置结点。如果当前配置结点发生故障,系统则可以自动选择其他设置有控制模块的普通结点作为当前的配置结点。对于选择配置结点来说,由于机群系统的运行依赖于全局性数据,尤其是全局性数据中的配置信息,因此在选择配置结点时,最好选择首个加入机群系统,且能对全局性数据进行修改的结点。

还要将所有的全局性数据以一个特殊文件的形式保存在每个结点中,将此类文件统称为数据文件。该数据文件包括文件头部分和数据部分,其中,数据部分用于保存全局性数据,文件头部分则用于保存全局性数据的版本信息。在文件头中设置版本信息是为了方便对不同结点上数据文件的新旧进行比较。

为保证能够准确地判断出不同数据文件的新旧,该文件头中的版本信息至少应包括版本号,并将数据文件设置为:每修改一次,则将版本号加一。这样,在判断两个数据文件的新旧时,即可根据数据文件所对应的版本号进行判断。

在实际操作中,可能会出现两个数据文件的版本号相同、但是却不是同一个数据文件的情况,这种情况下,如果只采用版本号进行判断,则无法判断出数据文件的新旧。为解决这个问题,还可以在该文件头的版本信息中进一步增加当前数据文件的生存时间。也就是说,每个结点在获取当前的数据文件时,确定该数据文件的生存时间,并将该生存时间保存在数据文件头中。该数据文件的生存时间可以由最后一次对数据文件进行修改的时间与结点上的当前时间之间的时间段,与当前数据文件从最近一次被修改到写入本结点之间的时间段的和得到。

在进一步设置了数据文件的生存时间之后,在判断配置结点中的数据文件是否新于普通结点中的数据文件时,可以首先根据文件头中的版本号进行判断,如果两个数据文件的版本号相同,则进一步根据这两个数据文件的生存时间进行判断。如果配置结点所对应的数据文件的生存时间短,则显然是该数据文件较新,也即确定该数据文件新于普通结点中的数据文件;如果配置结点所对应的数据文件的生存时间长,则普通结点中的数据文件较新,也即确定该数据文件老于普通结点中的数据文件;如果两个数据文件的生存时间一样长,则确定这两个数据文件相同,因此不作处理。

另外,由于网络中存在延时的问题,因此,可以设置一个时间间隔,在根据数据文件的生存时间进行判断时,如果两个数据文件的生存时间小于该时间间隔,则认为这两个数据文件的生存时间相同。

在实际操作中,还可能会出现两个数据文件的版本号相同、生存时间也相同,但是却不是同一个数据文件的情况,这种情况下,采用上述方法进行判断,则无法判断出数据文件的新旧。为解决这个问题,还可以在数据文件头的版本信息中进一步增加最近一次对数据文件进行修改的结点的名称。这样,则根据数据文件的版本号及生存时间无法确定两个数据文件的新旧时,可以获取最近一次对这两个数据文件进行修改的结点的名称,如果这两个结点是相同的结点,则认为这两个数据文件完全相同;如果这两个结点不同,则确定这两个结点中最近用作配置结点的那个结点所对应的数据文件较新。

在设置了配置结点及用于保存全局性数据的数据文件格式之后,即可通过配置结点对全局性数据进行控制。

具体来说,该控制过程参见图1,对应以下步骤:

步骤101、修改配置结点中的数据文件。

步骤102、配置结点向机群系统中存活的其他普通结点发送包含该数据文件头中的版本信息的更新请求。

步骤103~104、收到更新请求的普通结点根据版本信息判断配置结点中的数据文件是否新于自身保存的全局性数据,如果配置结点中的数据文件新,则进入步骤105;如果普通结点中的数据文件新,则进入步骤106;如果两个数据文件一样新,则不作处理。

步骤105、该普通结点利用配置结点中的数据文件更新自身保存的数据文件,并对该数据文件头中的版本信息作相应的修改,之后结束当前的更新处理。

步骤106、该普通结点向配置结点发送要求配置结点更新数据文件的更新请求。

步骤107、配置结点收到该更新请求后,将自身保存的数据文件更新为该普通结点中的数据文件,并对该数据文件头中的版本信息作相应的修改,之后返回步骤102。

通过该流程,即可将配置结点中新修改的全局性数据发送到机群系统的其他结点中。而且,如果出现机群系统中其他结点中的全局性数据新于该配置结点的情况,在上述流程中,该结点也可以主动要求配置结点将保存的全局性数据更新为本结点中保存的全局性数据。

由于结点加入机群系统是一个无序的过程,可能会出现新加入机群系统的结点中的全局性数据新于当前配置结点的问题,因此,在有新的普通结点加入时,该新结点应首先判断配置结点中的数据文件是否新于自身保存的数据文件,具体来说,参见图2,该过程对应以下步骤:

步骤201、某个普通结点新加入机群系统。

步骤202~203、该普通结点判断配置结点中的数据文件是否新于自身保存的数据文件,如果配置结点中的数据文件新,则进入步骤204;如果普通结点中的数据文件新,则进入步骤205;如果两个数据文件一样新,则该普通结点直接加入机群系统。

步骤204、该普通结点用配置结点中的数据文件更新自身保存的数据文件,之后结束当前的更新处理,并加入机群系统。

步骤205、该普通结点向配置结点发送要求配置结点更新数据文件的更新请求,并加入机群系统。

步骤206~207、配置结点收到该更新请求后,将自身保存的数据文件更新为该普通结点中的数据文件,之后再通知机群系统中的其他普通结点更新数据文件,也即,再通过图1所示流程进行处理。

由于普通结点在将配置结点中的数据文件保存到本地系统时,可能会出现保存出错的问题,因此,普通结点在将数据文件保存到本地系统时,可以首先判断当前的保存是否被正确地执行,如果被正确执行,则普通结点对此不作其他的处理;否则,该普通结点退出机群系统。也即,允许普通结点对本地数据文件的修改失败,并且,任何修改失败都会导致普通结点退出机群系统。这样,当结点重新加入机群时,即可通过图2所示流程再次从配置结点上获取最新的数据文件。

另外,不管是配置结点,还是普通结点,都可能只有部分的数据文件比其他结点中的数据文件新,因此,应将数据文件的更新粒度设置为文件级,以便于只针对该部分数据进行更新。

以上所述仅为本发明方案的较佳实施例,并不用以限定本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号