跨机房的数据同步方法以及系统的制作方法

文档序号:7962231阅读:988来源:国知局
专利名称:跨机房的数据同步方法以及系统的制作方法
技术领域
本申请涉及一种数据同步方法以及系统。
背景技术
出于数据安全备份或提高各地用户的访问速度等目的,一些互联网站会在不同地点部署多个站点,如图1所示。其中每个站点为一台服务器或者由多台服务器所组成的集群。这些站点之间要求保持数据同步,以使得其中所存储的数据内容相一致。图1所示的跨机房的多站点部署方案中,当请求方I对站点I提出请求时,站点I作为本地站点,其余站点均作为远程站点。而当请求方2对站点2提出请求时,站点2作为本地站点,其余站点均作为远程站点。也就是说,本地站点和远程站点是根据每一请求的发生地而进行区分的。为了实现跨机房的多站点之间数据同步,目前采用的方法有以下两种:第一种方法采用同步数据传输,如图2所示。请求方向本地站点提出请求。所述请求可以是数据的增加、修改或删除等操作中的一种或多种。本地站点根据操作类型处理该请求。当本地站点成功处理完该请求后,向远程站点以同步消息的形式转发该请求。所述同步消息具有这样的特点:发送方在发送完毕后,就会堵塞其自身的进程,直至接收到对该同步消息的响应,才继续向下处理其它任务。本地站点等待远程站点返回处理结果,当所有远程站点均返回“已成功处理完所述请求”的结果后,本地站点向请求方返回“已成功处理完所述请求”的结果。图2所示的跨机房的数据同步方法的延迟时间长,请求方的等待时间长。并且由于跨地域网络不稳定,容易造成发送或接收同步消息的响应的堵塞,甚至造成本地站点的应用服务假死。在实际应用中,很少采用这种方法。第二种方法采用异步数据传输,如图3所示。请求方向本地站点提出请求。所述请求包括数据的增加、修改、删除操作。本地站点处理该请求。当本地站点成功处理完该请求后,向远程站点以异步消息的形式转发该请求。所述异步消息具有这样的特点:发送方在发送完毕后,不用等待该异步消息的响应,就可以继续向下处理其它任务。当本地站点成功转发完该请求后,本地站点就向请求方返回“已成功处理完所述请求”的结果。在实际应用中,大多采用这种方法。图3所示的跨机房的数据同步方法,由于无需等待远程站点的处理结果即可返回请求方,因而降低了延迟时间和请求方的等待时间。但是由于网络等原因,可能会造成异步消息传送失败,导致远程站点的数据没有同步更新。另外,在图3所示的跨机房的数据传输方法中,由于无法保证各个异步消息的时序性,可能会出现旧数据覆盖新数据的情况。试举一例说明,请参阅图4:在tl时刻,本地站点将数据Dl的值由a0改为al,同时向其他远程站点发出异步消息Ml同步修改数据Dl的值。在之后的t2时刻,本地站点将数据Dl的值由al改为a2,同时向其他远程站点发出异步消息M2同步修改数据Dl的值。由于异步消息M1、M2没有时序的先后。远程站点Rl可能在之后的t3时刻先收到异步消息M2,从而将数据Dl的值由a0改为a2。接着在之后的t4时刻,远程站点Rl又收到了异步消息M1,从而将数据Dl的值由a2改为al。此时远程站点Rl处就发生了以旧数据al覆盖新数据a2的情况,这是不正确的。上述两种方法,均不能有效地解决跨机房的数据同步问题。并且无论是以同步消息、还是以异步消息的形式转发请求,本地站点都需要持有该请求的副本,从而浪费了大量的内存资源,造成效率低下等问题。

发明内容
本申请提供一种基于FIFO(先入先出)队列的跨机房的数据同步方法,在保证具有较短的延迟时间的同时,确保数据正确地传输至远程站点进行更新。为此,本申请还要提供与之对应的一种跨机房的数据同步系统。为解决上述技术问题,本申请跨机房的数据同步方法,包括并行处理的请求处理方法和远程同步方法;所述请求处理方法中,本地站点处理请求,并为发生变更的数据创建用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列;所述远程同步方法中,本地站点根据所述FIFO队列中的索引键值,找到对应的发生变更的数据内容,向各远程站点发出同步指令。本申请跨机房的数据同步系统包括:用于在本地站点处理请求,并为发生变更的数据建立一个用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列的装置;用于存储所述FIFO队列的装置;用于根据所述FIFO队列中的各项索引键值从本地站点找到对应的数据内容,并向各远程站点发出同步指令的装置。本申请跨机房的数据同步方法以及系统具有延迟时间短的特点。这是由于本地站点只需要将变更的数据的索引键值提交到一个FIFO队列,就能向请求方返回处理结果,而该FIFO队列是存储在本地站点的,因而请求方的等待时间短。本申请跨机房的数据同步系统及其方法中引入了一个FIFO队列,它是由本地站点发生变更的数据的索引键值形成的,可视为本地站点与远程站点的数据同步任务列表。由于该队列不保存实际发生变更的数据内容,而只是发生变更的数据的索引键值,因而消耗的存储资源、计算处理资源等都比较低。


