订阅/发布系统中信息仓库联邦及数据同步方法

文档序号:6371008阅读:158来源:国知局
专利名称:订阅/发布系统中信息仓库联邦及数据同步方法
技术领域
本发明涉及的是一种计算机分布式系统,具体涉及一种在订阅/发布系统中中信息仓库联邦以及在这些联邦成员之间进行数据同步的方法。
背景技术
订阅/发布系统中信息仓库联邦成员数据同步,属于分布式系统中数据同步技术范畴。目前在分布式系统中数据同步主要有以下几种同步技术I.事务控制法I. I.传统的事务控制法在分布式数据库系统中,“事务”是一系列不可分割的操作序列,将数据库从一个一致性状态转变到另一个一致性状态,由于全局事务与局部事务存在并发执行,可能会造成数据副本不一致。传统的事务控制法通过分布式两段锁协议(2PL协议)来保证全局事务与局部事务执行的可串行性,即可保证事务的一致性调度,以及通过分布式两段提交协议(2PC协议)来同步更新各副本数据。这对数据操作涉及的记录不多、事务保持时间不长的分布式数据库系统有效。而在一些数据量大、用户对数据的操作范围大的情况下,事务保持时间长,若采用2PL协议,则会严重地影响事务并发程度,不能满足实际需要,同时,2PC协议或3PC协议的方法在网上通信量很大,而由于网络速度有限,因此,会使用户陷入长时间的不可忍受的等待状态,或遇到频繁的事务失败,重新启动事务太多,造成应用程序运行效率低下。I. 2.扩展事务控制法在分布式环境下,2PC协议是实现事务原子性的一个主要原则,然而大多数原有的数据库系统并不支持这一协议,扩展事务控制法则不依赖于局部数据库系统是否支持2PC协议,而是对全局子事务和局部事务进行扩展,并为各个局部数据库引进了锁表和日志表,它在局部数据库和控制表之上执行扩展事务,它们负责维护全局可串行性和实际事务的恢复。通过扩展事务来检测锁,以避免冲突发生和进行恢复。该方法在一定的基础上维护了局部事务的自治性,但它增加了事务的负担而降低了事务本身的执行效率。2.复制控制法2. I.同步复制控制法利用同步复制使得各数据副本保持紧一致性,即任何时刻不同站点的副本的值总是一致的。这样,全局事务管理系统要明确数据的各个副本所在的站点,当事务对某一数据副本进行了更新时,全局事务管理系统必须向其他站点发送强制用户修改数据副本的消息以保持数据各副本一致。但是对于出现故障的站点,则必须等待其恢复以后再进行复制,因此数据并非严格一致。由于对数据的更新操作频繁,从而向系统发送的复制消息也频繁,系统通信量大,降低了系统处理速度。而且对于很多数据库系统来说,它并不要求严格的数据一致,如空间数据库一般允许访问时间相对滞后的数据,采用同步复制控制并不实用。2. 2 异步复制控制法
利用异步复制使得各数据副本保持松一致性,即数据的更新与其各副本所做的修改复制有一段时间间隔,在某一时刻不同站点的副本的值可能是不一致的,数据暂时不同步。它主要解决两个问题,即如何捕捉到更新数据和什么时候复制。一般采用基于事务日志方法和基于触发器方法捕捉系统更新操作,大多数数据库系统一般采用事务日志来捕捉数据更新,如Sybase, Informix,Microsoft SQL Server等。但由于事务日志格式可能不相同,设计通用的数据库日志读取程序相当困难,因而一些系统采用触发器方法。对于触发器法,一旦被跟踪的对象被更新,会触发相关事件发生,记录数据源与数据更新的内容。对于被触发器所捕捉的更新数据,由复制服务器对各副本进行更新,复制服务器需要保证被复制的数据是最后的更新结果。3.消息队列法消息队列是进程间通信的一种机制,两个或多个进程间通过访问共用的系统消息 队列来交换信息,这里将消息队列的概念扩展到位于分布式环境下的不同站点间的进程间通信,由消息管理机构在Internet上实现可靠的消息传送,其中涉及的消息队列有发送队列、接收队列、应答队列和管理队列。应用程序在本地数据库上完成数据更新后,将更新信息以及本地应答队列和管理队列的地址存放到消息中,发送到远端接收队列中,消息交给消息管理机构后首先进入本地发送队列等待发送,如一切正常,消息将送到应用程序指定的远端接收队列中,同时,一个后台处理程序一直在监视着自己的接收队列,一旦有消息到达,它将读消息,并对本地数据库实施消息中所描述的更新操作,如果更新陈珉等分布式数据库系统中数据一致性维护方法研究成功,则处理结束,否则依应答队列的地址信息发送出错消息,另一个后台处理程序一直在监视应答队列,根据收到的错误信息,它将在本地数据库中试图撤消相应的更新操作。该方法提供的是数据库间异步更新,而不是同步更新,这样可能读到的不是最新数据,所以它不适合要求实时数据同步的分布式数据库系统。

