可靠消息传输方法

文档序号:7792569阅读:191来源:国知局
专利名称:可靠消息传输方法
技术领域
本发明涉及计算机网络领域,特别涉及一种在分布式环境下的可靠消息传输方法。
背景技术
随着计算机网络技术的发展以及硬件设备性能日益强大,网络应用越来越复杂。 网络的体系结构从集中式、到两层模式,到三层模式,直至多层模式。分布式的网络应用在很多领域都提供了最佳的解决方案,因此分布式网络成为一个极为热门的研究方向。在大型的分布式网络应用中,不同的应用运行在不同的进程,分布在不同的计算机上,甚至跨系统、跨网络,如何将这些应用有效地集成,使不同的应用能够保持良好的通信,充分发挥分布式应用的巨大优越性,成为一个重要的问题。在分布式网络应用中,应用之间的通信是通过消息来实现的。消息就是一个信息单元,这个信息单元可以是一个请求(Request message),也可以是一个应答(Iteply message),或者是一个报告(Report message)或一份报文(Datagram message)。一个消息包含两个因素——消息描述(用于定义诸如消息传输目标等)和数据消息(如应用程序数据或数据库查询等)。程序之间的通信通过传递消息而非直接调用程序。另外,在分布式网络应用中,越来越多的应用程序之间的通信不仅要求可以同步发送接收,而且还要求能够实现异步通信。举例来说,在现有技术中存在一种两级分布式部署的异步消息传输模式。如图1 所示,该分布式网络分成两级,上级为总部端,下级为多个分部端,各个节点上的应用程序通过服务总线进行通信。服务总线主要包括消息传输、位置标识、通信匹配、接口转换、通信模型、状态性管理、传输访问监控、服务管理等8大模块,主要实现Web服务的统一注册、路由、监控、安全等管理功能。诸如公文、基础数据、报表数据之类的数据都需要纵向两级的传输。实际情况是,应用程序并不总是同时在线;网络的硬件故障往往不可避免;数据的流量具有突发性,可能造成网络的信息拥塞;某个应用需要立即得到处理,而另外一个应用却可以缓一缓,它们应当区别对待。因此,由于网络环境的不稳定性和实际情况的复杂性,在跨级进行消息传输过程中会出现数据丢失,从而造成业务数据交换中断,损失数据的准确性和权威性。如此一来,应用之间的异步通信问题变得非常突出。

