一种用于高可靠双机热备的消息同步系统及方法与流程

文档序号:15151992发布日期:2018-08-10 21:13阅读:244来源:国知局

本发明涉及软件工程领域,尤其是涉及一种用于高可靠双机热备的消息同步系统及方法。



背景技术:

在软件工程领域,计算机系统的意外停机将给企业带来名誉和经济的损失,为了避免系统停机带来的风险,企业会采用双机热备的方式来保证业务连续和数据的完整。

传统的计算机系统构架包含了一套双机热备的消息总线系统和一套应用服务器。双机热备的消息总线系统采用厂家提供的集群管理软件,将两个物理的消息总线服务器虚拟成一个服务器,虚拟服务器可能是两个物理服务器中的任意一个。应用服务器生成的消息发布至虚拟服务器,由虚拟服务器完成消息的接收、分发、持久化和同步管理。

在消息总线系统出现故障时,集群管理软件将在两个物理服务器间进行主备切换。主备切换期间,应用服务器所生成的业务数据会部分丢失,以致业务出现中断,给企业的生产营运带来安全隐患。



技术实现要素:

本发明的目的旨在克服现有技术存在的不足,提供了一种数据传输稳定的用于高可靠双机热备的消息同步系统及方法。

为了解决上述技术问题,本发明是通过以下技术方案实现的:

一种用于高可靠双机热备的消息同步系统,包含两台服务器,其中一台作为主服务器,另一台作为备服务器;两台所述服务器均布署了消息总线messagequeues、自主研发的双机热备管理服务apsb、自主研发的数据访问层服务dataadapter、数据库db和同步队列replicationqueues;所述消息总线messagequeues用于接收生产者发布的消息,并将消息分发给订阅了该消息的各个消费者;所述apsb服务用于订阅本机消息总线上与业务相关的消息,作为业务消息的消费者;所述apsb服务同时负责监和并接收另外一个服务器上的同步队列replicationqueues,并将接收的消息发布至本机消息总线上与接收消息对应的队列中,同时作为业务消息的生产者;所述数据访问层服务dataadapter用于订阅本机消息总线上需要持久化的消息,作为持久化的消息的消费者;所述数据访问层服务dataadapter负责监听和接收消息总线上需要持久化数据的消息,接收消息后将其解析、存入数据库db中;所述数据库db用于消息持久化、存放业务数据;所述同步队列replicationqueues负责接收需同步至另外一个服务器的消息且将这些消息分发至另外一个服务器的双机热备管理服务apsb。

优选的是,所述同步队列replicationqueues为同一服务器上消息总线的一个或多个队列,或者是独立于消息总线的实现队列型数据结构的应用或服务。

优选的是,所述消息总线messagequeues包括但不限于apachactivemq、ibmwebspheremq、beaweblogicjmsserver、oracleaq、tibco、swiftmq。

优选的是,所述数据库db包括但不限于sqlserver、oracle、db2、postgresql、access、mysql。

一种实现如上所述高可靠双机热备的消息同步系统的消息同步方法,其特征在于:消息在从源服务器传输至目的服务器的过程中,源服务器双机热备管理服务在消息上增加了同步标志,以防止消息回传至源服务器;具体步骤如下:

a)业务模块发布业务消息至源服务器的消息总线,源服务器的双机热备管理服务和数据访问层服务均订阅并接收到业务消息;源服务器的数据访问层服务将业务消息解析后存入数据库;

b)源服务器的双机热备管理服务将接收到的业务消息增加同步标志后发布至本机的同步队列;

c)目的服务器的双机热备管理服务接收源服务器同步队列内带同步标志的消息,并将这些业务消息发布至目的服务器的消息总线上;

d)目的服务器的数据层访问服务和双机热备管理服务接收到带同步标志的消息;数据访问层服务将业务消息解析后存入数据库;因带消息有同步标志,目的服务器的双机热备管理服务对该消息不做处理,直接丢弃。

