企业消息传送

企业消息传送并不是什么新概念。消息传送产品,比如:IBM WebSphere MQ、SonieMQ、MSMQ等,已经存在很多年。ActiveMQ等几种开源消息传送产品也已经进入市场,并且正在企业生产环境中使用。此外,面向服务体系结构(SOA)的推出,已经促生了称为企业服务总线(ESB)的新型消息传送产品。尽管大多数企业服务总线允许使用基于HTTP的通信,基于消息传送的系统则仍继续保持了在大多数生产企业系统当中的标准地位。

企业消息传送的一个关键概念就是:消息是通过网络从一个系统异步传送给其它系统的。异步传送一条消息意味着:发送者不需要等待接收者接收或处理该消息;它可以自由地发送消息并持续进行处理。异步消息可作为独立的自主单元,也就是说,每条消息都是自包含的,它带有处理其业务逻辑所需的所有数据和状态信息。

在异步消息传送机制中,应用程序使用一个简单的API来构建一条消息,然后再将该消息转发给面向消息的中间件,以便传送给一个或多个的预定接收者。一条消息就是一个业务数据包,它通过网络从一个应用程序发送给其他应用程序。消息应该是自描述的,因为它应该包含所有必要的上下文,以便允许接收者独立地完成它们的工作。

现在面向消息的中间件体系结构在其实现方面,范围从依赖消息服务器来执行路由选择的集中式体系结构,一直到将“服务器”处理分发给客户端的分散式体系结构,形式可以说是多种多样。在网络传输层,它使用了包括TCP/IP、HTTP、SSL和IP组播在内的众多协议。

集中式体系结构

使用集中式体系结构的企业消息传送系统,依赖于一台消息服务器。消息服务器,也称为消息路由器(message router)或代理(broker),它负责从一个消息传送客户端向其它消息传送客户端传送消息。消息服务器可以实现一个发送客户端和其它接收客户端之间的去耦。客户端仅仅会看到消息传送服务器,而不会看到其他客户端,这将允许在不会影响系统整体的情况下添加和删除客户端。通常,集中式体系结构使用的是一种星型拓扑结构。最简单的例子就是,只有一台集中式消息服务器及其相连的所有客户端,如图:

企业消息传送_第1张图片

分散式体系结构

当前,所有的分散式体系结构都在使用网络层IP组播。基于组播的消息传送系统没有集中式服务器。一些服务器功能(持久性、事务和安全性)作为一个客户端的本地部分嵌入进来,而此时消息路由则利用IP组播协议委托给网络层。

IP组播允许应用程序加入到一个或多个IP组播组之中;每个组播组使用一个IP网络地址,它将接收到的所有消息重新发布给组内的所有成员。这样,应用程序就能够向一个IP组播地址发送消息并期望网络层正确地重新发布这些消息。与集中式体系结构不同,分布式体系结构不需要用于消息路由的服务器,因为网络会自动地处理路由。然而,每个客户端仍然需要具有像服务器那样的其它功能,比如说消息持久性和“一次而且仅仅一次”传送之类的消息传送语义等。分散式IP组播体系结构如下图:

企业消息传送_第2张图片

混合体系结构

一个分散式体系结构通常意味着正在使用IP组播协议,而一个集中式体系结构则意味着TCP/IP在不同组件之间实现通信的基础。一个消息传送系统厂商的体系结构还可能会将这两种方法结合起来。客户端可以使用TCP/IP连接到一个守护进程,它使用IP组播依次和其他守护进程实现通信。


你可能感兴趣的:(jms)