什么是消息中间件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是消息中间件相关的知识,希望对你有一定的参考价值。

参考技术A 问题一:消息中间件是什么? 目前对消息中间件(MOM)的定义还未形成统一的行业标准,我国也正加快对消息中间件技术的标准化研究工作。一般认为,消息中间件是一种由消息传送机制或消息队列模式组成的中间件技术,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。与其它中间件技术不同(例如ORB 和RPC),一般来说,消息中间件并不要求系统具备一个可靠的底部传输层,而是通过以消息的形式收发应用程序数据来连接运行于不同系统上的应用程序。信息可以同步传送,也支持异步传送。在异步方式下,应用程序并不需要消息即时即刻传送到对方,只是由MOM 确保把信息以鼎息的方式传送到适当的目的地,并且只传一次。
消息中间件属于中间件的一种,拥有中间件的主要特点,但是自身的工作机制又具有特殊性,主要特点包括以下6 个方面:(1)异步传送;(2)防御通信;(3)并发执行;(4)日志通信;(5)多种通信方式;(6)应用程序与网络复杂性相隔离。

问题二:消息中间件用在什么地方? 10分 消息中间件为应用系统提供高效、灵活的消息同步和异步传输处理、存储转发、可靠传输。在大规模分布式环境下确保消息安全、可靠、高效送达。
特点:
1.分布式环境下,可靠、高效的消息传输
产品容错能力强,系统崩溃时不会导致消息丢失,确保关键业务数据的可靠传输;支持断点续传和消息流量控制,使消息引擎能够最大效率地利用网络传输能力。
2.多种集群方式,稳定高效
InforSuite MQ的若干节点可以组建为多种方式的群组,对外提供消息接收和处理功能。当单个节点无法满足大负载的消息处理要求,可以使用集群功能将负载分配到多个节点上,提高系统的处理能力和可扩展性。
3.全方位的安全机制保障
产品提供多层次的安全管理功能,包括连接建立时的网络认证,消息传输时的安全性保证,有效保证了连接的合法性和私有数据的保密性。
一般都是银行类大系统,军工或者研究所的大项目,存在很多数据传输的时候需要,可以咨询国内的一些基础中间件公司,就那么几家,中创中间件、东方通中间件、金蝶等,可以多了解

问题三:java 消息中间件 在什么情况下使用 消息中间件一般两个功能,解耦和异步处理,参考:blog.sina/s/blog_7085382f0102uy79

问题四:消息中间件有哪些 可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以组件的方式提供),开放给第三方程序使用。
目前比较典型的消息中间件包括IBM WebSphere MQSeries、Tibco
TIB/Rendezvous和Microsoft MSMQ等。

问题五:java消息中间件有哪些 ActiveMQ,是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
MetaQ,是一款完全的队列模型消息中间件,服务器使用Java语言编写,可在多种软硬件平台上部署。客户端支持Java、C++编程语言。单台服务器可支持1万以上个消息队列,通过扩容服务器,队列数几乎可任意横向扩展。每个队列都是持久化、长度无限(取决于磁盘空间大小)、并且可从队列任意位置开始消费

问题六:消息中间件有哪些 可与OA、ERP集成的免费消息中间件Active Messenger(简称AM)是一款非常实用的企业即时通讯软件。系统提供免费的消息中间件(以组件的方式提供),开放给第三方程序使用。
目前比较典型的消息中间件包括IBM WebSphere MQSeries、Tibco
TIB/Rendezvous和Microsoft MSMQ等。

问题七:怎么选择合适的开源消息中间件 能选择的有三种:

1. ActiveMQ/ApolloMQ
优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。
缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。

2. RocketMQ/Kafka
优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。
缺点:所谓鱼和熊掌不可兼得,放弃了一些消息中间件的灵活性,使用的场景较窄,需关注你的业务模式是否契合,否则山寨变相使用很别扭。除此之外,RocketMQ没有.NET下的客户端可用。RocketMQ身出名门,但使用者不多,生态较小,毕竟消息量能达到这种体量的公司不多,你也可以直接去购买阿里云的消息服务。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。

3. RabbitMQ
优点:生态丰富,使用者众,有很多人在前面踩坑。AMQP协议的领导实现,支持多种场景。淘宝的mysql集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。
缺点:Erlang代码你Hold得住不? 虽然Erlang是天然集群化的,但RabbitMQ在高可用方面做起来还不是特别得心应手,别相信广告。

问题八:什么是消息中间件,比如tonglink主要起什么作用 TongLINK/Q(简称TLQ)的主要功能是在应用程序之间海供可靠的消息传送,这些消息可以在不同的网络协议、不同的计算机系统和不同的应用软件之间传递。TongLINK/Q提供一个简单易用、高效可靠的分布式应用开发和运行平台,面向要求可靠消息(信息)传输的客户,即包括金融、电信、交通、能源、电子政务等高端客户,也包括大量中小企业客户。
中国中间件第一品牌东方通中间件

手把手带你了解消息中间件

在介绍什么消息中间件之前,先介绍几个概念:

1.什么是消息

??消息是指软件对象之间进行交互作用和通讯利用的一种方式。
技术图片

2.什么是中间件

??非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件

3.什么是消息队列

??消息队列是消息中间件的一种实现方式。
技术图片

4.介绍完上面的两个概念之后,相信你已经对消息、中间件、消息队列有了一定的概念,那么接着我们来介绍什么是消息中间件

??关注于数据的发送和接受,利用高效可靠的异步消息传递机制进行平台无关的数据交流,并基于数据通信集成分布式系统
技术图片
??这可能比较抽象,既然消息队列是实现消息中间件的一种方式,不如我们从它的实际应用场景中,来进一步理解它,消息队列的应用场景主要有一下几个方面:

4.1 异步处理:

??场景说明:提供新用户注册后,发送短信或邮件的功能
传统的做法有有两种 1.串行方式;2.并行方式
?2、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。
技术图片
?2、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间
技术图片
??假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒,并行的时间可能是100毫秒。
??因为CPU在单位时间内处理的请求数是一定的,假设CPU1秒内吞吐量是100次。则串行方式1秒内CPU可处理的请求量是7次(1000/150)。并行方式处理的请求量是10次(1000/100)
小结:如以上案例描述,传统的方式系统的性能(并发量,吞吐量,响应时间)会有瓶颈。
??引入消息队列,将不是必须的业务逻辑,异步处理。改造后的架构如下:
技术图片
??按照以上约定,用户的响应时间相当于是注册信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。因此架构改变后,系统的吞吐量提高到每秒20 QPS。比串行提高了3倍,比并行提高了两倍。

4.2 应用解耦:

??场景说明:用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。
技术图片
??传统模式的缺点:假如库存系统无法访问,则订单减库存将失败,从而导致订单失败,订单系统与库存系统耦合
??引入应用消息队列后的方案:
技术图片
??订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
??库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作
??假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦

4.3 流量削峰:

??场景说明:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。通过加入消息队列完成如下功能:
?a、可以控制活动的人数
?b、可以缓解短时间内高流量压垮应用
技术图片
??用户的请求,服务器接收后,首先写入消息队列。假如消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面。秒杀业务根据消息队列中的请求信息,再做后续处理

以上是关于什么是消息中间件的主要内容,如果未能解决你的问题,请参考以下文章

什么是消息中间件

为什么一定要用消息中间件

手把手带你了解消息中间件

什么是分布式消息中间件?

什么是分布式消息中间件?

消息中间件