发明内容
为了解决现有技术中存在的技术问题,本发明的主要目的在于提供一种可靠消息传输方法,其基于消息队列机制传输消息,确保数据在不稳定的数据线路上传送时不会丢失或重复。为达到上述目的,本发明的技术方案具体是这样实现的一种可靠消息传输方法,用于分布式信息系统中分部向总部的消息传输,其中每个分部和总部均包括业务服务器、服务总线和消息队列管理器,该方法包括分部的业务服务器将消息发送到分部的服务总线;分部的服务总线将所述消息发送到分部的消息队列管理器;分部的消息队列管理器将所述消息发送到总部的消息队列管理器;总部的消息队列管理器将所述消息发送到总部的服务总线;总部的服务总线将所述消息发送到总部的业务服务器。优选地,该方法进一步包括在分部的消息队列管理器将所述消息发送到总部的消息队列管理器之前,分部的消息队列管理器建立与总部的消息队列管理器的长连接。优选地,该方法进一步包括分部的消息队列管理器和总部的消息队列管理器之间定期互发心跳包。优选地,该方法进一步包括在分部的消息队列管理器未按时接收到来自总部的消息队列管理器的心跳包时,分部的消息队列管理器重建与总部的消息队列管理器的长连接。优选地,该方法进一步包括在总部的消息队列管理器接收到所述消息时,总部的消息队列管理器向分部的消息队列管理器返回确认;并且分部的消息队列管理器在未接收到确认的情况下,在一时段之后向总部的消息队列管理器重发该消息。优选地,所述时段为10分钟。本发明还提供了一种可靠消息传输方法,用于分布式信息系统中总部向分部的消息传输,其中每个分部和总部均包括业务服务器、服务总线和消息队列管理器,该方法包括总部的业务服务器将消息发送到总部的服务总线;总部的服务总线将所述消息发送到总部的消息队列管理器;总部的服务总线将所述消息发送到分部的消息队列管理器;分部的消息队列管理器将所述消息发送到分部的服务总线;分部的服务总线将所述消息发送到分部的业务服务器。优选地,该方法进一步包括在总部的消息队列管理器将所述消息发送到分部的消息队列管理器之前,总部的消息队列管理器建立与分部的消息队列管理器的长连接。优选地,该方法进一步包括总部的消息队列管理器和分部的消息队列管理器之间定期互发心跳包。优选地,该方法进一步包括在总部的消息队列管理器未按时接收到来自分部的消息队列管理器的心跳包时或者有消息要发送时,总部的消息队列管理器重建与分部的消息队列管理器的长连接。优选地,该方法进一步包括在分部的消息队列管理器接收到所述消息时,分部的消息队列管理器向总部的消息队列管理器返回确认;并且总部的消息队列管理器在未接收到确认的情况下,在一时段之后向分部的消息队列管理器重发该消息。优选地,所述时段为10分钟。本发明还提供了一种可靠消息传输方法,用于分布式信息系统中第一分部经总部向第二分部的消息传输,其中总部、第一分部和第二分部均包括业务服务器、服务总线和消息队列管理器,该方法包括第一分部的业务服务器将消息发送到第一分部的服务总线; 第一分部的服务总线将所述消息发送到第一分部的消息队列管理器;第一分部的消息队列管理器将所述消息发送到总部的消息队列管理器;总部的消息队列管理器将所述消息发送到第二分部的消息队列管理器;第二分部的消息队列管理器将所述消息发送到第二分部的服务总线;第二分部的服务总线将所述消息发送到第二分部的业务服务器。优选地,该方法进一步包括在第一分部的消息队列管理器将所述消息发送到总部的消息队列管理器之前,第一分部的消息队列管理器建立与总部的消息队列管理器的长连接。优选地,该方法进一步包括第一分部的消息队列管理器和第二分部的消息队列管理器之间定期互发心跳包。优选地,该方法进一步包括在第一分部的消息队列管理器未按时接收到来自总部的消息队列管理器的心跳包时或者有消息要发送时,第一分部的消息队列管理器重建与总部的消息队列管理器的长连接。优选地,该方法进一步包括在总部的消息队列管理器将所述消息发送到第二分部的消息队列管理器之前,总部的消息队列管理器建立与第二分部的消息队列管理器的长连接。优选地,该方法进一步包括总部的消息队列管理器和第二分部的消息队列管理器之间定期互发心跳包。优选地,该方法进一步包括在总部的消息队列管理器未按时接收到来自第二分部的消息队列管理器的心跳包时或者有消息要发送时,总部的消息队列管理器重建与第二分部的消息队列管理器的长连接。优选地,该方法进一步包括在总部的消息队列管理器接收到所述消息时,总部的消息队列管理器向第一分部的消息队列管理器返回确认;并且第一分部的消息队列管理器在未接收到确认的情况下,在一时段之后向总部的消息队列管理器重发该消息。优选地,该方法进一步包括在第二分部的消息队列管理器接收到所述消息时,第二分部的消息队列管理器向总部的消息队列管理器返回确认;并且总部的消息队列管理器在未接收到确认的情况下,在一时段之后向第二分部的消息队列管理器重发该消息。优选地,所述时段为10分钟。本发明提供的上述技术方案,主要应用于两级分布式部署模式下的总部端到分部端的消息传输、分部端到总部端的消息传输以及不同的分部端之间的消息传输。在消息传输中,发送方和接收方可以通过服务总线进行寻址和格式转换,由于采用了消息队列机制, 发送方和接收方无需同时连接,并且即使发送方和接收方之间的通信不是同时发生的,也会有极强的请求和回答传送保障,确保信息系统间数据传输的有效性,避免由于网络不稳定等原因造成传输过程的数据丢失,确保业务数据的准确、有效、权威。