发明内容
本发明的目的在于提供一种可以提高分布式系统的健壮性、稳定性的订阅/发布系统中信息仓库联邦。本发明的目的还在于提供一种能避免数据脏读、提高容错性的订阅/发布系统中信息仓库联邦数据同步方法。本发明的目的是这样实现的本发明的订阅/发布系统中信息仓库联邦由多个结构相同且平级的联邦成员、即信息仓库构成,每个信息仓库的结构如下(I)数据存储模块,负责数据的持久化存储的基础模块,存储的数据分为联邦数据、业务数据两种,联邦数据为各联邦成员的状态、位置信息;业务数据为发布/订阅系统运行所必须的业务数据;(2)同步处理模块,负责同步联邦成员之间数据的模块,分为消息队列、监听器、触发器、控制器四个子模块;消息队列用于缓存应用程序发送的写入请求;监听器用于监视系统状态并向其它模块推送;触发器用于根据条件触发操作;控制器用于控制整个同步操作过程;(3)公共服务模块,负责向上层模块提供公共服务的底层模块,分为时间管理、联邦状态管理、底层通信三个子模块;时间管理用于对各联邦成员进行时间同步;联邦状态管理用于维护联邦成员之间的状态、位置信息;底层通讯用于实现系统中数据的收发。所述数据存储模块采用数据库或XML文件方式存储。订阅/发布系统中信息仓库联邦的数据同步方法包括如下步骤(I)系统中的应用程序向某一信息仓库A发起“写消息”;(2)信息仓库A将“写消息”存入消息队列,触发同步操作;(3)信息仓库A取出消息队列中最下一条消息,将消息打包并根据联邦状态选择某一联邦成员发送同步消息;
(4)信息仓库A发送消息之后,开始计时,若在一定时间内没有收到对方应答,则重发该消息,若收到应答,则进入第(8)步;(5)信息仓库B接收到同步消息,判断自身是否有比该同步消息发起时间更早的同步发起消息尚未结束,若有,则抛弃信息仓库A的同步消息,若没有,则接收同步消息开始执行同步操作;(6)解析收到的同步消息,根据消息内容中的主关键字检索自身现有业务数据;(7)根据自身现有业务数据情况,判断应如何操作自身业务数据;(8)信息仓库B完成对自身业务数据的操作之后,向信息仓库A发送操作成功响应,此时信息仓库B完成同步;(9)信息仓库A收到操作成功相应之后,根据联邦状态选择下一联邦成员发送同步消息,若此时已无下一联邦成员,则开始执行自身同步操作,更新自身业务数据;(10)信息仓库A完成对自身的业务数据操作之后,联邦内所有联邦成员数据已同步,信息仓库A删除消息队列中最下一条已被执行的消息,同步完成。本发明提出的数据同步方法以简单的结构及较少的网络资源消耗迫使联邦中所有联邦成员按照顺序线性执行同步过程,避免了多联邦成员互相发起同步所造成的数据重复改写、数据脏读等问题,有效提高系统的健壮性、稳定性、容错性。另外本发明还具有以下三个特点。第一,本发明中各联邦成员在联邦中的地位完全平等,同步过程完全通过联邦成员自身的控制器控制完成,而不需要一个特殊的节点参与。这位联邦的实现提供了便利,同时也方便了用户部署联邦环境。在同步过程中,同步的消息不需要经过某个特定的节点中转,网络负载较为平衡,避免了特定节点网络通信较大而造成的系统瓶颈。第二,本发明中联邦作为一个逻辑结构,对应用程序完全透明,应用程序直接访问、操作的仍然是信息仓库本身,联邦的状态由信息仓库彼此之间互相维系。这为应用程序的开发与部署带来了极大的便利,开发人员甚至不需要对应用程序进行任何修改,就可让其运行在信息仓库联邦环境下。第三,本发明中信息仓库内部不需要存储业务数据的额外备份,应用程序发起的写入消息在同步之前进入消息队列缓存,待同步之后再存储进业务数据中。这在保证同步得以完成的前提下尽量简化了信息仓库的结构,使其能够使用更多的资源完成向应用程序提供数据存储、写入服务的本职工作,也从根本上杜绝了数据脏读的发生。


