一种面向消息的中间件故障恢复方法及装置与流程

文档序号:19570675发布日期:2019-12-31 18:53阅读:247来源:国知局
一种面向消息的中间件故障恢复方法及装置与流程

本发明涉及计算机网络通讯技术领域,尤指一种面向消息的中间件(message-orientedmiddleware,mom)故障恢复方法及装置。



背景技术:

mom可以描述为一类能够为分布式应用程序或者异构的操作系统提供松散耦合的、可靠的、可扩展的、安全的消息通信软件架构。mom在消息的发送者和消息的接收者之间提供一个消息中介的作用,这种中介作用本质上解决了应用通信之间的耦合关系。

在mom系统中,消息是由一个应用程序发布给mom,mom中转发给另一个应用程序的业务信息。通过mom,消息将会投递给订阅它的订阅者。发送者无需对订阅者做任何假设和了解,订阅者也无需知道发送者的相关信息,这种基于消息发布/订阅(p/s)的模型是松散耦合通信机制的根本。这样的系统即使在有个别组件出异常时,整个系统也能够正常对外提供功能。

为了发送或接收消息,客户端必须先连接到mom,客户端本身就是消息生成方和/或消息使用方。消息生成方向mom管理的目的地发送一条消息,消息使用方访问该目的地以使用此消息。该消息包括消息头、属性(可选)和主体。消息主体用来保存数据;消息头中包含代理路由和管理消息所需的信息;属性可以由客户端应用程序或提供者定义,以满足处理消息的需要。

mom可以很好的解决耦,具备以下特点:1、异步:基于存储转发机制的异步通信方式,发送者将消息发送给mom,mom将消息存放起来,在合适的时候再将消息转发给接收者。2、松耦合:客户和服务对象的生命周期松耦合,由mom来保障消息队列及服务,二者的生命周期无需相同,即发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行。3、可靠性:由mom来保障即使系统中有个别应用出现异常,整个系统也能够正常对外提供功能。

mom作为系统消息通信的中心,也是整个系统正常运行的中心节点。一旦mom出现故障,就会导致整个系统异常。因此业界通常采用集群技术达到去中心化的目的,多个mom实例共同组成一个群体对外提供服务,每个mom实例就是集群中的一个节点。集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。

mom为了保证数据的高可用性,集群技术中存在主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会在从节点中选取一个来充当主节点,从而保证集群不会挂掉。

一主多从的集群模式,在主节点出现故障的时候,通过在从节点中选取新主的方式达到故障恢复。但是该方案在单机网络设备上,无法有效实施。原因如下:1、单机网络设备本身的内存、cpu等硬件资源存在瓶颈,无法做到一主多从的集群模式,每增加一个从机,需要多消耗等量的内存并占用相当的cpu资源。2、mom一主多从的集群模式下通常用于分布式场景下的容灾恢复策略,不同的主机和从机一般分布于不同的物理机上。而对于单机如嵌入式设备场景下,该方案并不适用。



技术实现要素:

本发明实施例提供一种mom故障恢复方法及装置,用以解决现有技术中如何在单机设备实现mom故障恢复的问题。

一种面向消息的中间件mom故障恢复方法,所述方法应用于单机设备中的mom节点,包括:

mom进行重启,读取数据库的备份文件;

确定所述备份文件的文件块个数;

启动与所述文件块个数相等数量的后台子线程以使每个子线程读取一个文件块,直至所述备份文件读取完毕以完成mom重启。

进一步地,所述方法,还包括:

mom在正常运行期间,采用快照备份方式对数据库进行备份,并将备份文件划分为预设大小的文件块进行存储。

本发明实施例还提供一种面向消息的中间件mom故障恢复方法,所述方法应用于与发生重启mom连接的客户端;所述方法,包括:

所述客户端获取第一mom的下游数据outdb;所述outdb为所述第一mom存储的所述客户端发来的数据;

将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分标记为确定数据,所述outdb中与所述内部数据不重合的部分标记为不确定数据;