优选的是,所述源服务器依据双机热备管理服务的启动完成时间来决定主服务器,步骤如下:

步骤1:系统启动完成,双机热备管理服务先启动完成的服务器为主服务器,后启动完成的为备服务器;

步骤2:某台服务器发生故障宕机时,正常运行的服务器为主服务器;

步骤3:仅有一台服务器运行时,该服务器为主服务器。

与现有技术相比,本发明具有如下优点:

本发明可确保主备服务器切换期间,应用服务器所生成的业务数据不发生丢失,避免了因数据丢失造成的业务中断,为企业生产营运的稳定性提供保障。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明的系统构架图。

图2为业务消息发布至源服务器消息总线时的系统构架图。

图3为apsb服务和dataadapter服务接收到业务消息的系统构架图。

图4为业务消息的存入源服务器数据库的系统构架图。

图5为业务消息进入源服务器同步队列的系统构架图。

图6为业务消息转发至目的服务器apsb的系统构架图。

图7为业务消息转发至目的服务器的消息总线的系统构架图。

图8为目的服务器上apsb和dataadapter接收到业务消息的系统构架图。

图9为目的服务器上业务消息持久化的系统构架图。

图10为本发明具体实施例中某机场行李高端控制系统拓扑图。

图11为图10所用服务器双机热备系统的构架图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下文描述中,为求简洁,将对一些技术名称采用简称的方式进行描述,具体的是将双机热备管理服务apsb简称为apsb服务或apsb,将数据访问层服务dataadapter简称为dataadapter服务或dataadapter,其余所用简称依此类推。

图1所示用于高可靠双机热备的消息同步系统,包含两台服务器,其中一台作为主服务器,另一台作为备服务器;两台所述服务器均布署消息总线messagequeues、双机热备管理服务apsb、数据访问层服务dataadapter、数据库db和同步队列replicationqueues;所述消息总线messagequeues用于接收生产者发布的消息,并将消息分发给订阅了该消息的各个消费者;所述apsb服务用于订阅本机消息总线上与业务相关的消息,作为业务消息的消费者;所述apsb服务同时负责监和并接收另外一个服务器上的同步队列replicationqueues,并将接收的消息发布至本机消息总线上与接收消息对应的队列中,同时作为业务消息的生产者;所述数据访问层服务dataadapter用于订阅本机消息总线上需要持久化的消息,作为持久化的消息的消费者;所述数据访问层服务dataadapter负责监听和接收消息总线上需要持久化数据的消息,接收消息后将其解析、存入数据库db中;所述数据库db用于消息持久化、存放业务数据;所述同步队列replicationqueues负责接收需同步至另外一个服务器的消息且将这些消息分发至另外一个服务器的双机热备管理服务apsb。

所述同步队列replicationqueues为消息总线上的一个或多个队列,或者是独立于消息总线的实现队列型数据结构的应用或服务。

所述消息总线messagequeues采用市场主流的消息总线产品,包括但不限于apachactivemq、ibmwebspheremq、beaweblogicjmsserver、oracleaq、tibco、swiftmq,也可以是自己开发的具有消息总线相关功能的应用或服务,无版本的限制。

所述数据库db可采用任意一种主流的数据库,包括但不限于sqlserver、oracle、db2、postgresql、access、mysql,无版本的限制。

一种实现如上所述高可靠双机热备的消息同步系统的消息同步方法,其特征在于:消息在从源服务器传输至目的服务器的过程中,源服务器双机热备管理服务在消息上增加了同步标志,以防止消息回传至源服务器;具体步骤如下:

a)业务模块发布业务消息至源服务器的消息总线,源服务器的双机热备管理服务和数据访问层服务均订阅并接收到业务消息;源服务器的数据访问层服务将业务消息解析后存入数据库;

b)源服务器的双机热备管理服务将接收到的业务消息增加同步标志后发布至本机的同步队列;

c)目的服务器的双机热备管理服务接收源服务器同步队列内带同步标志的消息,并将这些业务消息发布至目的服务器的消息总线上;

