MOM Message-Oriented Middleware 基于消息的中间件(背景调研)

基于消息的中间件MOM

中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次

上,对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之
为平台。基于目的和实现机制的不同,我们将平台分为以下主要几类:

远程过程调用(Remote Procedure Call)
面向消息的中间件(Message-Oriented Middleware)
对象请求代理(Object Request Brokers)

它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等,在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务,如

事务处理监控器、分布数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构平台的差异,而其上的框架又定义了相应领域内的应用的系统结构、标准的

服务组件等,用户只需告诉框架所关心的事件,然后提供处理这些事件的代码。当事件发生时,框架则会调用用户的代码。用户代码不用调用框架,用户程序也不必

关心框架结构、执行流程、对系统级API的调用等,所有这些由框架负责完成。因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植
性。

MOM面向消息的中间件

MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。目前流行的MOM中间件产品有IBM的MQSeries、BEA的MessageQ等。消息传递和排队技术有以下三个主要特点:

通讯程序可在不同的时间运行程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。

对应用程序的结构没有约束。在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。

程序与网络复杂性相隔离

程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。

/*****************************************************************/

作为 MOM(Message Oriented Middleware) 标准的 JMS

Java 消息传送服务规范最初的开发目的是为了使 Java 应用程序能够访问现有 MOM 系统。引入该规范之后,它已被许多现有的 MOM 供应商采用并且已经凭借自身的功能实现为异步消息传送系统。

在创建 JMS 规范时,设计者希望融合现有消息传送系统的精髓。这包括:

路由和传送消息的消息传送提供者的概念

不同的消息传送模式或域,例如点对点消息传送和发布/订阅消息传送

用于接收同步和异步消息的工具

对可靠消息传送的支持

常见消息格式,例如流、文本和字节

供应商通过提供一个 JMS 提供者来实现 JMS 规范,该提供者由实现 JMS 接口的库、消息的路由和传送功能以及用来管理、监视和调整消息传送服务的管理工具组成。路由和传送功能可以由集中式消息服务器或代理来执行,也可以通过每个客户端运行时环境的功能来实现。

同样,JMS
提供者可以扮演多种角色:可以创建为独立产品或大型分布式运行时环境系统中的嵌入式组件。作为独立产品时,它可以用于定义企业应用程序集成系统的主干;在
嵌入到应用服务器中时,它可以支持组件间消息传送。例如,J2EE 使用 JMS 提供者实现消息驱动 Bean 并允许 EJB 组件发送和接收消息。

如果创建了包含现有系统所有功能的标准,则用户很难了解并实现通过此标准建立的系统。而 JMS
定义了消息传送概念和功能所具有的共同特点。从而使这种标准更易于掌握,并最大限度地提高了 JMS 应用程序在 JMS
提供者之间的可移植性。需要强调的一点是,JMS 是 API 标准,而不是协议标准。将 JMS
客户端从一个供应商移动到另一个供应商是很容易的。但是不同的 JMS 供应商之间通常不能相互直接通信。


/*****************************************************************/

时间: 2024-08-25 01:25:14

MOM Message-Oriented Middleware 基于消息的中间件(背景调研)的相关文章

WCF技术剖析之十八:消息契约(Message Contract)和基于消息契约的序列化

在本篇文章中,我们将讨论WCF四大契约(服务契约.数据契约.消息契约和错误契约)之一的消息契约(Message Contract).服务契约关注于对服务操作的描述,数据契约关注于对于数据结构和格式的描述,而消息契约关注的是类型成员与消息元素的匹配关系. 我们知道只有可序列化的对象才能通过服务调用在客户端和服务端之间进行传递.到目前为止,我们知道的可序列化类型有两种:一种是应用了System.SerializableAttribute特性或者实现了System.Runtime.Serializat

基于System V Message queue的PHP消息队列封装

