一种网络通信中间件实现方法
【专利摘要】本发明属于网络通信领域,涉及一种网络通信中间件实现方法。所述方法包括:设计通信协议、规范、接口;构建应用程序通信模式;确定消息传递模式:点-点(P2P)或发布/订阅(Pub/Sub);构建通信中间件,实现通信中间件消息传递;设置通信中间件服务运行配置文件;管理通信中间件日志;连接通信中间件服务,向通信中间件发送消息和从通信中间件获取消息。本发明针对厂商通信产品没有统一的标准,无法实现无缝的交互操作等问题,通过集成多种通用协议,使本发明所述方法具有良好的通用性,能够实现各种异构对象之间的网络通信,降低了不同产品间通信的复杂性,有效降低了计算环境的异构性、复杂性。
【专利说明】一种网络通信中间件实现方法
【技术领域】
[0001]本发明属于网络通信领域,特别涉及一种以通信中间件形式实现复杂网络环境下通信的方法。
【背景技术】
[0002]随着网络技术飞速发展,网络的带宽和质量得到了极大地提高,独立部署的系统通过网络建立彼此间的联系,加上企业应用对网络融合、数据挖掘、经营分析的需要,促使独立系统之间的交互越来越多。企业的计算环境从传统的集中式变成了分布式。在分布式环境下,系统的异构性、网络的带宽、连接的稳定性最终影响着服务质量。为满足分布式计算环境下企业应用对性能、安全性、稳定性等方面的要求,构建基于消息中间件的数据通信系统,实现异步传递消息,将彼此独立的计算机连接起来组成松耦合的系统,可以有效地屏蔽异构细节,对外提供统一服务。作为解决异构系统通信和排队问题的有效手段,通信中间件目前还存在以下不足:
[0003](1)不同厂商通信产品没有统一的标准;
[0004](2)无法实现无缝的交互操作;
[0005](3)增加了计算环境新的异构性和复杂性。
【发明内容】
[0006]为了解决上述问题,本发明提出一种网络通信中间件实现方式,实现了 P2P(Peerto Peer,点到点)和Pub-and-Sub两种消息交换模式,实现了消息目的地、消息制造者和消息消费者等,实现了持久化和非持久化的消息传递、同步和异步的消息接收、名字服务、事件监听机制以及多线程并发管理。
[0007]通信中间件是一种独立的系统软件或服务程序,分布式应用软件借助通信中间件在不同的技术之间共享资源,通信中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
[0008]通信中间件提供以松散耦合的方式集成应用程序的一种机制,通过消息传递和消息排队的模型,实现基于存储和转发的应用程序之间的异步数据发送,支持多种通讯协议、语言、应用程序、软硬件平台。应用程序之间不直接通信,而是与作为中介的通信中间件通信,从而提供了有保证的消息发送。
[0009]一种网络通信中间件实现方法包括如下骤:
[0010]步骤1:设计通信协议、规范、接口。
[0011]步骤2:构建应用程序通信模式。
[0012]步骤3:确定消息传递模式:点-点(P2P)或发布/订阅(Pub/Sub)。
[0013]步骤4:构建通信中间件,实现通信中间件消息传递。
[0014]步骤5:设置通信中间件服务运行配置文件。
[0015]步骤6:管理通信中间件日志。
[0016]步骤7:连接通信中间件服务,向通信中间件发送消息和从通信中间件获取消息。
[0017]与现有技术相比,本发明具有以下优点:
[0018]通过集成多种通用协议,使本发明所述方法具有良好的通用性,能够实现各种异构对象之间的网络通信,降低了不同产品间通信的复杂性,有效降低了计算环境的异构性、复杂性。
【专利附图】
【附图说明】
[0019]图1为本发明所述方法流程图;
[0020]图2为本发明实施例通信中间件的组成框图;
[0021]图3为本发明实施例通信流程图。
【具体实施方式】
[0022]下面对优选实施例作详细说明,应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
[0023]网络通信中间件实现方法的流程如图1所示,具体包括以下步骤:
[0024]步骤1:设计通信协议、规范、接口。
[0025]主要是梳理归纳当前应用系统之间的通信所用全部协议,对其进行归纳总结。通用的通信协议有:TCP,UDP, SNMP, Syslog, WebService, HTTP 等;
[0026]规范通信内容,做到上下文消息的一致;
[0027]确定通信实现接口的规则,获取连接、关闭连接,发布消息、获取消息等接口,具备统一调用模式。
[0028]步骤2:构建应用程序通信模式,主要包括请求-响应实时型和提交-处理非实时型两种模式。
[0029]步骤3:确定消息传递模式为点-点(P2P)或发布/订阅(Pub/Sub)。
[0030]将请求-响应归纳为点到点的模型(P2P)。点到点模式实现了一对一的消息交换。允许消息生产者和消息消费者采用同步或异步的方式进行消息交换。消息由一个客户机(发布者)发送到服务器上的一个目的地,即一个队列;而另一个客户机(订阅者)则可以访问这个队列,并从该服务器获取这条消息。作为消息目的地的队列遵守先进先出规则,队列把消息按照发送的顺序保存在队列中,并按顺序发送给消息接收者。所有消息都被发送到一个特定的队列,它们在这里保持到超时时间限制或由接收者处理。发送者无需知道接收者,接收者也无需知道消息是在何时何处产生。发送者和接收者可以在运行时动态地增加到消息队列中。
[0031]P2P方式有以下特点:
[0032](1)每一个消息只有一个使用者,但一个队列可能会附带有多个消费者,多个制造者可以向相同的队列发送消息;
[0033](2) 一个消息的发送者和接收者没有时间上的依赖关系,为了发送者和接收者同时工作,唯一需要运行的就是消息队列,客户机(制造者和消费者)不需要同时运行;
[0034](3)接收者完成对消息处理后,发出确认,消费者确认了一次接收以后,相应的消息就会被从队列中删除。
[0035]将提交-处理归纳为发布/订阅模型(Pub/Sub)。发布/订阅模型实现了一对多的消息交换。由一个客户机将一条消息发布到服务器上的一个目的地(主题)上,可有多个订阅者访问该消息。消息将一直维持在主题中,直到这个主题的所有订阅者都取走了该消息的一个副本。消息也包括了一个参数,用于定义了该消息的耐久性(它能够在服务器上等待订阅者多长时间)。
[0036]步骤4:构建通信中间件,实现通信中间件消息传递。
[0037]如图2 所不,通信中间件由 JNDIServer (Java Naming and Directory InterfaceServer, Java名录访问接口服务器)和MSServer (Message Sending Server,消息发送服务器)两个主体部分组成。JNDIServer负责根据底层的通讯协议将名字服务与端口绑定,为通信中间件的消息分发提供基础服务。MSServer是通信中间件的核心部分,负责与客户端以及其它MSServer的通讯,同时对消息进行持久化和事务管理。
[0038]MSServer 由 Channel (管道),Notificat1n (通知),AgentFactory (代理工厂),AgentProxy (代理网关),Engine (引擎)等主要部分组成。Channel用于通信中间件服务器内部交换数据,是预先建立并定时检测的。Notificat1n是通信中间件内部进行信息通知的基本形式,依赖Channel进行传递。AgentFactory负责管理维护通过通信中间件进行通讯的分布式对象。AgentProxy负责通信中间件内部的消息路由。Engine是一个多线程管理服务,提供对Agent的多线程编程。
[0039]实现通信中间件消息传递的方法如下:
[0040]步骤4.1:通信中间件从配置文件中读取相关配置信息并启动服务,JNDIServer根据底层的通讯协议,把名字服务绑定到指定端口。
[0041]步骤4.2:客户端通过指定的通讯协议访问系统的JNDI服务器,获得上下文对象,进而访问网络通信中间件的名字服务。
[0042]步骤4.3:客户端通过调用 API (Applicat1n Programming Interface,应用程序编程接口)与通信中间件进行交互。
[0043]步骤4.4:MSServer监听指定端口,并与客户端通讯,进行消息的接收、存储和转发,最终通信中间件实现对各类异构应用系统之间消息的传递。
[0044]步骤5:设定通信中间件服务运行配置文件。
[0045]在通信中间件中,所有配置被写入XML文件,提升服务器定制提的灵活性。
[0046]步骤6:管理通信中间件日志。
[0047]日志是通信中间件中不可或缺的组成部分,可以记录服务器接收处理请求以及运行错误等各种原始信息。通过对日志的分析,能够有效地掌握通信中间件的运行状况,发现和排除故障,加强通信中间件的维护和管理。
[0048]步骤7:连接通信中间件服务,向通信中间件发送消息、从通信中间件获取消息。
[0049]如图3所示,每一次消息的发布都需要与通信中间件建立连接,通过连接工厂可以快捷地建立消息连接。
[0050]同理,每次获取消息,也需先连接通信中间件。
【权利要求】
1.一种网络通信中间件实现方法,其特征在于包括以下步骤: 步骤1:设计通信协议、规范、接口 ; 梳理归纳当前应用系统之间的通信所用全部协议,对其进行归纳总结;通用的通信协议包括:TCP, UDP,SNMP, Syslog, WebService, HTTP ; 规范通信内容,做到上下文消息的一致; 确定通信实现接口的规则,获取连接、关闭连接,发布消息、获取消息接口,具备统一调用模式; 步骤2:构建应用程序通信模式; 步骤3:确定消息传递模式; 步骤4:构建通信中间件,实现通信中间件消息传递; 步骤5:设定通信中间件服务运行配置文件; 步骤6:管理通信中间件日志; 通过对日志的分析掌握通信中间件的运行状况,发现和排除故障,加强通信中间件的维护和管理; 步骤7:连接通信中间件服务,向通信中间件发送消息、从通信中间件获取消息; 每一次消息的发布都与通信中间件建立连接,通过连接工厂快捷地建立消息连接;每次获取消息,先连接通信中间件。
2.根据权利要求1所述的一种网络通信中间件实现方法,其特征在于,步骤2所述通信模式包括请求-响应实时型和提交-处理非实时型两种模式。
3.根据权利要求1所述的一种网络通信中间件实现方法,其特征在于,步骤3所述消息传递模式为点-点或发布/订阅模式:将请求-响应归纳为点-点模式;将提交-处理归纳为发布/订阅模式。
4.根据权利要求3所述的一种网络通信中间件实现方法,其特征在于,所述点-点模式实现一对一的消息交换;允许消息生产者和消息消费者采用同步或异步的方式进行消息交换;消息由一个客户机即发布者发送到服务器上的一个目的地,即一个队列;而另一个客户机即订阅者则可以访问这个队列,并从该服务器获取这条消息;作为消息目的地的队列遵守先进先出规则,队列把消息按照发送的顺序保存在队列中,并按顺序发送给消息接收者;所有消息都被发送到一个特定的队列,它们在这里保持到超时时间限制或由接收者处理;发送者无需知道接收者,接收者也无需知道消息是在何时何处产生;发送者和接收者可以在运行时动态地增加到消息队列中;所述发布/订阅模式实现一对多的消息交换;由一个客户机将一条消息发布到服务器上的一个目的地即主题上,有多个订阅者访问该消息;消息将一直维持在主题中,直到这个主题的所有订阅者都取走了该消息的一个副本;消息也包括了一个参数,用于定义了该消息的耐久性,即它能够在服务器上等待订阅者的时间。
5.根据权利要求1所述的一种网络通信中间件实现方法,其特征在于,步骤4所述通信中间件包括Java名录访问接口服务器JNDIServer和消息发送服务器JNDIServer根据底层的通讯协议将名字服务与端口绑定,为通信中间件的消息分发提供基础服务;MSServer是通信中间件的核心部分,负责与客户端以及其它MSServer的通讯,同时对消息进行持久化和事务管理;MSServe包括:管道Channel,通知Notificat1n,代理工厂AgentFactory,代理网关AgentProxy,引擎Engine ;ChanneI用于通信中间件服务器内部交换数据,是预先建立并定时检测的Notificat1n是通信中间件内部进行信息通知的基本形式,依赖Channel进行传递;AgentFactory负责管理维护通过通信中间件进行通讯的分布式对象;AgentProxy负责通信中间件内部的消息路由;Engine是一个多线程管理服务,提供对Agent的多线程编程。
6.根据权利要求1或5所述的一种网络通信中间件实现方法,其特征在于,步骤4所述实现通信中间件消息传递的方法如下: 步骤4.1:通信中间件从配置文件中读取相关配置信息并启动服务,JNDIServer根据底层的通讯协议,把名字服务绑定到指定端口 ; 步骤4.2:客户端通过指定的通讯协议访问系统的JNDI服务器,获得上下文对象,进而访问网络通信中间件的名字服务; 步骤4.3:客户端通过调用应用程序编程接口 API与通信中间件进行交互; 步骤4.4 =MSServer监听指定端口,并与客户端通讯,进行消息的接收、存储和转发,最终通信中间件实现对各类异构应用系统之间消息的传递。
7.根据权利要求1所述的一种网络通信中间件实现方法,其特征在于,步骤5所述配置文件为XML文件。
【文档编号】H04L29/08GK104363291SQ201410664514
【公开日】2015年2月18日 申请日期:2014年11月19日 优先权日:2014年11月19日
【发明者】沈艳林, 石波, 胡佳, 郭江, 郭小明, 胡大正, 吴朝雄, 沈德峰 申请人:中国航天科工集团第二研究院七〇六所