灾难恢复期间的消息对账的方法、系统和设备

申请号 CN201280051927.7 申请日 2012-10-25 公开(公告)号 CN103890736B 公开(公告)日 2016-08-17
申请人 国际商业机器公司; 发明人 J·E·加尔扎; S·J·霍布森;
摘要 提供了用于异步复制系统中灾难恢复期间的消息对账的方法和系统。方法包括:在远离主 数据中心 的网关处截获消息 请求 ,其中消息请求发往主数据中心;在远离主数据中心的消息请求历史中存储消息请求的副本;向主数据中心转发消息请求。该方法还包括:在主数据中心处存储消息请求的事务历史,事务历史与来自主数据中心的其他数据一起被镜像到灾难恢复 站点 ;以及响应于确定主数据中心发生故障,比较请求消息历史中的消息与从灾难恢复站点取回的事务历史中的消息。
权利要求

1.一种用于异步复制系统中灾难恢复期间的消息对账的方法,包括:
在远离主数据中心的网关处截获消息请求,其中所述消息请求发往所述主数据中心;
在远离所述主数据中心的消息请求历史中存储所述消息请求的副本;
向所述主数据中心转发所述消息请求;
在所述主数据中心处存储所述消息请求的事务历史,所述事务历史与来自所述主数据中心的其他数据一起被镜像到灾难恢复站点
响应于确定所述主数据中心发生故障,比较所述请求消息历史中的消息与从所述灾难恢复站点取回的所述事务历史中的消息;
响应于确定所述主数据中心发生故障,启动对账模式。
2.根据权利要求1所述的方法,其中在所述对账模式中,截获的消息不被转发到所述主数据中心。
3.根据权利要求1或权利要求2所述的方法,其中比较消息并且丢弃在所述请求消息历史与所述事务历史之间对应的消息,并且发起不对应的消息的人工对账。
4.根据权利要求1或权利要求2所述的方法,其中所述请求消息历史存储在所述灾难恢复站点处。
5.根据权利要求1或权利要求2所述的方法,包括确保处理所述消息请求原子地更新所述主数据中心处的数据以及更新所述事务历史。
6.根据权利要求1或权利要求2所述的方法,其中所述请求消息历史具有时间记录,并且比预定寿命更老的消息被移除。
7.根据权利要求1或权利要求2所述的方法,包括在所述主数据中心中执行时间启动的过程以删除所述事务历史中的老条目。
8.一种用于异步复制系统中灾难恢复期间的消息对账的系统,包括:
处理器;
网关组件,用于截获消息请求,其中所述网关组件远离主数据中心,所述消息请求发往所述主数据中心;
网关存储设备,用于在远离所述主数据中心的消息请求历史中存储所述消息请求的副本;
消息转发组件,用于向所述主数据中心转发所述消息请求;
所述主数据中心处的事务历史组件,用于在所述主数据中心处存储所述消息请求的事务历史,所述事务历史与来自所述主数据中心的其他数据一起被镜像到灾难恢复站点;以及
对账组件,用于响应于确定所述主数据中心发生故障,比较所述请求消息历史中的消息与从所述灾难恢复站点取回的所述事务历史中的消息,
其中所述对账组件响应于确定所述主数据中心发生故障,启动对账模式。
9.根据权利要求8所述的系统,其中在所述对账模式中,截获的消息不被转发到所述主数据中心。
10.根据权利要求8或权利要求9所述的系统,其中所述对账组件包括比较组件,用于比较消息并且丢弃在所述请求消息历史与所述事务历史之间对应的消息,并且发起不对应的消息的人工对账。
11.根据权利要求8或权利要求9所述的系统,其中所述请求消息历史存储在所述灾难恢复站点处。
12.根据权利要求8或权利要求9所述的系统,其中所述事务历史组件确保处理所述消息请求原子地更新所述主数据中心处的数据以及更新所述事务历史。
13.根据权利要求8或权利要求9所述的系统,其中所述请求消息历史具有时间记录,并且内务处理组件被提供以用于移除比预定寿命更老的消息。
14.根据权利要求8或权利要求9所述的系统,其中所述事务历史组件用于在所述主数据中心中执行时间启动的过程以删除所述事务历史中的老条目。
15.一种用于异步复制系统中灾难恢复期间的消息对账的设备,包括:
用于在远离主数据中心的网关处截获消息请求的装置,其中所述消息请求发往所述主数据中心;
用于在远离所述主数据中心的消息请求历史中存储所述消息请求的副本的装置;
用于向所述主数据中心转发所述消息请求的装置;
用于在所述主数据中心处存储所述消息请求的事务历史的装置,所述事务历史与来自所述主数据中心的其他数据一起被镜像到灾难恢复站点;
用于响应于确定所述主数据中心发生故障比较所述请求消息历史中的消息与从所述灾难恢复站点取回的所述事务历史中的消息的装置;
用于响应于确定所述主数据中心发生故障启动对账模式的装置。

