一种多服务器间数据同步的方法及系统的制作方法

文档序号:7926891阅读:144来源:国知局

专利名称::一种多服务器间数据同步的方法及系统的制作方法
技术领域
:本发明涉及数据库
技术领域
,特别是涉及一种服务器间数据同步的方法及系统。
背景技术
:随着互联网技术的不断发展,网络已经深入到千家万户。为了尽可能地方便用户、提高网络速度,作为服务提供者的网络公司,除了中心服务器外,会在不同的地区设置多个分区服务器。各个服务器分别负责维护各地区的信息,为了能够共享分布环境里的信息,使分布在各个分区服务器中使用(运行)的所有数据得以高度集成、协调、共享,需要对分布在各服务器上的数据进行同步。也就是说,当一个服务器上的数据发生改变时,中心服务器也需要进行同样的改变,以保证用户不论在何时何地,看到的都是最新最快的信息。在这个过程中,如何实现多服务器之间的数据同步显得非常关键。现有技术可以在多服务器之间实现间隔性同步,即,每过一,殳时间进行一次数据同步。同步的方法通常是用新的数据库覆盖旧的数据库,该操作一般是定期地对整个数据库进行。该现有技术的缺点在于,该技术既不能实现数据的及时性,又非常耗时,使得整个数据库的及时性和效率都非常低。但是及时性是网络性能的一项非常重要的指标,因此,迫切需要本领域技术人员解决的技术问题是,如何实现多服务器之间数据同步的及时性及高效性。
发明内容有鉴于此,本发明的目的在于提供一种多服务器间数据同步的方法及系统,以解决现有技术无法及时同步及传送效率低的问题。为实现上述目的,本发明提供了如下方案一种多服务器间数据同步的方法,包括源服务器分别为每类需要同步的数据建立版本跟踪表;当有数据发生变化时,在相应的版本跟踪表中增加关于所述变化的记录;根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器,目标服务器利用接收到的所述发生变化的数据进行数据同步。优选的,还包括如果目标服务器同步成功,则向源服务器返回同步成功消息;源服务器判断是否所有目标服务器均同步成功,如果是,删除版本跟踪表中的记录。优选的,在版本跟踪表中增加关于所述变化的记录时,还包括为源服务器设置第一版本号,为各目标服务器设置第二版本号;贝寸,判断是否所有目标服务器均同步成功的具体实现包括接收到目标服务器的同步成功消息后,将该目标服务器的第二版本号修改为第一版本号;判断各目标服务器的版本号是否全部为第一版本号,如果是,则所有目标服务器均同步成功。优选的,所述变化包括更新数据、插入数据或删除数据,则通过为源服务器设置不同的第一版本号来描述数据的变化。优选的,根据预置时间向各目标服务器发送所述发生变化的数据。一种多服务器间数据同步的系统,涉及源服务器及至少一个目标服务器,所述源服务器包括版本跟踪表建立单元,用于分别为每类需要同步的数据建立版本跟踪表;版本跟踪表管理单元,用于当有数据发生变化时,在相应的版本跟踪表中增加关于所述变化的记录;发送单元,用于根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器;所述目标服务器包括同步执行单元,用于利用接收到的所述发生变化的数据进行数据同步。优选的,所述目标服务器还包括5同步成功消息发送单元,用于当目标服务器同步成功时,则向源服务器返回同步成功消息;所述版本跟踪表管理单元还用于判断是否所有目标服务器均同步成功,如果是,删除所述版本跟踪表中的记录。优选的,所述版本跟踪表管理单元利用以下子单元判断是否所有目标服务器均同步成功版本号设置子单元,用于为源服务器设置第一版本号,为各目标服务器设置第二版本号;版本号修改子单元,用于接收到目标服务器的同步成功消息后,将该目标服务器的第二版本号^^改为第一版本号;判断子单元,用于判断各目标服务器的版本号是否全部为第一版本号,如果是,则所有目标服务器均同步成功。优选的,所述变化包括更新数据、插入数据或删除数据,所述版本号设置单元则通过为源服务器设置不同的第一版本号来记录数据的变化;所述版本跟踪表管理单元将所述不同的第一版本号作为关于所述变化的记录。优选的,所述发送单元根据预置时间向各目标服务器发送所述需要同步的数据。根据本发明提供的具体实施例,本发明公开了以下技术效果首先,本发明通过同步表记录发生变化的数据,并及时发送到目标服务器,目标服务器根据接收到的记录完成数据的同步。可见,数据库中的某条数据一旦发生变化,该条数据所在数据表的同步表就会记录该变化,并及时与其他服务器上的数据库进行同步。而且进行同步的时候,只传送并修改发生变化的数据,没有变化的数据是不被传送或修改的,即本发明只对数据库中发生变化的数据在多服务器之间进行同步,因此实现了数据在多服务器之间进行同步时的及时性及高效性。其次,通过版本号机制,有助于判断目标服务器是否已经全部同步成功,并在全部同步成功后将相应的记录在同步表中删除,避免了因同步表过大而占用大量的存储空间,保证了系统的性能。图l是本发明提供的第一方法的流程图;图2是本发明中服务器结构示意图;图3是本发明提供的第二方法的流程图;图4是本发明提供的第三方法的流程图;图5是本发明提供的第四方法的流程图;图6是本发明提供的第五方法的流程图;图7是本发明提供的系统的示意图;图8是本发明提供的另一系统的示意图。具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。参见图1,本发明提供的多服务器间数据同步的方法包括以下步骤S101:源服务器分别为每类需要同步的数据建立版本跟踪表;例如,有一类数据A,则为该类数据建立版本跟踪表为A—SYNC,该版本跟踪表用于记录该类数据A中各条数据的变化。S102:当某类数据(如A类数据)中有某条数据发生变化时,在该类数据的版本跟踪表中增加关于所述变化的记录;当A类数据中的某条数据发生变化时,程序会自动向版本跟踪表中新增加一条描述该条数据发生了何种变化的信息。S103:根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器,目标服务器利用接收到的所述发生变化的数据进行数据同步。发送程序可以通过读取版本跟踪表来判断是否有数据需要同步,如果有,则可以根据版本跟踪表中的记录,将需要同步的数据发送到目标服务器的接收端口。目标服务器在接收到所述需要同步的数据之后,就可以进行数据的同步了。图2所示为本发明中的服务器结构,其中,分区服务器是指分布在各地区的服务器,例如北京的服务器负责北京用户的信息,上海的服务器负责上海用户的信息,各分区服务器上的内容不一定相同,但是各地区的用户信息需要同步到中心服务器进行汇总;另外,内容生产服务器也需要将发生变化的数据汇总到中心服务器;同时,中心服务器中有数据发生变化时,也需要按照不同的地区将数据进行分发并同步到各分区服务器,例如,将北京用户的数据分发同步到北京的服务器,将上海用户的数据分发同步到上海的服务器,等等。也就是说,数据同步可能发生在从分区服务器到中心服务器、从内容生产服务器到中心服务器或从中心服务器到分区服务器的过程中,内容生产服务器、分区服务器及中心服务器都有可能是源服务器,中心服务器及分区服务器都有可能是目标服务器。但对于不同流向(源服务器与目标服务器不同)的数据同步都可以采用上述方法,只是不同的源服务器对应不同的目标服务器时,可能采用不同的同步策略,所述同步策略也就是可以选择不同的同步频率及同步时间等,即发送程序可以采用预置的算法策略,例如每分钟或每五分钟等发送一次需要同步的数据。其中,为每一类需要同步的数据建立版本跟踪表,是为了判断哪些数据发生了何种变化。该版本跟踪表中可以记录该类数据中每条数据的标识及版本号,根据标识及版本号可以判断某条数据是否发生了变化。例如,如果某条数据发生变化,则在版本跟踪表中增加关于该条数据的记录,并将该条数据的版本号记录为1。发送程序可以按照所述算法策略,每隔一段时间读取版本跟踪表一次,按照版本跟踪表中的信息将需要同步的数据发送到目标服务器。可见,源服务器中的某条数据一旦发生变化,该条数据所属类别的版本跟踪表就会记录该变化,并及时与其他服务器上的数据库进行同步。而且进行同步的时候,只传送并修改发生变化的数据,没有变化的数据是不被传送或修改的,即本发明只对源服务器中发生变化的数据在多服务器之间进行同步,因此实现了数据在多服务器之间进行同步时的及时性及高效性。在实际应用中,在目标服务器端,如果同步成功,则可以向源服务器返回同步成功消息;同样,如果没有同步成功,则可以向源服务器返回同步不成功消息,然后继续将没有同步成功的服务器完成同步;如果所有的目标服务器都8返回了同步成功的消息,此时源服务器端关于该条数据的记录将不再有用,因此可以从版本跟踪表A_SYNC中删除。这样,可以避免版本跟踪表中的内容过多,以致占用过多的存储空间、影响系统性能。为了便于判断各目标服务器是否都已经同步成功,可以采用如下方法在版本跟踪表中增加关于某条数据变化的记录时,为源服务器设置第一版本号,例如为1,为各目标服务器设置第二版本号,例如为0;在某目标服务器返回同步成功的消息时,将该目标服务器的版本号修改为1;其他目标服务器也做同样处理,这样,当版本跟踪表中所有目标服务器的版本号都变为1时,则可以判断出所有目标服务器都已经同步成功,此时便可以将该条记录删除了。为了更好地理解本发明提供的方法,下面通过具体应用中的实例进行详细地介绍。参见图3,本发明提供的方法包括以下步骤S301:源服务器中的某类数据A,其中有一条数据发生变化,那么对应的A—SYNC表中就会插进一条相应的记录。S302:更新A—SYNC,或插进相应记录来描述该条lt据的变化,并且来决定目标服务器中对应的才喿作。需要说明的是,版本跟踪表中可能已经存在关于该条数据变化的记录,如果存在,则可以直接在原记录的基础上进行更新。因此,每次向同步表插入新的记录之前,可以先执行更新操作,如果更新过程中发现不存在关于该条数据的记录,则执行插入记录的步骤。S303:发送程序每分钟读取A-SYNC—次,才艮据A-SYNC表中所述变化的记录,将需要同步的数据发送到目标服务器的接收端口。S304:目标服务器实时监听,一旦接收到新的数据就进行数据同步操作,将数据写入数据库。S305:如果数据写入数据库成功,则返回同步成功,否则返回同步不成功。S306:更新A-SYNC表。如果收到同步成功的信号,更新A-SYNC表,进行监测,如果本条数据没有更新了,将从A-SYNC表删除本条记录的内容。S307:如果收到同步不成功的信号,继续进行监测,本条数据需要继续同步,再次进行以上步骤继续同步本条数据,直到成功为止。同时,由于数据变化通常可以包括数据更新、数据插入或数据删除等,因此,也可以用源服务器的版本号来区别不同类型的翁:据变化,例如,可以用1表示数据更新或数据插入,用-l表示数据删除。其中,在数据更新的过程中,如果一次更新在某些服务器上尚未同步成功时,又产生了关于该条数据的新的来为1,则现在变为3,前一次更新尚未成功的服务器可以根据两次版本号的变化,直接按照版本号为3的记录进行数据同步,而不再进行版本号为1的数据同步,这样可以进一步提高更新的效率。例如,生成的A类数据的版本跟踪表可以如表l所示。表l<table>tableseeoriginaldocumentpage10</column></row><table>下面,分别针对源服务器发生数据更新、数据插入和数据删除三种数据变化时、居同步的具体过程进行完整地描述。实施例一、参见图4,更新数据时,本发明提供的方法包括以下步骤S401:在源服务器的A类数据中更新标识为1的一条数据;S402:程序更新A-SYNC,或在A—SYNC中插入如表1第一行的记录;S403:发送程序每隔1分钟就读一次A-SYNC表,发现源服务器版本号和目标服务器版本号不一致,说明本条数据还没有进行同步。S404:发送程序将这条标识为l的数据发送到目标服务器的接收端口。S405:接收端接收所述数据,程序去执行更新程序,将标识为l的数据写入数据库。S406:经程序判断被影响的数据条数是l,程序返回数值l,说明更新成功,如果程序返回的是不等于l的数,说明更新失败,该目标数据库中不包括该条数据,则数据库会自动执行插入数据操作,将标识为l的数据插入到该目标服务器数据库中并将操作的执行结果(成功或失败信息)返回给所述源服务器。S407:从目标服务器返回的数值写入A-SYNC表中对应的目标服务器N-V-A的位置。其他的目标服务器也一样。S408:发送程序再次读A—SYNC表时,如果N-V—A、N—V_B……的值都为l,那么认为各个目标服务器都已经同步成功,则从A-SYNC表中删除此条数据;如果N一V—A、IV—B......中有不为l继续将不为l的目标服务器进行同步。一直到目标服务器的版本号全部为l时,说明此次更新同步成功,从A-SYNC表删除此条记录。S409:如果一条数据第一次更新同步还没有完成,源服务器又有更新,例如标识为2的数据,参照表l的第二行。S410:和以上标识为1的数据的更新同步步骤一样,但是上一步的更新还没有同步完成,则源服务器版本号在上一步版本号的基础上加2,目标服务器同步完旧的版本的数据后将A_SYNC表中的目标服务器版本号(以N_V_A为例)更新为同步时的版本,由于此时源服务器版本号已在旧的版本号基础上加2,所以该条数据会继续执行同步操作直到目标服务器版本与源服务器版本相同为止。实施例二、参见图5,插入数据时,本发明提供的方法包括以下步骤S501:在源服务器的A类数据中插入标识为1的一条数据。S502:程序更新A-SYNC,或在A—SYNC中插入如表1第一行的记录。S503:目标服务器端,程序首先执行数据更新4喿作。S504:如果更新操作失败,程序的返回值是0(因为该目标服务器中没有此条数据,所以执行更新操作该目标服务器中受影响的数据条数为O)。iiS505:程序以返回值为O判断出需要执行插入操作,将标识为l的数据添加到该目标服务器的数据库。S506:经程序判断目标服务器中被影响的数据条数是l,程序返回数值l,说明插入成功,向源服务器返回同步成功的消息;如果程序返回的是不等于l的数,说明插入失败,向源服务器返回同步不成功的消息。S507:从目标服务器返回的消息,修改A-SYNC表中对应的目标服务器N-V-A的版本号。其他的目标服务器也一样。S508:发送程序再次读A—SYNC表时,如果N-V-A、N_V—B……的值都为l,那么从A-SYNC表中删除此条数据;如果N一V—A、N—V—B……中有不为l继续将不为l的目标服务器进行同步。一直到目标服务器的版本号也都为l时,说明此次插入同步成功,从A—SYNC表删除此条数据。实施例三、参见图6,删除数据时,本发明提供的方法包括以下步骤S601:在源服务器的数据表A中删除标识为3的一条数据。S602:程序更新A—SYNC,或在A—SYNC表中插入如表1第三行的记录。S603:发送程序每隔1分钟就读一次A-SYNC表,发现源服务器版本号和目标服务器版本号不一致,说明本条数据还没有进行同步。S604:发送程序将这条标识为3的数据发送到目标服务器的接收端口。S605:程序读取标识为3的数据,发现源服务器版本号为-1,则执行相应的删除程序,将标识为3的数据从目标服务器的数据库中删除。S606:如果目标服务器执行删除操作成功则返回成功信息,否则返回失败^息。S607:从目标服务器返回的数值写入A-SYNC表中对应的目标服务器N—V一A的位置。其他的目标服务器也一样。S608:发送程序再次读A—SYNC表时,如果N-V-A、N-V-B……的值都与N—VER相同,那么从A-SYNC表中删除此条记录;如果N-V-A、N—V—B……中有不为-l的继续将不为-1的目标服务器进行同步。一直到目标服务器的版本号全部为-1时,说明此次删除同步成功,乂人A-SYNC表删除此条记录。与本发明提供的方法相对应,本发明还提供了一种多服务器间数据同步的系统,涉及源服务器及至少一个目标服务器,参见图7,该系统中,源服务器包括以下单元版本跟踪表建立单元U701,用于分别为每类需要同步的数据建立版本跟踪表;版本跟踪表管理单元11702,用于当有数据发生变化时,在该数据的版本跟踪表中增加关于所述变化的记录;发送单元U703,用于根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器;所述目标服务器包括同步执行单元U704,用于利用接收到的所述发生变化的数据进行数据同步。需要说明的是,由于所谓源服务器与目标服务器只是相对的概念,因此,在所述目标服务器中,也可能包括同步执行单元U704;同样在所述目标服务器中,也可能包括同步表建立单元U701、同步表管理单元U702及发送单元U703。也就是说,当一个服务器上发生数据变化时,该服务器将执行所述源服务器的操作,对应的服务器执行目标服务器的操作。版本跟踪表建立单元U701分别为每类需要同步的数据建立版本跟踪表;在源服务器数据库中,当某类数据中的某条数据发生变化时,版本跟踪表管理单元U702在该类数据的版本跟踪表中增加关于所述变化的记录,发送单元U703根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器。在目标服务器端,同步执行单元U704利用接收到所述发生变化的数据进行数据同步。参见图8,在目标服务器端,还可以包括同步成功消息发送单元U805,用于当目标服务器同步成功时,则向原服务器返回同步成功消息;版本跟踪表管理单元U802还用于判断是否所有目标服务器均同步成功,如果是,删除所述版本跟踪表中的记录。优选的,版本跟踪表管理单元U802可以利用以下子单元判断是否所有目标服务器均同步成功版本号设置子单元U8021,用于为源服务器设置第一版本号,为各目标服务器设置第二版本号;版本号修改子单元U8022,用于接收到目标服务器的同步成功消息后,将该目标服务器的第二版本号修改为第一版本号;判断子单元U8023,用于判断各目标服务器的版本号是否全部为第一版本号,如果是,则所有目标服务器均同步成功。在实际应用中,所述变化可以包括更新数据、插入数据或删除数据,因此,版本号设置子单元U8021可以通过为源服务器设置不同的第一版本号来记录数据的变化;版本跟踪表管理单元U802将所述不同的第一版本号作为关于所述变化的记录。优选的,发送单元U803可以根据预置时间向各目标服务器发送所述需要同步的数据。以上对本发明所提供的一种多服务器间数据同步的方法及系统,进行了详实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。权利要求1、一种多服务器间数据同步的方法,其特征在于,包括源服务器分别为每类需要同步的数据建立版本跟踪表;当有数据发生变化时,在相应的版本跟踪表中增加关于所述变化的记录;根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器,目标服务器利用接收到的所述发生变化的数据进行数据同步。2、根据权利要求1所述的方法,其特征在于,还包括如果目标服务器同步成功,则向源服务器返回同步成功消息;源服务器判断是否所有目标服务器均同步成功,如果是,删除版本跟踪表中的记录。3、根据权利要求2所述的方法,其特征在于,在版本跟踪表中增加关于所述变化的记录时,还包括为源服务器设置第一版本号,为各目标服务器设置第二版本号;则,判断是否所有目标服务器均同步成功的具体实现包括接收到目标服务器的同步成功消息后,将该目标服务器的第二版本号修改为第一版本号;判断各目标服务器的版本号是否全部为第一版本号,如果是,则所有目标服务器均同步成功。4、根据权利要求3所述的方法,其特征在于,所述变化包括更新数据、插入数据或删除数据,则通过为源服务器设置不同的第一版本号来描述数据的变化。5、根据权利要求1所述的方法,其特征在于,根据预置时间向各目标服务器发送所述发生变化的数据。6、一种多服务器间数据同步的系统,涉及源服务器及至少一个目标服务器,其特征在于,所述源服务器包括版本跟踪表建立单元,用于分别为每类需要同步的数据建立版本跟踪表;版本跟踪表管理单元,用于当有数据发生变化时,在相应的版本跟踪表中增加关于所述变化的记录;发送单元,用于根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器;所述目标服务器包括同步执行单元,用于利用接收到的所述发生变化的数据进行数据同步。7、根据权利要求6所述的系统,其特征在于,所述目标服务器还包括同步成功消息发送单元,用于当目标服务器同步成功时,则向源服务器返回同步成功消息;所述版本跟踪表管理单元还用于判断是否所有目标服务器均同步成功,如果是,删除所述版本跟踪表中的记录。8、根据权利要求7所述的系统,其特征在于,所述版本跟踪表管理单元利用以下子单元判断是否所有目标服务器均同步成功版本号设置子单元,用于为源服务器设置第一版本号,为各目标服务器设置第二版本号;版本号修改子单元,用于接收到目标服务器的同步成功消息后,将该目标服务器的第二版本号修改为第一版本号;判断子单元,用于判断各目标服务器的版本号是否全部为第一版本号,如果是,则所有目标服务器均同步成功。9、根据权利要求8所述的系统,其特征在于,所述变化包括更新数据、插入数据或删除数据,所述版本号设置单元则通过为源服务器"i殳置不同的第一版本号来记录数据的变化;所述版本跟踪表管理单元将所述不同的第一版本号作为关于所述变化的记录。10、根据权利要求6所述的系统,其特征在于,所述发送单元根据预置时间向各目标服务器发送所述需要同步的数据。全文摘要本发明公开了一种多服务器之间数据同步的方法,该方法包括源服务器分别为每类需要同步的数据建立版本跟踪表;当有数据发生变化时,在相应的版本跟踪表中增加关于所述变化的记录;根据版本跟踪表中的记录,将发生变化的数据发送到目标服务器,目标服务器利用接收到的所述发生变化的数据进行数据同步。本发明还公开了一种多服务器之间数据同步的系统,通过本发明,使用同步表实时记录数据库的变化,并且只对数据库中发生变化的数据在多服务器之间进行同步,因此实现了数据在多服务器之间进行同步的及时性及高效性。文档编号H04L29/08GK101426026SQ200810222368公开日2009年5月6日申请日期2008年9月17日优先权日2008年9月17日发明者蒋亚洪申请人:北京六维世纪网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1