开yun体育官网入口登录体育 面向消息的中间件 (Message-Oriented Middleware, MOM)

面向消息的中间件 (MOM)

由于业务、组织和技术不断变化,为它们服务的软件系统必须适应这些变化。公司可能无法承担合并、添加服务或扩展可用服务后重新创建信息系统的成本。正是在这个关键时刻,需要尽可能有效地集成新组件或扩展现有组件。要集成异构组件,最方便的方法不是将它们重新创建为同质元素,而是提供一个允许它们进行通信的层,而不管它们之间的差异。这一层称为中间件,它允许独立开发并运行在不同网络平台上的软件组件(应用程序、Enterprise Java Beans、Servlet 和其他组件)相互交互。当这种交互成为可能时,网络就变成了计算机。

如图所示,从概念上讲,中间件位于应用层和平台层(操作系统和底层网络服务)之间。

图 1–1 中间件

该图显示能够通过中间件进行通信的应用程序和组件。该图用文本进行说明。

分布在不同网络节点上的应用程序使用应用程序编程接口进行通信,而无需担心托管其他应用程序的操作环境或将它们连接到这些应用程序的服务的详细信息。此外,通过提供管理接口,这个新的互连应用程序虚拟系统可以变得安全可靠。性能可以测量和调整,并且可以在不丢失任何功能的情况下进行扩展。

中间件可以分为以下几类:

所有这些模型都使一个软件组件能够通过网络影响另一组件的行为。不同之处在于,基于 RPC 和 ORB 的中间件创建了一个紧密耦合组件的系统开yun体育app官方下载入口,而基于 MOM 的系统允许组件更加松散耦合。在基于 RPC 或 ORB 的系统中,当一个过程调用另一过程时,它必须等待调用过程返回才能执行其他操作。如前所述,在这些模型中,中间件部分充当超链接器开yun体育app入口登录,在网络上查找被调用的进程,使用网络服务将函数或方法参数传递给被调用的进程,然后返回搜索结果。 。

基于 MOM 的系统允许通过异步交换消息进行通信,如图所示。

图 1–2 基于 MOM 的系统

MOM 系统的元素:使用 API 借助于消息传送提供者交换消息的客户端。该图用文本进行说明。

面向消息的中间件使用消息传递提供程序来协调消息传递操作。 MOM 系统的基本元素是客户端、消息和 MOM 提供程序,其中包括 API 和管理工具。 MOM 提供商使用不同的体系结构来路由和传递消息:它可以使用集中式消息服务器,也可以在每个客户端上分配路由和传递功能。一些 MOM 产品结合了这两种方法。

使用 MOM 系统,客户端可以调用 API 来将消息发送到提供商管理的目的地。此调用调用提供者服务来路由和传递消息。发送消息后,客户端继续执行其他工作,并确信提供者保留该消息,直到接收客户端检索它。基于消息的模型与提供者协调相结合,使得创建松散耦合的组件系统成为可能。即使单个组件或连接发生故障,这样的系统也可以继续可靠地工作而无需停机。

让消息传递提供者协调客户端之间的消息传递的另一个优点是,通过添加管理界面,可以监视和调整性能。这样,客户端应用程序就不必担心发送、接收和处理消息之外的任何事情。互操作性、可靠性、安全性、可扩展性和性能等问题应由 MOM 系统编码管理员来解决。

到目前为止,我们已经介绍了使用面向消息的中间件连接分布式组件的许多优点。其缺点如下所述。一个缺点源于松散耦合本身。在RPC系统中,调用函数只有在被调用函数完成其任务后才能返回。在异步系统中,调用客户端继续为接收者加载工作,直到处理加载工作所需的资源耗尽并且被调用的组件发生故障。当然,您可以通过监视性能和调整消息流来最大程度地减少或避免这些情况,但对于 RPC 系统,您不必这样做。了解每个系统的优缺点很重要。每个系统都适合执行不同的任务。有时您需要将两个系统结合起来以获得您想要的行为。

展示 MOM 系统如何使两个基于 RPC 的系统能够进行通信。该图的左侧显示了一个应用程序,该应用程序将客户端、服务器和数据存储库组件分布在不同的网络节点上以提高性能。这是一个折扣航班预订系统:最终用户付费使用此服务,这使他们能够找到特定目的地和时间的最低票价。数据存储库保存有关参与此折扣计划的注册用户和航空公司的信息。服务器上的逻辑根据用户的请求在参与的航空公司中查找价格,对信息进行排序并向用户提供三个最低的报价。该图的右侧显示了一个基于 RPC 的系统,代表任何参与航空公司的机票/预订系统。该图的右侧将针对折扣系统连接的任意数量的航空公司进行复制。对于每个此类航空公司,数据存储库将保存有关可用航班的信息(座位、航班时间和价格)。服务器组件响应最终用户输入的数据来更新此信息。航空公司的服务器还订阅MOM服务开yun体育官网入口登录app,接收来自折扣预订系统的信息请求,并返回座位和价格信息。如果用户决定从 PanWorld Airlines 购买折扣机票,系统的服务器组件会更新数据存储库中的信息,并为请求者生成机票或向折扣服务发送消息以生成机票。

图 1–3 组合 RPC 和 MOM 系统

该图显示两个基于 RPC 的系统通过 MOM 系统进行通信。该图用文本进行说明。

此示例说明了 RPC 和 MOM 系统之间的一些差异。如前所述,差异之一是分布式组件的耦合方式。另一个区别是,RPC 系统通常用于分发和连接客户端和服务器组件(其中客户端通常是最终用户),而在 MOM 系统中,客户端通常仅通过异构软件组件的消息传递进行交互。

MOM系统更严重的问题是MOM是作为专用产品来实现的。如果您的公司依赖 SuperMOM-X 但最近收购了一家使用 SuperMOM-Y 的公司,会发生什么情况?为了解决这个问题,需要一个标准的消息接口。如果 SuperMOM-X 和 SuperMOM-Y 都实现该接口,则为一个系统开发的应用程序也可以在另一系统上运行。这样的界面应该易于学习,同时提供足够的功能来支持复杂的消息传递应用程序。 1998年推出的Java消息服务(JMS)规范就是为了实现这个目的。下一节介绍 JMS 的基本功能,并解释如何开发包含现有专有 MOM 产品通用元素的标准。这些标准既允许差异,又使进一步的发展成为可能。

关键词:

客户评论

我要评论