说明书全文

灾难恢复期间的消息对账的方法、系统和设备

技术领域

[0001] 本发明涉及灾难恢复期间的消息对账领域。特别地,本发明涉及简化灾难恢复期间的人工消息对账。

背景技术

[0002] 导致整个数据中心损失的重大破坏可能严重地影响公司开展其业务的能。很多公司通过保持备选数据中心来保护自己以防这种险,这种备选数据中心通常称为灾难恢复(DR)站点
[0003] 主站点与DR站点之间的距离为100英里或者更多并不是不常见;这是为了确保DR站点不受使主站点丧失能力的大规模破坏的影响。
[0004] 如果主数据中心故障,则让DR站点在线并取代主站点。为了让这工作,DR站点必须具有对业务数据的当前副本的访问权。因此,当主数据中心运行时,数据必须被发送到远程站点。
[0005] 在过去,这是通过将数据的副本放置在磁带上,并且以每天或每周的间隔、物理地将磁带拿到DR站点来完成的。当今,现代碟盘自动地传播(镜像)任何更新至远程站点,因此DR站点处的业务数据有可能是任意程度的最新。随着应用写入碟盘,碟盘控制器自动地向DR站点镜像碟盘传播更新。
[0006] 存在进行此传播的两种方式:
[0007] □同步:主站点上的每个写入操作仅在数据已经被成功写入到DR站点后才完成(如写入应用所看到的)。
[0008] □异步:当数据被本地写入时写入操作完成。数据随后被传播。
[0009] 同步镜像具有如下问题:远程站点总是最新,但是对应用的碟盘响应时间非常高,典型地平均为25毫秒(这非常慢,并且类似于 八十年代早期的响应时间)。仅当事务速率非常低时,设施可以负担使用此选项。
[0010] 异步复制不会引起性能问题,因为典型的现代碟盘的响应时间将小于1毫秒,因此允许高的事务量。然而,当数据被异步传送时,DR站点可能落在主站点后面。当主站点故障时这产生问题,因为不能相信数据是最新的。未传送的任何数据实际上丢失了。例如,客户已经报告,如果在每秒处理300个事务时系统故障,则DR站点至少丢失10秒价值的事务数据。这意味着必须调查和重新处理(大部分是人工地)至少3000个事务。该处理通常称为“人工对账(manual reconciliation)”。
[0011] 众所周知人工对账非常困难:当操作被切换到DR站点时,不太可能知道遗漏了多少数据。通常,这需要联系每个用户并且请求他们核实在中断时已经提交了哪些事务。用户继而必须检查他们本地的事务日志并且将其与DR站点中的数据进行比较,以识别哪些事务必须被重新提交。换言之,问题不仅仅是(例如)3000个事务需要重新提交,而且不知道那些事务是哪些。在很多情况下,在识别和解决任何遗漏事务之前不太可能继续服务。这导致服务中断好几个小时。
[0012] 异步复制提供了良好的性能但是导致远程站点处不可靠/过时的数据。同步复制解决了数据一致性问题,但是使得系统如此缓慢,以致于不太可能是可接受的解决方案。
[0013] 因此,本领域中需要解决上述问题。

发明内容