图1是跨机房的站点部署的示意图;图2是现有的一种跨机房的数据同步方法(同步数据传输)的流程图;图3是现有的另一种跨机房的数据同步方法(异步数据传输)的流程图;图4是图3所示的跨机房的数据同步方法的出错示意图5是本申请跨机房的数据同步方法的总示意图;图6是本申请跨机房的数据同步方法中处理请求方法的流程图;图7、图8均是本申请跨机房的数据同步方法中数据同步方法的流程图;图9、图10是本申请跨机房的数据同步方法中数据同步方法的示意图;图11是本申请跨机房的数据同步系统的总示意图;图12是本申请跨机房的数据同步系统的具体示意图。
具体实施例方式请参阅图5,本申请跨机房的数据同步方法包括两部分,第一部分是处理请求,第二部分是远程数据同步,这两部分为并行处理,即可以同时处理。所述请求处理方法中,本地站点处理请求,并为发生变更的数据创建用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列。所述索引键值优选采用发生变更的数据的逻辑地址,即通过映射、对应等关系可以唯一定位发生变更的数据的一种索引。例如,数据库系统中所存储的各条数据都至少包括主键ID和数据内容两个部分,每条数据的主键ID都不重复。本申请将发生变更的数据的主键ID作为索引键值。这其中的典型代表是Key-Value数据库,可将发生变更的数据的key作为索引键值。又如,文件系统中所存储的各条数据都分别表示一个文件,其中包括有文件名(包含绝对路径),而文件系统中的所有文件名(包含绝对路径)都不重复。本申请将发生变更的数据的文件名作为索引键值。这同样适用于采用分布式存储的站点。如果站点采用分布式存储,并且不同服务器上的文件名可能重复,还可以将发生变更的数据的服务器标识和文件名(包含绝对路径)共同作为索引键值。如果索引键值采用的是发生变更的数据的物理地址,即其在本地站点的物理存储地址,那么需要注意的是:一旦有数据被删除后,该数据的原物理地址不能被再次写入;直到该数据在所有远程站点的对应数据都被删除后,该数据的原物理地址才可被再次写入。所述FIFO队列是由所述索引键值所组成的。所述FIFO队列就是本地站点需要向各个远程站点进行数据同步的任务列表,其中的每个索引键值就表示一项从本地站点到远程站点的数据同步任务。如果所述FIFO队列不存在,则创建该FIFO队列。所述远程同步方法中,本地站点根据所述FIFO队列中的索引键值,找到对应的发生变更的数据内容,向各远程站点发出同步指令。所述同步指令包括增加、修改或删除数据。请参阅图6,这是所述处理请求的方法的一个实施例,包括如下步骤:第al步,请求方向本地站点提出请求。所述请求可以是数据的增加、修改或删除等操作。第a2步,本地站点处理该请求,即增加、修改或删除请求方所指定的数据。第a3步,当本地站点成功处理完该请求后,为发生变更(即增加、修改或删除)的数据创建一个索引键值,该索引键值用于唯一地定位到发生变更的数据。第a4步,本地站点将所述索引键值放到一个FIFO队列的末尾。优选地,在所述索弓丨键值被添加进FIFO队列后,本地站点向请求方返回“已成功处理完所述请求”的结果。请参阅图7、图8,这是所述数据同步的方法的一个实施例,包括如下步骤:
第bl步,本地站点从所述FIFO队列的开头读取一个索引键值。如果成功读取到一个索引键值,则进入第b2步。由于FIFO队列的自身特性,该索引键值被读取后,就从所述FIFO队列中被删除掉。如果未读取到索引键值,则表示所述FIFO队列为空,进一步表明当前没有数据同步任务,返回第bl步。第b2步,本地站点根据所读取的索引键值找到发生变更的数据。例如在数据库中根据主键ID找到数据内容,或者在文件系统中根据文件名(包含绝对路径)找到文件内容。如果发生变更的数据内容为空,则表示发生变更的数据进行的是删除操作,则本地站点将该索引键值传输至远程站点并发出删除对应数据的同步指令。远程站点接收到该同步指令后,根据索引键值找到相应的数据,并将该数据内容删除。由于本地站点与各远程站点的数据存储类型是一致的,因此在一个索引键值在各站点均可唯一地定位到相应的数据内容。如果发生变更的数据内容不为空,则表示发生变更的数据进行的是增加或修改操作,本地站点将该索引键值以及发生变更的数据内容传输至远程站点并发出增加或修改对应数据的同步指令。第b3步,本地站点等待远程站点的处理结果。如果远程站点返回“处理成功”的结果,则返回第bl步。如果远程站点返回“处理失败”的结果,则本地站点将所读取的索引键值重新放到所述FIFO队列的末尾,并返回第bl步。本申请跨机房的数据同步方法有效地解决了远程站点的数据同步的正确性问题。以下试举二例说明。请参阅图9,这是本申请跨机房的数据同步方法的一个实施例。在tl时刻,本地站点将数据Dl的值由a0改为al,同时向FIFO队列的末尾增加数据Dl的索引键值DD1。在稍后的t2时刻,本地站点将数据Dl的值由al改为a2,同时又向FIFO队列的末尾第二次增加数据Dl的索引键值DD1。在t3时刻,本地站点读取第一次放入FIFO队列中的索引键值DD1,找到数据Dl的值。t3时刻必然在tl时刻之后,该例假设t3时刻在t2时刻之前,则此时数据Dl的值为al。本地站点向其他远程站点发出消息修改数据Dl的值为al,直至得到各远程站点的修改成功的确认。在稍后的t4时刻,本地站点读取第二次放入FIFO队列中的索引键值DD1,又找到数据Dl的值。t4时刻必然在t2时刻之后,此时数据Dl的值为a2,本地站点再向其他远程站点发出消息修改数据Dl的值至a2,直至得到各远程站点的修改成功的确认。请参阅图10,这是本申请跨机房的数据同步方法的另一个实施例,与图9的区别仅在于:t3时刻在t2时刻之后。此时本地站点向其他远程站点先后发出两个消息,都是修改数据Dl的值为a2,也没有出现数据同步出错的情况。由以上两例可知,本申请跨机房的数据同步方法,本地站点将发生变更的数据同步给远程站点的那一时刻,只关注该时刻所传输的数据的最后状态,而不关心该数据之前发生的任何变更,因而不会发生图4所示的旧数据覆盖新数据的情况。请参阅图11,本申请跨机房的数据同步系统包括:用于在本地站点处理请求,并为发生变更的数据建立一个用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列的装置51 ;用于存储所述FIFO队列的装置52 ;用于根据所述FIFO队列中的各项索引键值从本地站点找到对应的数据内容,并向各远程站点发出同步指令的装置53。上述跨机房的数据同步系统需要设置在图1中的每个站点。此外,在各站点还都包括存储有各条数据的数据库550。请参阅图12,所述装置51进一步包括:请求接收装置511,用于接收请求方的数据处理的请求;所述数据处理请求可以是增加、修改或删除等数据处理操作;请求处理装置512,用于根据所接收请求对指定数据进行处理;索引创建装置513,用于为处理的数据创建索引键值;索引写入装置514,用于将所创建或接收的索引键值放到一个FIFO队列的末尾,如果不存在该FIFO队列,则创建一个FIFO队列;操作结果发送装置515,用于将对所述请求的操作结果发送给请求方。所述装置52进一步包括:FIFO存储装置520,用于存储所述FIFO队列;FIFO控制装置521,用于在新数据写入所述FIFO队列时,将新数据放在所述FIFO队列的末尾,从所述FIFO队列读取数据时,从所述FIFO队列的开头读取数据,并且在读取完毕后,将已读取的数据从所述FIFO队列删除。所述装置53进一步包括:索引读取装置531,用于从所述FIFO队列的开头读取一个索引键值;数据内容搜索装置532,用于根据所读取的索引键值找到对应的数据内容;数据内容判断装置533,用于判断所找到的数据内容是否为空;指令发送装置534,用于向远程站点发出对应数据的同步指令;操作结果接收装置535,用于接收远程站点反馈的对所述指令的操作结果;操作结果判断装置536,用于判断所接收的操作结果是否为操作成功。以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
权利要求
1.一种跨机房的数据同步方法,其特征是,包括并行处理的请求处理方法和远程同步方法; 所述请求处理方法中,本地站点处理请求,并为发生变更的数据创建用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列; 所述远程同步方法中,本地站点根据所述FIFO队列中的索引键值,找到对应的发生变更的数据内容,向各远程站点发出同步指令。
2.根据权利要求1所述的跨机房的数据同步方法,其特征是,所述请求处理方法包括如下步骤: 第al步,本地站点获取请求方提出的增加、修改或删除数据的请求; 第a2步,本地站点处理该请求; 第a3步,当本地站点成功处理完该请求后,为发生变更的数据创建一个索引键值,该索引键值用于唯一地定位到发生变更的数据; 第a4步,本地站点将所述索引键值放到一个FIFO队列的末尾,所述FIFO队列由增加、修改或删除的数据的索引键值所组成;如果该FIFO队列不存在,则创建该FIFO队列。
3.根据权利要求1所述的跨机房的数据同步方法,其特征是,所述远程同步方法包括如下步骤: 第bl步,本地站点从所述FIFO队列的开头读取一个索引键值; 如果成功读取到一个索引键值,则进入第b2步; 如果未读取到索引键值,则返回第bl步; 第b2步,本地站点根据所读取的索引键值找到发生变更的数据内容; 如果发生变更的数据内容为空,则本地站点将该索引键值传输至远程站点并发出删除的同步指令; 如果发生变更的数据内容不为空,则本地站点将该索引键值、发生变更的数据内容传输至远程站点并发出增加或修改的同步指令; 第b3步,本地站点等待远程站点的处理结果; 如果远程站点返回“处理成功”的结果,则返回第bl步; 如果远程站点返回“处理失败”的结果,则本地站点将所读取的索引键值重新放到所述FIFO队列的末尾,并返回第bI步。
4.根据权利要求1所述的跨机房的数据同步方法,其特征是,所述索引键值为数据库系统中每条数据的主键ID。
5.根据权利要求1所述的跨机房的数据同步方法,其特征是,所述索引键值为文件系统中每个文件的文件名,所述文件名包括绝对路径。
6.根据权利要求1所述的跨机房的数据同步方法,其特征是,所述同步指令包括增加、修改或删除数据的指令。
7.一种跨机房的数据同步系统,其特征是,包括: 用于在本地站点处理请求,并为发生变更的数据建立一个用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列的装置; 用于存储所述FIFO队列的装置; 用于根据所述FIFO队列中的各项索引键值从本地站点找到对应的数据内容,并向各远程站点进行数据同步的装置。
8.根据权利要求7所述的跨机房的数据同步系统,其特征是,所述用于在本地站点处理请求,并为发生变更的数据建立一个用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列的装置进一步包括: 请求接收装置,用于接收请求方增加、修改、或删除数据的请求; 请求处理装置,用于根据所接收的请求对指定数据进行增加、修改或删除; 索引创建装置,用于为新增加、修改后或删除掉的数据创建索引键值; 索引写入装置,用于将所创建的索引键值放到一个FIFO队列的末尾,如果不存在该FIFO队列则创建一个FIFO队列; 操作结果发送装置,用于将对所述请求的操作结果发送给请求方。
9.根据权利要求7所述的跨机房的数据同步系统,其特征是,所述用于存储所述FIFO队列的装置进一步包括: FIFO存储装置,用于存储所述FIFO队列; FIFO控制装置,用于在新数据写入所述FIFO队列时将新数据放在所述FIFO队列的末尾,从所述FIFO队列读取数据时从所述FIFO队列的开头读取数据、且在读取完毕后将已读取的数据从所述FIFO队列删除。
10.根据权利要求7所述的跨机房的数据同步系统,其特征是,所述用于根据所述FIFO队列中的各项索引键值从本地站点找到对应的数据内容,并向各远程站点进行数据同步的装置进一步包括: 索引读取装置,用于从所述FIFO队列的开头读取一个索引键值; 数据内容搜索装置,用于根据所读取的索引键值找到对应的数据内容; 数据内容判断装置,用于判断所找到的数据内容是否为空; 指令发送装置,用于向远程站点发出增力口、修改、或删除对应数据的指令; 操作结果接收装置,用于接收远程站点反馈的对所述指令的操作结果; 操作结果判断装置,用于判断所接收的操作结果是否为操作成功。
全文摘要
本申请公开了一种跨机房的数据同步方法,包括并行处理的请求处理方法和远程同步方法。所述请求处理方法中,本地站点处理请求,并为发生变更的数据创建用于唯一定位的索引键值,并将所述索引键值添加到一个FIFO队列。所述远程同步方法中,本地站点根据所述FIFO队列中的索引键值,找到对应的发生变更的数据内容,向各远程站点发出同步指令。本申请还公开了与之对应的跨机房的数据同步系统。本申请具有延迟时间短、等待时间短、消耗资源低、远程站点的数据同步始终保持正确的特点。
文档编号H04L29/08GK103095769SQ201110344690
公开日2013年5月8日 申请日期2011年11月4日 优先权日2011年11月4日
发明者杨成虎 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1