d)目的服务器的数据层访问服务和双机热备管理服务接收到带同步标志的消息;数据访问层服务将业务消息解析后存入数据库;因带消息有同步标志,目的服务器的双机热备管理服务对该消息不做处理,直接丢弃。

主备服务器的切换如下:

(1)系统启动时,两个服务器的apsb服务均认为自己的主机是主服务器。

(2)系统启动完成,apsb服务定时将启动完成时间发送至另外一台服务器的apsb服务;另外一台服务器的apsb服务将其与自己的启动完成时间做对比,如果自己的启动完成时间早于该时间,将自己切换为主服务器;如果自己的启动完成时间晚于该时间,将自己切换为备服务器。

(3)当一台服务器故障宕机时,无故障的服务器切换为主服务器。

(4)仅有一台服务器运行时,运行的服务器为主服务器。

(5)主服务器按照业务逻辑处理业务。

消息同步方法的具体流程如图1-9所示,具体如下:

(1)在源服务器server1上的某个生产者(应用或服务)生成一条消息,消息以bsm报文为例。该报文被发布到消息总线messagequeues。如图2所示。

(2)在源服务器server1上的apsb服务和dataadapter服务都是bsm报文消息的消费者,因此他们都会接收到来自消息总线的bsm报文。如图3所示。

(3)dataadapter服务解析bsm报文并将其存入数据库db中,实现源服务器server1上消息的持久化。如图4所示。

(4)在源服务器server1上的apsb服务检查该报文是否有同步标志,目前没有,增加一个同步标志给bsm报文用于确保消息不会从一个服务器(目的服务器server2)回到当前服务器(源服务器server1)。带同步标志的bsm报文被发布至同步队列replicationqueues,如图5所示。

(5)如果apsb服务收到来自消息总线messagequeues的bsm报文是带同步标志的,那么,该消息都不会被发布到同步队列,而是会被直接丢弃。

(6)另外一个服务器(目的服务器server2)的apsb服务接收该服务器(源服务器server1)同步队列replicationqueues中的bsm报文。如图6所示。

(7)目的服务器server2上apsb服务将带有同步标志的bsm报文发布至目的服务器server2的消息总线messagequeues。如图7所示。

(8)目的服务器server2上的apsb服务和dataadapter服务收到bsm报文消息,因该报文包含有同步标志,报文会被apsb服务直接丢弃,以确保报文不会回到源服务器server1。如图8所示。

(9)目的服务器server2上的dataadapter服务解析bsm报文,并将其存入目的服务器server2的数据库db中,如图9所示。该步骤实现业务消息在目的服务器server2上的持久化,也保证源服务器server1和目的服务器server2数据的同步。从源服务器server1到目的服务器server2消息同步过程耗时小于1ms。任意一台服务器宕机进行维护时,接管业务的服务器可通过数据库db获得完整的业务数据。

(10)若消息由server2的某生产者(应用或服务)生成,server2到server1的数据同步流程与server1到server2的数据同步流程相似。

应用实施例:

在某机场t3航站楼行李高端控制系统中,如果我们使用传统双机热备构架,在接收来自机场主干网航班信息系统的航班数据时若发生主备服务器切换,因部分消息的丢失可能会存在航班数据接收不完整的情况,以致在分拣行李时引发混乱。

我们构建了一套高可靠的服务器双机热备系统,该系统包含两个服务器server1和server2。网络拓扑图如图10所示。

启动服务器,server1和server2按照启动顺序决定主备服务器,先启动的服务为主服务器,后启动的服务为备服务器。通常情况下,先启动server1,server1为主服务器,server2为备服务器。

在server1和server2均布署了消息总线activemq、apsb服务、数据访问层服务dataadapter、数据库sqlserver、同步队列replicationqueues以及与航班信息系统的接口fisconnector服务,同步队列replicationqueues为创建在消息总线activemq上的三个队列。服务器双机热备系统构架如图11所示。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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