图I是联邦内联邦成员即信息仓库的功能结构图。
图2是联邦内联邦成员发起同步、接收同步的程序流程图。图3是联邦成员之间完成一次数据同步过程实例的流程图。
具体实施例方式下面结合附图和具体实施方式
对本发明做进一步说明。本发明的技术思路是在不影响订阅/发布系统中应用程序的前提下,寻求一种结构简单的、网络带宽占用小的、工程可实施性强的信息仓库之间实时同步数据的技术。该技术能针对订阅/发布系统的特点,组件信息仓库联邦,迫使联邦内多个联邦成员的同步请求按照顺序串行执行,以此保证联邦同步过程正确完成,提高整个订阅/发布系统的健壮性、稳定性以及容错性。结合图1,本发明的订阅/发布系统中信息仓库联邦(100)内信息仓库(102)的结、构包括以下几个部分(I)数据存储模块(104)。数据存储模块是信息仓库对信息、数据进行存放的基本模块。主要负责数据的持久化存储,根据订阅/发布系统的区别及运行环境,可以采用数据库、XML文件等方法进行结构化数据存储,以供系统中应用程序访问。数据存储模块中存储的数据分以下两类。I.联邦数据(106):系统中的信息仓库作为联邦成员加入联邦,联邦数据即为联邦中各联邦成员状态、位置等信息,以二维表的方式持久化存储以供联邦成员之间互相访问。2.业务数据(108):存放订阅/发布系统中应用程序产生、使用的业务数据,需要被同步的即为这一部分数据。例如DDS系统中的Topic等。(2)同步处理模块(110)同步处理模块主要负责联邦内的联邦成员(信息仓库)之间的数据同步任务。由以下四个子模块构成。I.消息队列(112):订阅/发布系统中客户端应用程序向信息仓库发起的“写入”请求并不直接存入数据存储模块中,而是暂时进入消息队列中进行缓存,以供同步处理。2.监听器(114):监视信息仓库内部状态以及网络中的消息,并向需要的模块推送消息。3.触发器(116):接收监听器推送的消息,当达到触发条件时,触发操作。例如,当消息队列中有消息时,触发同步操作。4.控制器(118):对整个同步操作过程进行控制,以保证同步正确完成。(3)公共服务模块(120)公共服务模块是系统底层的服务模块,为上层数据存储模块和同步处理模块提供时间同步服务、维护联邦成员状态信息、对外通信等功能。I.时间管理(122):实现联邦内各联邦成员时间同步,并提供接口,以便随时获取当前的仿真时间。2.联邦状态管理(124):向外广播心跳数据并接收对方心跳数据,以维护联邦内所有成员状态、位置信息。3.底层通信(126):底层通信平台,负责在系统中发送、接收数据。以上三大模块构成了一个完整的信息仓库。当整个发布/订阅系统中只有一个信息仓库时,可以认为这个信息仓库组成一个只包含一个联邦成员的联邦。而当多个信息仓库组成联邦之后,所有联邦成员之间的数据需要进行同步,根据信息仓库的状态,整个联邦可以分为如下三个状态(I) 一致性状态此时联邦中各联邦成员,即信息仓库(102)内的数据一致。
(2)积累状态此时联邦中各联邦成员,即信息仓库(102)之间可能由于某些原因暂时无法通信,订阅/发布系统中的客户端应用程序对各自所连接的信息仓库的“写入”请求在信息仓库的消息队列(112)中积累起来。此时虽然各信息仓库中存储的业务数据(108)仍保持一致,但积累的消息需要被同步。(3)同步处理状态一旦联邦内某个联邦成员,即信息仓库(102)的消息队列(112)有积累,则立即进A同步处理状态。完成所有的同步操作之后,系统返回一致性状态。整个联邦在这三个状态下不断循环,每一次循环均完成一次数据同步操作。如图2所示,本发明中联邦内联邦成员之间数据同步的过程包括以下几个步骤I.系统中的应用程序向某一信息仓库A发起“写消息”(202),此时整个联邦的一致性状态结束,进入积累状态。2.信息仓库A将“写消息”存入消息队列(204)。使用消息队列(108)是为了在同步进行过程中缓存“写消息”,迫使这些“写消息”按照顺序在联邦中进行同步,同时又不影响信息仓库本身向应用程序提供的数据读写服务。3.信息仓库A中的监听器(114)监听到消息队列(108)不为空,触发器(116)触发同步操作,信息仓库A将自身标记为“未同步状态”(206)。标记为“未同步状态”是为了在同步执行过程中根据情况抛弃别的联邦成员向自身发起的请求同步消息。此时整个联邦的积累状态结束,进入同步处理状态。4.信息仓库A中的控制器(118)取出消息队列(108)中最下一条数据(可能会存在多条消息在消息队列中积累),将消息打包(206)。打包信息包含队列编号(整个系统运行中该值唯一)、时间戳(当前系统仿真时间)、消息内容(需要执行的具体操作)。5.根据联邦状态数据(208),按照顺序,首先向另一联邦成员信息仓库B发送该“请求同步消息”,并开始计时(216 )。5. I.若在规定时间之内未收到信息仓库B对本次同步的“操作成功消息”,可能是由于信息仓库B没有收到“请求同步消息”,也有可能是由于信息仓库B发送的“操作成功消息”没有成功到达(218)。不论哪种原因,均重复第5步。5. 2.若在规定时间之内收到信息仓库B对本次同步的“操作成功消息”,跳转到第10 步(218)。6.信息仓库B中的监听器(114)监听到网络中的“请求同步消息”(224)。7.信息仓库B中的控制器(118)获取消息并进行解包,读取时间戳(226)。7. I.若自身状态为“已同步状态”,则受理同步,将自身标记为“未同步状态”,进入第 8 步(228)。7. 2.若自身状态为“未同步状态”,比对上一条自身向外发送的“请求同步消息”中的时间戳(228)。加入时间戳比较的目的是为了解决两个信息仓库之间同时、互相发送“请求同步消息”而造成的死锁等情况。7. 2. I.若收到消息的时间戳早于自身发送同步请求时的时间戳,则打断自身发起的同步,受理收到的同步请求,将自身标记为“未同步状态”,进入第8步(230)。7. 2. 2.若收到消息的时间戳晚于自身发送同步请求时的时间戳,则丢弃对方的同步请求,继续进行自身发起的同步过程(238 )。8.信息仓库B正式受理对方的同步请求,控制器(118)解包“请求同步消息”中的队列编号、消息内容,根据消息内容,对业务数据进行操作(230)。对消息做以下判断是为了在收到迟到的“请求同步消息”时进行正确处理。 8. I若消息请求为写入,根据主关键字检索信息仓库B现有数据(232 )。8. I. I若没有,则写入数据,进入第9步(234)。 8. I. 2若已有,则不做写入操作,进入第9步(234)。8. 2若消息请求为删除,根据主关键字检索信息仓库B现有数据(232)。8. 2. I若没有,则不做删除操作,进入第9步(234)。8. 2. 2若已有,则删除数据,进入第9步(234)。8. 3若消息请求为修改,直接修改数据,进入第9步(234)。
9.向同步请求发送方返回操作成功消息,消息中包含原消息队列编号,并将自身状态设置为“已同步状态”(236)。10.信息仓库A中的监听器(114)监听到网络中返回的“操作成功消息”,查看联邦状态数据(208)。10. I.若有下一个联邦成员,则向下一个联邦成员信息仓库C发起同步(216),此时对信息仓库C的同步过程与B相同,不再重复。 10.2.若没有下一个联邦成员,则进行自身业务数据操作,进入第11步(212 )。11.信息仓库A获取返回的“操作成功消息”中的队列编号值,与自身之前发送的队列编号进行比对(214)。
11.1.若相同,则更新自身的业务数据,进入第12步(214)。11.2.若不同或此时状态为“已同步状态”,则丢弃该“操作成功消息”(214)。12.信息仓库A更新数据之后,从消息队列(112)中删除最下一条已被同步的对应消息(214)。13.信息仓库A将自身状态设置为“已同步状态”,此时整个联邦的同步处理状态结束,重新进入一致性状态(220 )。到此为止,整个联邦从一致性状态过渡到积累状态,又经过同步处理状态回到一致性状态,整个联邦状态完成一次循环,联邦成员之间的数据也经过了一次同步过程。图3给出了一个实例,该实例描述了由三个信息仓库组成的联邦之间,从发起到完成一次同步的过程。其中包含了一些常见的异常情况。应当理解的是,对本发明技术所在领域的普通技术人员来说,可以根据本发明的技术方案及其构思进行相应的等同改变或替换,而所有这些改变或替换,都应属于本发明所附权利要求的保护范围。
权利要求
1.一种订阅/发布系统中信息仓库联邦,由多个结构相同且平级的联邦成员、即信息仓库构成,其特征是每个信息仓库的结构如下 (1)数据存储模块,负责数据的持久化存储的基础模块,存储的数据分为联邦数据、业务数据两种,联邦数据为各联邦成员的状态、位置信息;业务数据为发布/订阅系统运行所必须的业务数据; (2)同步处理模块,负责同步联邦成员之间数据的模块,分为消息队列、监听器、触发器、控制器四个子模块;消息队列用于缓存应用程序发送的写入请求;监听器用于监视系统状态并向其它模块推送;触发器用于根据条件触发操作;控制器用于控制整个同步操作过程; (3)公共服务模块,负责向上层模块提供公共服务的底层模块,分为时间管理、联邦状态管理、底层通信三个子模块;时间管理用于对各联邦成员进行时间同步;联邦状态管理用于维护联邦成员之间的状态、位置信息;底层通讯用于实现系统中数据的收发。
2.根据权利要求I所述的订阅/发布系统中信息仓库联邦,其特征是所述数据存储模块采用数据库或XML文件方式存储。
3.—种权利要求I所述的订阅/发布系统中信息仓库联邦的数据同步方法,其特征是包括如下步骤 (1)系统中的应用程序向某一信息仓库A发起“写消息”; (2)信息仓库A将“写消息”存入消息队列,触发同步操作; (3)信息仓库A取出消息队列中最下一条消息,将消息打包并根据联邦状态选择某一联邦成员发送同步消息; (4)信息仓库A发送消息之后,开始计时,若在一定时间内没有收到对方应答,则重发该消息,若收到应答,则进入第(8)步; (5)信息仓库B接收到同步消息,判断自身是否有比该同步消息发起时间更早的同步发起消息尚未结束,若有,则抛弃信息仓库A的同步消息,若没有,则接收同步消息开始执行同步操作; (6)解析收到的同步消息,根据消息内容中的主关键字检索自身现有业务数据; (7)根据自身现有业务数据情况,判断应如何操作自身业务数据; (8)信息仓库B完成对自身业务数据的操作之后,向信息仓库A发送操作成功响应,此时信息仓库B完成同步; (9)信息仓库A收到操作成功相应之后,根据联邦状态选择下一联邦成员发送同步消息,若此时已无下一联邦成员,则开始执行自身同步操作,更新自身业务数据; (10)信息仓库A完成对自身的业务数据操作之后,联邦内所有联邦成员数据已同步,信息仓库A删除消息队列中最下一条已被执行的消息,同步完成。
全文摘要
本发明提供的是一中订阅/发布系统中信息仓库联邦及数据同步方法。信息仓库联邦,由多个结构相同且平级的信息仓库构成。信息仓库包括数据存储模块、同步处理模块、公共服务模块,通过这些模块之间的协同工作能够将某一信息仓库中需要更新的数据以消息的方式及时通知联邦中其他的信息仓库;其他信息仓库接收到更新消息之后做出相应的更新操作,并将处理的结果返回给消息发送源;消息发送源收到反馈消息后对自身数据进行更新操作。本发明对数据量小、更新频率低的订阅/发布系统中信息仓库之间的实时数据同步提出了一种有效、快速且易于实现的解决方法,提高系统的健壮性、稳定性及容错性,保证订阅/发布系统中组成联邦的信息仓库之间数据的一致性。
文档编号G06F17/30GK102724304SQ201210184508
公开日2012年10月10日 申请日期2012年6月6日 优先权日2012年6月6日
发明者印桂生, 张万松, 徐悦竹, 杨帆, 王红滨, 石天放, 董红斌 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1