获取第二mom的上游数据inputdb;所述inputdb为所述第二mom提供给所述客户端的数据;

判断自身是否存储有所述inputdb,若未存储所述inputdb,则存储所述inputdb并进行处理,得到增量outdb并输出给所述第一mom;

当遍历完所有第二mom的inputdb后,将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致。

其中,所述将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分标记为确定数据,所述outdb中与所述内部数据不重合的部分标记为不确定数据,包括:

将所述outdb标记为脏数据;

将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分的脏标记去除;

将去除脏标记的数据作为确定数据,保留脏标记的数据作为不确定数据。

其中,所述将所述outdb中标记为不确定数据的部分进行清除,包括:

将所述outdb中标记为脏数据的部分进行清除。

进一步地,在所述当遍历完所有第二mom的inputdb后,将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致之后,所述方法还包括:

当存在其他客户端的数据依赖所述客户端的数据时,所述客户端发送数据一致性校验完成通告给所述其他客户端以使所述其他客户端接收到所述数据一致性校验完成通告后开始进行数据一致性校验。

进一步地,当所述客户端的数据依赖其他客户端的数据时,在所述客户端获取所述第一mom的下游数据outdb之前,所述方法,还包括:

接收所述其他客户端发送的数据一致性校验完成通告。

本发明实施例还提供一种面向消息的中间件mom故障恢复装置,所述装置应用于单机设备中的mom节点,包括:读取单元、确定单元、启动单元;其中,

所述读取单元,用于所述mom节点重启时,读取数据库的备份文件,所述备份文件采用快照备份方式获得;

所述确定单元,用于确定所述备份文件的文件块个数;

所述启动单元,用于启动与所述文件块个数相等数量的后台子线程以使每个子线程读取一个文件块,直至所述备份文件读取完毕以完成mom重启。

进一步地,所述装置,还包括:备份单元,用于在mom正常运行期间,采用快照备份方式对数据库进行备份,并将备份文件划分为预设大小的文件块进行存储。

本发明实施例还提供一种面向消息的中间件mom故障恢复装置,所述装置应用于与发生重启mom连接的客户端;所述装置,包括:第一获取模块、比对模块、第二获取模块、判断模块、处理模块以及清除模块;其中,

所述第一获取模块,用于获取第一mom的下游数据outdb;所述outdb为所述第一mom存储的所述客户端发来的数据;

所述比对模块,用于将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分标记为确定数据,所述outdb中与所述内部数据不重合的部分标记为不确定数据;

所述第二获取模块,用于获取第二mom的上游数据inputdb;所述inputdb为所述第二mom提供给所述客户端的数据;

所述判断模块,用于判断自身是否存储有所述inputdb;

所述处理模块,用于若未存储所述inputdb,则存储所述inputdb并进行处理,得到增量outdb并输出给所述第一mom;

所述清除模块,用于当所述第二获取模块遍历完所有第二mom的inputdb后,将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致。

其中,所述比对模块,具体用于将所述outdb标记为脏数据;将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分的脏标记去除;将去除脏标记的数据作为确定数据,保留脏标记的数据作为不确定数据。

其中,所述清除模块,具体用于将所述outdb中标记为脏数据的部分进行清除。

进一步地,所述装置,还包括:通告模块,用于在所述清除模块将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致后,当存在其他客户端的数据依赖所述客户端的数据时,发送数据一致性校验完成通告给所述其他客户端以使所述其他客户端接收到所述数据一致性校验完成通告后开始进行数据一致性校验。

进一步地,所述装置,还包括:接收模块,用于当所述客户端的数据依赖其他客户端的数据时,接收所述其他客户端发送的数据一致性校验完成通告。

本发明有益效果如下:

本发明实施例提供的mom故障恢复方法及装置,通过对mom的数据库进行快照备份操作,并采用文件块存储备份文件的方式,多线程并行读取文件块,能够使得mom实现快速故障重启,并在mom发生重启时,对与该mom连接的客户端进行内外数据一致性校验,以保证客户端重连所述mom后能够正常工作,并能够基于数据一致性校验完成通知的机制,保证依赖业务的强数据一致性要求,解决了单机设备mom故障恢复问题,保证了网络设备的高可用性,节约了成本。

附图说明

图1为本发明实施例中mom故障恢复方法的流程图;

图2为本发明实施例中mom故障恢复方法的另一流程图;

图3为本发明实施例中mom故障恢复装置的结构示意图;

图4为本发明实施例中mom故障恢复装置的另一结构示意图。

具体实施方式

针对现有技术中存在的单机设备实现mom故障恢复的问题,本发明实施例提供的mom故障恢复方法,通过对mom的数据库进行备份操作,使得mom能够实现快速故障重启,并在mom发生重启时,对与该mom连接的客户端进行内外数据一致性校验以保证客户端重连所述mom后能够正常工作。本发明方法的流程如图1所示,所述方法应用于单机设备中的mom节点,执行步骤如下:

步骤101,mom进行重启,读取数据库的备份文件;

这里,可以启用mom保存快照备份文件的功能对mom正常运行期间的数据库进行备份,以减少mom重启期间的数据丢失,这里快照备份的周期可以按照实际需要进行设置,例如可以为1分钟/次等等。

步骤102,确定所述备份文件的文件块个数;

对备份文件采用块存储的方式,每个文件块的大小可以相同或不同,具体可以按照实际需要预先进行设置。

步骤103,启动与所述文件块个数相等数量的后台子线程以使每个子线程读取一个文件块,直至所述备份文件读取完毕以完成mom重启;

启动与文件块个数相同数量的后台子线程来并行读取备份文件以实现快速载入内存恢复数据的目的。

进一步地,所述方法,还包括:

mom在正常运行期间,采用快照备份方式对数据库进行备份,并将备份文件划分为预设大小的文件块进行存储。

mom重启之后,与该发生重启的mom连接的客户端在该重启mom中的数据可能与内部自身存储的数据存在不一致的问题,因此所述客户端需要进行内外数据一致性校验。

所述客户端进行内外数据一致性校验,主要保证上下游数据和自身内部数据一致性问题即可;这里,客户端的上游数据为mom中存储的要输入给所述客户端的数据,这里记为inputdb;客户端的下游数据为所述客户端输出给mom并存储在mom中的数据,这里记为outdb;

本发明实施例还提供一种mom故障恢复方法,具体流程如图2所示,所述方法应用于与发生重启mom连接的客户端;应当理解,只要与发生重启的mom连接的客户端,均需要进行内外数据一致性校验;所述方法执行步骤如下:

步骤201,所述客户端获取第一mom的下游数据outdb;所述outdb为所述第一mom存储的所述客户端发来的数据;

步骤202,将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分标记为确定数据,所述outdb中与所述内部数据不重合的部分标记为不确定数据;

步骤203,获取第二mom的上游数据inputdb;所述inputdb为所述第二mom提供给所述客户端的数据;

应当理解,所述第一mom可能同时也是第二mom,这里的第一mom和第二mom仅是为了表述方便进行命名。

步骤204,判断自身是否存储有所述inputdb,若未存储所述inputdb,则存储所述inputdb并进行处理,得到增量outdb并输出给所述第一mom;

步骤205,当遍历完所有第二mom的inputdb后,将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致。

其中,步骤202,所述将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分标记为确定数据,所述outdb中与所述内部数据不重合的部分标记为不确定数据,包括:

将所述outdb标记为脏数据;

将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分的脏标记去除;

将去除脏标记的数据作为确定数据,保留脏标记的数据作为不确定数据。

相应地,步骤205中,将所述outdb中标记为不确定数据的部分进行清除,包括:

将所述outdb中标记为脏数据的部分进行清除。

这里,有些客户端之间存在业务逻辑上存在依赖关系,为了保证不同客户端之间的数据一致性校验能够按照业务需求有序进行,通过在这些客户端之间添加一个控制信息来控制多个客户端之间的数据一致性校验顺序。