下面参照附图描述本发明的优选实施例,在附图中图1是现有技术中的消息传输流程。图2是本发明提供的分部端到总部端的消息传输流程。图3是本发明提供的消息传输流程中跨节点发送消息的具体步骤。图4是本发明提供的总部端到分部端的消息传输流程。图5是本发明提供的不同分部端之间的消息传输流程。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。另外,可以通过存储了多种数据结构的多种计算机可读介质执行这些模块。这些模块可以通过信号利用本地和/或远程进程进行通信。本发明的具体思想是采用基于消息队列的消息传输架构,以确保数据在不稳定的数据线路上传输时不会丢失或重复。本发明所采用的分布式信息系统划分为总部端和多个分部端,两端之间为上下级网络拓扑结构。受实际应用环境网络拓扑结构限制以及安装部署配置方面的考虑,通过服务总线进行跨分部的消息流转采用星型结构。下面首先描述从分部1端向总部传输消息的流程。如图2所示,分布式信息系统的总部和分部均包括业务服务器、服务总线和消息队列管理器,总部还包括中心机日志库,用于记录上下级之间传输的关键消息。分部1端向总部的传输流程为分部1端的业务服务器将消息发送到分部1端的服务总线,分部1端的服务总线将所述消息发送到分部1端的消息队列管理器,分部1端的消息队列管理器将所述消息发送到总部的消息队列管理器, 总部的消息队列管理器将所述消息发送到总部的服务总线,总部的服务总线将所述消息发送到总部的业务服务器。可以看出,通过采用消息队列机制,确保了分部1端到总部的数据传输的可靠性。下面描述在上述的消息传输流程中发送消息的具体步骤。在准备从分部1端向总部传输消息之前,分部1端的消息队列管理器可以实时与总部消息队列管理器间进行长连接,保持连接通道开启,定时发送心跳包。如图3所示,发送消息的具体步骤如下步骤301 分部1端的服务总线对分部1端的业务服务器进行监听。步骤302 分部1端的服务总线判断分部1端的业务服务器是否有数据要发送; 如果判断有数据要发送,则转向步骤303;如果判断无数据要发送,则转向步骤301,继续监听。步骤303 分部1端的服务总线将分部1端的业务服务器要发送的消息发送到分部1端的消息队列管理器。步骤304 分部1端的消息队列管理器等待接收总部的消息队列管理器关于上述消息的确认;如果接收到确认(ACK),则转向步骤302,判断分部1端的业务服务器是否还有新数据要发送;如果未接收到确认,则转向步骤305。步骤305 分部1端的消息队列管理器判断网络连接是否正常,该判断是通过分部1端的消息队列管理器检查自己是否按时接收到来自总部的消息队列管理器的心跳包来实现的。即,如果分部1端的消息队列管理器按时接收到心跳包,则判断网络连接正常,则转向步骤306 ;如果分部1端的消息队列管理器未按时接收到心跳包,则判断连接通道或总部出现故障,转向步骤307。步骤306 分部1端的消息队列管理器重发该消息。例如,该步骤可以在步骤305 执行一定时间(例如,10分钟)之后执行。并且在执行该步骤306之后,自动转向步骤304。步骤307 分部1端的消息队列管理器重新建立与总部的消息队列管理器的长连接。并且在执行该步骤307之后,自动转向步骤306。其中,在步骤307中,在重建长连接失败的情况下,表明网络故障仍未排除,可以每隔十分钟再次尝试重建长连接,也可以在又有新消息要发送时,尝试重建长连接。如通道一直未连通,则消息会一直等待,直到通道连接成功后发送,以此保证网络的畅通和消息的及时性。下面描述从总部向分部1端传输消息的流程。如图4所示,分布式信息系统的总部和分部均包括业务服务器、服务总线和消息队列管理器,总部还包括中心机日志库,用于记录上下级之间传输的关键消息。总部向分部1端的传输流程为总部的业务服务器将消息发送到总部的服务总线;总部的服务总线将所述消息发送到总部的消息队列管理器;总部的消息队列管理器将所述消息发送到分部1端的消息队列管理器;分部1端的消息队列管理器将所述消息发送到分部1端的服务总线;分部1端的服务总线将所述消息发送到分部1端的业务服务器。如上所述,通过采用消息队列机制,确保了总部到分部1端的数据传输的可靠性。如上所述的分部1端到总部的消息传输类似,在准备从总部向分部1端传输消息之前,总部的消息队列管理器可以实时与分部的消息队列管理器间进行长连接,保持连接通道开启,定时发送心跳包。下面描述在总部到分部1端的消息传输流程中发送消息的具体步骤(其与以上参照图3所描述的步骤相似,区别仅仅是执行步骤的主体和执行步骤的对象有所不同)步骤301 总部的服务总线对总部的业务服务器进行监听。步骤302 总部的服务总线判断总部的业务服务器是否有数据要发送;如果判断有数据要发送,则转向步骤303;如果判断无数据要发送,则转向步骤301,继续监听。步骤303 总部的服务总线将总部的业务服务器要发送的消息发送到总部的消息队列管理器。步骤304 总部的消息队列管理器等待接收分部1端的消息队列管理器关于上述消息的确认;如果接收到确认(ACK),则转向步骤302,判断总部的业务服务器是否还有新数据要发送;如果未接收到确认,则转向步骤305。步骤305 总部的消息队列管理器判断网络连接是否正常,该判断是通过总部的消息队列管理器检查自己是否按时接收到来自分部1端的消息队列管理器的心跳包来实现的。S卩,如果总部的消息队列管理器按时接收到心跳包,则判断网络连接正常,则转向步骤6);如果总部的消息队列管理器未按时接收到心跳包,则判断连接通道或总部出现故障,转向步骤7)。步骤306 总部的消息队列管理器重发该消息。例如,该步骤可以在步骤305执行一定时间(例如,10分钟)之后执行。并且在执行该步骤306之后,自动转向步骤304。步骤307 总部的消息队列管理器重新建立与分部1端的消息队列管理器的长连接。并且在执行该步骤307之后,自动转向步骤306。其中,在步骤307中,在重建长连接失败的情况下,表明网络故障仍未排除,可以每隔十分钟再次尝试重建长连接,也可以在又有新消息要发送时,尝试重建长连接。如通道一直未连通,则消息会一直等待,直到通道连接成功后发送,以此保证网络的畅通和消息的及时性。下面描述从分部1端向分部2端传输消息的流程。如图5所示,分布式信息系统的总部和分部均包括业务服务器、服务总线和消息队列管理器,总部还包括中心机日志库, 用于记录上下级之间传输的关键消息。分布式信息系统的分部1端向分部2端的消息传输流程为分部1端的业务服务器将消息发送到分部1端的服务总线;分部1端的服务总线将所述消息发送到总部的消息队列管理器;总部的消息队列管理器将所述消息发送到分部 2端的消息队列管理器;分部2端的消息队列管理器将所述消息发送到分部2端的服务总线;分部2端的服务总线将所述消息发送到分部2端的业务服务器。如上所述,通过采用消息队列机制,确保了两个分部之间的数据传输的可靠性。如上所述的分部到总部以及总部到分部的消息传输类似,在准备从分部1端向分部2端传输消息之前,分部1端的消息队列管理器可以实时与总部的消息队列管理器间进行长连接,保持连接通道开启,定时发送心跳包;总部的消息队列管理器可以实时与分部2 端的消息队列管理器间进行长连接,保持连接通道开启,定时发送心跳包。下面描述在分部1端到分部2端的消息传输流程中发送消息的具体步骤(其与以上参照图5所描述的步骤一致)步骤301 分部1端的服务总线对分部1端的业务服务器进行监听。步骤302 分部1端的服务总线判断分部1端的业务服务器是否有数据要发送; 如果判断有数据要发送,则转向步骤303;如果判断无数据要发送,则转向步骤301,继续监听。步骤303 分部1端的服务总线将分部1端的业务服务器要发送的消息发送到分部1端的消息队列管理器。步骤304 分部1端的消息队列管理器等待接收总部的消息队列管理器关于上述消息的确认;如果接收到确认(ACK),则转向步骤302,判断分部1端的业务服务器是否还有新数据要发送;如果未接收到确认,则转向步骤305。步骤305 分部1端的消息队列管理器判断网络连接是否正常,该判断是通过分部 1端的消息队列管理器检查自己是否按时接收到来自总部的消息队列管理器的心跳包来实现的。即,如果分部1端的消息队列管理器按时接收到心跳包,则判断网络连接正常,则转向步骤306 ;如果分部1端的消息队列管理器未按时接收到心跳包,则判断连接通道或总部端出现故障,转向步骤307。步骤306 分部1端的消息队列管理器重发该消息。例如,该步骤可以在步骤305 执行一定时间(例如,10分钟)之后执行。并且在执行该步骤306之后,自动转向步骤304。步骤307 分部1端的消息队列管理器重新建立与总部端的消息队列管理器的长连接。并且在执行该步骤307之后,自动转向步骤306。
其中,在步骤307中,在重建长连接失败的情况下,表明网络故障仍未排除,可以每隔十分钟再次尝试重建长连接,也可以在又有新消息要发送时,尝试重建长连接。如通道一直未连通,则消息会一直等待,直到通道连接成功后发送,以此保证网络的畅通和消息的及时性。总部端再以类似上述总部到分部1端的所述消息发送步骤将消息发送到分部2 端,从而实现所述分部1端到分部2端的消息传输。虽然这里参照特定的实施例描述了本发明,但是需要明白的是,这些实施例是示例性的,并且,本发明的范围并不限于这些实施例。对上面所描述的实施例的很多变形、修改、增加和改进都是可能的。可以预料到,这些变形、修改、增加和改进都落入权利要求所限定的保护范围。
权利要求
1.一种可靠消息传输方法,用于分布式信息系统中分部向总部的消息传输,其中每个分部和总部均包括业务服务器、服务总线和消息队列管理器,该方法包括分部的业务服务器将消息发送到分部的服务总线; 分部的服务总线将消息发送到分部的消息队列管理器; 分部的消息队列管理器将所述消息发送到总部的消息队列管理器; 总部的消息队列管理器将所述消息发送到总部的服务总线; 总部的服务总线将所述消息发送到总部的业务服务器。
2.如权利要求1所述的方法,进一步包括在分部的消息队列管理器将所述消息发送到总部的消息队列管理器之前,分部的消息队列管理器建立与总部的消息队列管理器的长连接;分部的消息队列管理器和总部的消息队列管理器之间定期互发心跳包; 在分部的消息队列管理器未按时接收到来自总部的消息队列管理器的心跳包时,分部的消息队列管理器重建与总部的消息队列管理器的长连接。
3.如权利要求1所述的方法,进一步包括在总部的消息队列管理器接收到所述消息时,总部的消息队列管理器向分部的消息队列管理器返回确认;并且分部的消息队列管理器在未接收到确认的情况下,在一时段之后向总部的消息队列管理器重发该消息。
4.如权利要求3所述的方法,其中,所述时段为10分钟。
5.一种可靠消息传输方法,用于分布式信息系统中总部向分部的消息传输,其中每个分部和总部均包括业务服务器、服务总线和消息队列管理器,该方法包括总部的业务服务器将消息发送到总部的服务总线; 总部的服务总线将所述消息发送到总部的消息队列管理器; 总部的消息队列管理器负责将所述消息发送到分部的消息队列管理器; 分部的消息队列管理器将所述消息发送到分部的服务总线; 分部的服务总线将所述消息发送到分部的业务服务器。
6.如权利要求5所述的方法,进一步包括在总部的消息队列管理器将所述消息发送到分部的消息队列管理器之前,总部的消息队列管理器建立与分部的消息队列管理器的长连接;总部的消息队列管理器和分部的消息队列管理器之间定期互发心跳包; 在总部的消息队列管理器未按时接收到来自分部的消息队列管理器的心跳包时或者有消息要发送时,总部的消息队列管理器重建与分部的消息队列管理器的长连接。
7.如权利要求5所述的方法,进一步包括在分部的消息队列管理器接收到所述消息时,分部的消息队列管理器向总部的消息队列管理器返回确认;并且总部的消息队列管理器在未接收到确认的情况下,在一时段之后向分部的消息队列管理器重发该消息。
8.如权利要求7所述的方法,其中,所述时段为10分钟。
9.一种可靠消息传输方法,用于分布式信息系统中第一分部经总部向第二分部的消息传输,其中总部、第一分部和第二分部均包括业务服务器、服务总线和消息队列管理器,该方法包括第一分部的业务服务器将消息发送到第一分部的服务总线; 第一分部的服务总线将所述消息发送到第一分部的消息队列管理器; 第一分部的消息队列管理器将所述消息发送到总部的消息队列管理器; 总部的消息队列管理器将所述消息发送到第二分部的消息队列管理器; 第二分部的消息队列管理器将所述消息发送到第二分部的服务总线; 第二分部的服务总线将所述消息发送到第二分部的业务服务器。
10.如权利要求9所述的方法,进一步包括在第一分部的消息队列管理器将所述消息发送到总部的消息队列管理器之前,第一分部的消息队列管理器建立与总部的消息队列管理器的长连接;第一分部的消息队列管理器和总部的消息队列管理器之间定期互发心跳包; 在第一分部的消息队列管理器未按时接收到来自总部的消息队列管理器的心跳包时或者有消息要发送时,第一分部的消息队列管理器重建与总部的消息队列管理器的长连接;在总部的消息队列管理器将所述消息发送到第二分部的消息队列管理器之前,总部的消息队列管理器建立与第二分部的消息队列管理器的长连接;总部的消息队列管理器和第二分部的消息队列管理器之间定期互发心跳包; 在总部的消息队列管理器未按时接收到来自第二分部的消息队列管理器的心跳包时或者有消息要发送时,总部的消息队列管理器重建与第二分部的消息队列管理器的长连接。
11.如权利要求9所述的方法,进一步包括在总部的消息队列管理器接收到所述消息时,总部的消息队列管理器向第一分部的消息队列管理器返回确认;第一分部的消息队列管理器在未接收到确认的情况下,在一时段之后向总部的消息队列管理器重发该消息;在第二分部的消息队列管理器接收到所述消息时,第二分部的消息队列管理器向总部的消息队列管理器返回确认;并且总部的消息队列管理器在未接收到确认的情况下,在一时段之后向第二分部的消息队列管理器重发该消息。
12.如权利要求11所述的方法,其中,所述时段为10分钟。
全文摘要
本发明涉及一种分布式信息系统的可靠消息传输方法,主要应用于两级分布式部署模式下的总部端到分部端的消息传输、分部端到总部端的消息传输以及不同的分部端之间的消息传输。分部到总部的消息传输流程为分部的业务服务器将消息发送给分部的服务总线;分部的服务总线将消息发送到分部的消息队列管理器;分部的消息队列管理器将所述消息发送到总部的消息队列管理器;总部的消息队列管理器将所述消息发送到总部的服务总线;总部的服务总线将所述消息发送到总部的业务服务器。通过基于消息队列机制传输消息,确保数据在不稳定的数据线路上传送时不会丢失或重复。
文档编号H04L12/58GK102571933SQ20111043636
公开日2012年7月11日 申请日期2011年12月22日 优先权日2011年12月22日
发明者刘玉龙, 史劲, 吴卫荣, 孟增辉, 宋永华, 徐乃松, 徐华, 赵伟, 郑扬飞, 郭红钰 申请人:中国电子科技集团公司第十五研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1