[0014] 根据本发明的第一方面,提供一种用于异步复制系统中灾难恢复期间的消息对账的方法,包括:在远离主数据中心的网关处截获消息请求,其中该消息请求发往主数据中心;在远离主数据中心的消息请求历史中存储消息请求的副本;向主数据中心转发消息请求;在主数据中心处存储消息请求的事务历史,该事务历史与来自主数 据中心的其他数据一起被镜像到灾难恢复站点;以及响应于确定主数据中心发生故障,比较请求消息历史中的消息与从灾难恢复站点取回的事务历史中的消息。
[0015] 根据本发明的第二方面,提供一种用于异步复制系统中灾难恢复期间的消息对账的系统,包括:处理器;网关组件,用于截获消息请求,其中网关组件远离主数据中心,消息请求发往主数据中心;网关存储设备,用于在远离主数据中心的消息请求历史中存储消息请求的副本;消息转发组件,用于向主数据中心转发消息请求;主数据中心处的事务历史组件,用于在主数据中心处存储消息请求的事务历史,该事务历史与来自主数据中心的其他数据一起被镜像到灾难恢复站点;以及对账组件,用于响应于确定主数据中心发生故障,比较请求消息历史中的消息与从灾难恢复站点取回的事务历史中的消息。
[0016] 根据本发明的第三方面,提供一种存储在计算机可读介质上并且可加载到数字计算机的内部存储器中的计算机程序,包括软件代码部分,当所述程序在计算机上运行时,软件代码部分用于执行根据本发明第一方面的方法。
[0017] 从另一方面看来,本发明提供了一种用于异步复制系统中灾难恢复期间的消息对账的计算机程序产品,可由处理电路读取并且存储供该处理电路运行以执行用于执行本发明的步骤的方法的指令的计算机可读存储介质。附图说明
[0018] 现在将仅通过示例方式、参考下列附图中图示的优选实施例来描述本发明,附图中:
[0019] 图1是根据本发明的系统的实施例的框图
[0020] 图2是本发明可以在其中实施的计算机系统的框图;以及
[0021] 图3至图5是根据本发明的方法的诸方面的实施例的流程图

具体实施方式