优选地,在所述当遍历完所有第二mom的inputdb后,将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致之后,所述方法还包括:

当存在其他客户端的数据依赖所述客户端的数据时,所述客户端发送数据一致性校验完成通告给所述其他客户端以使所述其他客户端接收到所述数据一致性校验完成通告后开始进行数据一致性校验。

优选地,当所述客户端的数据依赖其他客户端的数据时,在所述客户端获取所述第一mom的下游数据outdb之前,所述方法,还包括:

接收所述其他客户端发送的数据一致性校验完成通告。

基于同一发明构思,本发明实施例提供一种面向消息的中间件mom故障恢复装置,该装置可以应用于单机设备中的mom节点,结构如图3所示,包括:读取单元31、确定单元32、启动单元33;其中,

所述读取单元31,用于所述mom节点重启时,读取数据库的备份文件;

所述确定单元32,用于确定所述备份文件的文件块个数;

所述启动单元33,用于启动与所述文件块个数相等数量的后台子线程以使每个子线程读取一个文件块,直至所述备份文件读取完毕以完成mom重启。

进一步地,所述装置,还包括:备份单元34,用于在mom正常运行期间,采用快照备份方式对数据库进行备份,并将备份文件划分为预设大小的文件块进行存储。

本发明实施例还提供一种面向消息的中间件mom故障恢复装置,所述装置应用于与发生重启mom连接的客户端;结构如图4所示,包括:第一获取模块41、比对模块42、第二获取模块43、判断模块44、处理模块45以及清除模块46;其中,

所述第一获取模块41,用于获取第一mom的下游数据outdb;所述outdb为所述第一mom存储的所述客户端发来的数据;

所述比对模块42,用于将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分标记为确定数据,所述outdb中与所述内部数据不重合的部分标记为不确定数据;

所述第二获取模块43,用于获取第二mom的上游数据inputdb;所述inputdb为所述第二mom提供给所述客户端的数据;

所述判断模块44,用于判断自身是否存储有所述inputdb;

所述处理模块45,用于若未存储所述inputdb,则存储所述inputdb并进行处理,得到增量outdb并输出给所述第一mom;

所述清除模块46,用于当遍历完所有第二mom的inputdb后,将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致。

其中,所述比对模块42,具体用于将所述outdb标记为脏数据;将所述客户端的内部数据与所述outdb进行比对,将所述outdb中与所述内部数据重合的部分的脏标记去除;将去除脏标记的数据作为确定数据,保留脏标记的数据作为不确定数据。

其中,所述清除模块46,具体用于将所述outdb中标记为脏数据的部分进行清除。

进一步地,所述装置,还包括:通告模块47,用于在所述清除模块将所述outdb中标记为不确定数据的部分进行清除以使客户端内外数据一致后,当存在其他客户端的数据依赖所述客户端的数据时,发送数据一致性校验完成通告给所述其他客户端以使所述其他客户端接收到所述数据一致性校验完成通告后开始进行数据一致性校验。

进一步地,所述装置,还包括:接收模块48,用于当所述客户端的数据依赖其他客户端的数据时,接收所述其他客户端发送的数据一致性校验完成通告。

应当理解,本发明实施例提供的面向消息的中间件mom故障恢复装置实现原理及过程与上述图1、图2及所示的实施例类似,在此不再赘述。

本发明实施例提供的mom故障恢复方法及装置,通过对mom的数据库进行快照备份操作,并采用文件块存储备份文件的方式,多线程并行读取文件块,能够使得mom实现快速故障重启,并在mom发生重启时,对与该mom连接的客户端进行内外数据一致性校验以保证客户端重连所述mom后能够正常工作,并能够基于数据一致性校验完成通知的机制保证依赖业务的强数据一致性要求,解决了单机设备mom故障恢复问题,保证了网络设备的高可用性,节约了成本。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202、203等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1