原创文章,转载请注明出处:http://www.huyanping.cn/?p=235 作者:Jenner System V Message queue 是一种进程通信(IPC)的方式,方便实现生产者-消费者模型,单个或多个生产者向队列中写入消息,多个生产者再从队列中获取消息进行处理. 项目地址:https://github.com/huyanping/Zebra-PHP-Framework 该Wrapper支持: 进程通信 设置最大队列容量(字节单位) 获取当前队列数量 修改队列部分属性 注意

消息队列中间件的技术选型分析

[http://cloudate.net/?p=1165]2015/04/25  |  消息队列 |  罗伯特 消息队列中间件是互联网行业不可或缺的一项基本技术,在高并发消峰,非关键业务异步化,通知系统,监控数据推送等场景下是必不可少的,下文为转载文章,具体出处不详. 个人很喜欢ZeroMQ,非企业级的消息中间件,具有及低延迟-微秒级,使用简单灵活可嵌入等特性,性能报告请参考官网:http://zeromq.org/results:more-precise-0mq-tests 消息中间件是一种由

几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列

微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程.本文选自<架构解密:从分布式到微服务>一书,了解本书详情请点击阅读原文. 本文盘点了四种常用的微服务架构方案,分别是ZeroC IceGrid.Spring Cloud.基于消息队列与Docker Swarm 1

基于消息的异步套接字

Windows套接字在两种模式下执行I/O操作,阻塞模式和非阻塞模式.在阻塞模式下,执行操作的函数会一直等待,不会立即返回,知道发送完数据或者接受完数据为止.这在一定条件下是对性能的浪费,例如recvfrom函数没有收到数据的时候吧就会一直等待下去. 为了提高系统的性能,Winsock提供了基于消息的异步socket.下面介绍主要的Socket异步通信函数. <1>int       WSASyncSelect(SOCKET s,HWND hwnd,unsigned int uMsg,long

基于消息队列的双向通信

消息队列提供了一种一个进程向另一个进程发送一个数据块的方法.消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的.消息队列的创建或取得一个已存在的消息队列:     int msgget(key_t key,int msgflag);其中的参数:        key: 由ftok函数生成:        msgflag:        IPC_CREAT:如果ipc不存在,则创建一个ipc资源,否则直接打开        IPC_EXCL:本身没有太大的意义,只有和 IPC_CR

JaxWs基于消息编程

JaxWs 基于消息编程 1     两种消息模式 2     三种数据类型 2.1     Source 2.2     SOAPMessage 2.3     DataSource 3     服务端访问底层信息 4     客户端访问底层消息 4.1     Dispatch的三种请求方式 5     统一入口 6     注意 6.1     MESSAGE和PAYLOAD的区别 通过SEI(Service Endpoint Interface)在服务端和客户端进行操作时,我们是直接使用

基于消息系统架构设计

近期在弄一个业务系统,这个业务系统原本是有一个架构的,可是在后期扩展时发现问题多多.关键扩展非常不方便,并且由于业务系统安全规格较高.数据网络连接须要通过多个闸口传递才可,并且业务系统可能须要多地系统联合组网.共享业务数据,可是各地系统又必须相互独立. 用户希望改动架构,让系统可扩展性添加,同一时候要满足系统相互独立方便升级和兴许开发. 依照用户的要求我考虑使用一个基于消息传递的架构设计来满足需求. 所谓基于消息,就是通过消息中转server,中转全部系统间连接数据,同一时候管理数据路由,由消息

基于消息的软件架构模型演变

一个优秀的架构师总是能对各种解决方案的优点和对应成本之间取得良好的平衡,而这种能力背后是架构师丰富的经验和广阔的知识体系.基于消息的软件建构模型则是架构师必备的知识点,本文将详细描述该模型的演变过程. 还记得第一次跟公司的软件架构师打交道,他问我"Hi ABC,你的功能设计的怎么样了?"我有点不以为然,不就是个很小的功能么,为什么要用"设计"一词,为什么不是"你的代码写的怎么样了?".我后来明白了,"设计"一词代表了他对软件的