[0022] 将理解,出于图示的简化和清楚起见,附图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可以相对于其他元件而被放大。而且,在认为适当之处,参考标号可以在附图之间重复以指示对应或类似的特征。
[0023] 在下文详细描述中,阐述了多个特定细节以便提供对本发明的全面理解。然而,本领域技术人员将会理解本发明可以不要这些特定细节而被实践。在其他实例中,没有详细描述公知的方法、过程和组件以避免模糊本发明。
[0024] 描述了方法和系统,其简化了使用异步复制时的人工对账工作。所描述的解决方案帮助最小化灾难恢复期间所需要的人工对账量。其应用于消息驱动的工作,其中接收请求消息、更新数据库以及可选地发送应答。
[0025] 参考图1,框图示出所描述系统100的实施例。
[0026] 提供主数据中心110,其接收来自请求应用101的请求消息以更新主数据中心110处的消费应用111的数据(例如,数据库表、队列,等等)。主数据中心110的主存储设备120可以响应于请求消息而被更新,以及可选地可以向请求应用101发送应答。
[0027] 在灾难恢复站点处、远离主数据中心110而提供灾难恢复(DR)数据中心130。灾难恢复数据中心130具有灾难恢复存储设备140,其具有主数据中心存储设备120的镜像盘。
[0028] 对主存储设备120的写入被异步传播到灾难恢复存储设备140。
[0029] 在所描述的系统中,提供网关组件150,其中来自请求应用101的消息被发送到网关组件而不是被直接发送到主数据中心110处的消费应用111。网关组件150在与主数据中心110分离的数据中心中运行。网关组件150远离主数据中心110定位在不会受使主数据中心110丧失能力的大规模破坏影响的位置处。在一个实施例中,网关组件150可以位于灾难恢复站点处。
[0030] 网关组件150可以包括消息转发组件151。当请求消息到达网关 组件150的消息转发组件151时,在消息被转发到其在主数据中心110处运行的消费应用111之前,将该消息的副本保存在网关存储设备160的永久存储设备中的请求消息历史161中(例如,作为数据库表、消息队列、或文件)。
[0031] 主数据中心110处的消费应用111可以包括请求接收组件112,用于经由网关组件150的消息转发组件151接收来自请求应用101的消息请求。消费应用111可以包括更新数据组件114或者与之通信以响应于消息请求而更新主存储设备120中的数据121。消费应用111也可以包括事务历史组件113或者与之通信以更新事务历史122(例如,以数据库表的形式),其跟踪主数据中心110所处理的每个消息。此事务历史122可以事务性地更新,并且其被传播到灾难恢复站点以作为镜像机制的一部分。
[0032] 消费应用111也可以包括应答组件115用于应答请求应用101,应答可以经由网关组件150的消息转发组件151以及供消费应用111交付事务的交付组件116。
[0033] 网关组件150也可以包括在主数据中心110故障时提供对账功能的对账组件152。DR对账组件131可以被提供在DR数据中心130处,该DR数据中心提供来自存储在DR存储设备
140处的事务历史140的信息,该信息可以通过对账组件152的比较组件153而与请求消息历史161进行比较。
[0034] 网关组件150也可以包括内务处理组件154,用于从请求消息历史161中清除出过期数据。
[0035] 参考图2,用于实施本发明诸方面的示例性系统包括适合于存储和/或执行程序代码的数据处理系统200,其包括直接或通过总线系统203间接耦合到存储器元件的至少一个处理器201。存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储设备以及高速缓存存储器,高速缓存存储器提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储设备取回代码的次数。
[0036] 存储器元件可以包括只读存储器(ROM)204和随机访问存储器(RAM)205形式的系统存储器202。基本输入/输出系统(BIOS)206可以存储在ROM204中。系统软件207可以存储在RAM205中,其包括操作系统软件208。软件应用210也可以存储在RAM205中。
[0037] 系统200也可以包括主存储装置211,诸如磁性硬盘驱动,以及辅助存储装置212,诸如磁盘驱动和光盘驱动。驱动以及它们关联的计算机可读介质提供计算机可执行指令、数据结构、程序模和用于系统200的其他数据的非易失性存储。软件应用可以存储在主存储装置211、辅助存储装置212以及系统存储器202中。
[0038] 计算系统200可以使用经由网络适配器216、去往一个或多个远程计算机的逻辑连接在联网环境中操作。
[0039] 输入/输出设备213可以直接或通过中间I/O控制器间接地耦合到系统。用户可以通过输入设备,诸如键盘、指点设备或其他输入设备(例如,麦克风、操纵杆、游戏板、卫星盘等)向系统200输入命令和信息。输出设备可以包括扬声器、打印机等。显示设备214也经由诸如视频适配器215之类的接口连接到系统总线203。
[0040] 参考图3,流程图300示出所描述方法的一方面的实施例。请求应用可以向主数据中心处的消费应用发送201请求消息。该请求消息可以在远离主数据中心的网关组件处被截获302。消息请求的副本可以保存303在请求消息历史数据库或列表中,其也保持远离主数据中心。请求消息历史可以包括该请求的时间记录。消息请求继而可以被转发304到主数据中心处的消费应用。
[0041] 可选地,请求消息历史数据库中的消息可以在它们比预定寿命更老时而被移除。
[0042] 参考图4,流程图400示出所描述方法的一方面的实施例。转发的请求消息可以在主数据中心处从网关组件接收401。请求消息可以被处理402并且可以对主数据中心的主存储设备中的数据进行更新。主数据中心处的事务历史数据库或列表可以被事务性地更新403。作为镜像机制的一部分,事务历史可以连同来自主存储设备的其他数 据一起被发送到灾难恢复站点。
[0043] 参考图5,流程图示出所描述方法的一方面的实施例。当主数据中心故障501时,网关组件可以被通知502并且可以进入对账模式。
[0044] 随后到达网关组件的任何请求消息可以被保持503并且不被转发到主数据中心的消费应用。备选地,网关组件可以简单地拒绝503请求消息直到对账模式结束。
[0045] 存储在网关组件处的请求消息历史中的消息与存储在灾难恢复站点处的事务历史中的条目进行比较504。确定505消息是否对应。如果它们对应,则它们可以被安全地丢弃506,因为此请求已被处理并且其数据已被传播到灾难恢复站点。
[0046] 如果消息不对应,则请求消息历史中的、在事务历史中不存在对应条目的消息可以被发送以供人工对账507。
[0047] 此请求可能已经在主数据中心处被处理,但是其数据未传播到灾难恢复站点。
[0048] 确定508请求历史中是否有更多消息。当请求历史中的所有消息都已被处理时,可以清空509请求历史。
[0049] 网关组件可以结束510对账模式,并且由于其假设主数据中心不是运行的,因此其可以向灾难恢复站点处的消费应用转发传入请求。
[0050] 所描述的方法依赖于将请求消息历史中的条目与事务历史中的条目进行关联的能力。这可以通过向消息分配唯一消息标识来实现,这是消息收发系统中的已知技术。
[0051] 所描述的方法和系统通过快速标识哪些消息必须被检查以决定它们是否需要重新提交,从而简化了对账过程。可能仍然需要联系用户以解决事务,但是代替于说“你在10:00之前提交的任何事务可能已丢失”,有可能向用户提供需要注意的消息列表。这极大地缩小了可疑事务的数量以及识别它们的时间,这继而缩短了恢复服务的时间。
[0052] 如果事务必须被重新提交,则请求消息很容易可用于重新发送。 在没有所描述系统的情况下,用户需要重新运行应用,或者填写浏览器表格,等等。这些动作不仅费时而且容易出错,并且引入发送错误信息的问题。例如,支付 1986可能重新发送成 1896,这是在压力下工作时(这毫无疑问将是数据中心中断后的情形)的典型错误。
[0053] 请求消息历史中的条目以及事务历史中的行将累积并且将必须被“修剪”;下面描述用于修剪的建议过程。
[0054] 时间启动的内务处理过程可以在网关组件中执行,其从请求消息历史中移除比任意寿命更老的所有消息。
[0055] 为了从事务历史移除老的条目,存在两个选项:
[0056] 1)在主数据中心中运行时间启动的过程,其删除老的条目;或者
[0057] 2)网关组件内务处理过程作为客户端连接到主数据中心数据库并且删除老的请求消息历史条目和事务历史表行。这些删除是“懒惰的”,因为将这些操作作为两阶段交付事务来执行不是必需或者可取的。
[0058] 所描述的方法和系统开发已知的异步镜像技术来维护远程灾难恢复站点处的事务的自洽备份。事务历史记录哪些业务事务已经被以及尚未被针对数据库的两个副本而执行。
[0059] 所描述的方法和系统明确地使用数据库访问方法的事务语义。例如,事务语义保证对于任何消息:(a)针对该消息的所有更新被完成并且该消息出现在事务历史数据库表中,或者(b)针对该消息没有进行更新并且该消息未出现在事务历史数据库表中。
[0060] 注意,所描述的方法不指示尚未被删除的项是一定必需用于恢复,而仅仅指示一些项不再需要并且可以被删除。所描述的方法旨在于处理不是幂等的事务,从而其实质上确切地识别远程数据库副本表明为完成(并且其因此不必再次应用)的那些项(请求消息)。这是通过开发事务语义以确保处理消息原子地更新数据库以及更新事务历史数据库表(二者都发生或者都不发生)来实现的。
[0061] 本发明可以采取完全硬件实施例、完全软件实施例或者包含硬件和软件元件的实施例的形式。在优选实施例中,本发明实现为软件,其包括但不限于固件、驻留软件、微代码等。
[0062] 本发明可以采取从计算机可用或计算机可读介质可访问的计算机程序产品的形式,该介质提供程序代码以供计算机或任何指令执行系统使用或与之结合使用。出于本描述的目的,计算机可用或计算机可读介质可以是任何装置,其可以包含、存储、传送、传播或者传输程序以供指令执行系统、装置或设备使用或与之结合使用。
[0063] 介质可以是电的、磁的、光的、电磁的、红外的或者半导体系统(或装置或设备)或传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可移动计算机盘、随机访问存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前示例包括紧致盘只读存储器(CD-ROM)、紧致盘读/写(CD-R/W)以及DVD。
[0064] 可以在不偏离本发明范围的情况下对前述做出改进和修改
QQ群二维码
意见反馈