VIP4.0-MQ消息中间件在分布式系统中的作用

1.消息中间件在分布式系统中的作用介绍
消息中间件是在分布式系统中完成消息的发送和接收的基础软件。

1.1消息中间件可利用高效可靠的消息传递机制进行平台无关的数据交流,
并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息
排队模型,可以在分布式环境下扩展进程间的通信。
通过消息中间件,应用程序或组件之间可以进行可靠的异步通讯,从而
降低系统之间的耦合度,提高系统的可扩展性和可用性。

 

1.2通过使用消息中间件对Dubbo服务间的调用进行解耦

 

总结:

1.分布式服务间的异步通信

2.对Dubbo服务间的调用进行解耦

3.通过异步提高程序响应速度

异步通讯、解耦、并发缓冲
 

消息中间件使用的典型场景优四个

1.典型的异步处理

2.应用解耦

3.流量削锋

4.消息通讯四个场景

2.JMS(Java Message Service)

JMS是JavaEE中的一个关于消息的规范,是一套与具体平台无关的API。
JMS元素
JMS提供者----连接面向消息中间件的,JMS接口的一个实现。
JMS客户------生产或消费消息的基于Java的应用程序或对象。
JMS生产者----创建并发送消息的JMS客户。
JMS消费者----接收消息的JMS客户。
JMS消息------可以在JMS客户之间传递的数据的对象
JMS队列------一个容纳那些被发送的等待阅读的消息的区域。
JMS主题------一种支持发送消息给多个订阅者的机制。
JMS应用程序接口
ConnectionFactory(连接工厂)------用户用来创建到JMS提供者的连接的被管对象。
Connection(连接)-------------------连接代表了应用程序和消息服务器之间的通信链路。
Destination(目标)-------------------消息发布和接收的地点,或者是队列,或者是主题。
MessageProducer(消息生产者)-----由会话创建的对象,用于发送消息到目标。
MessageConsumer(消息消费者)----由会话创建的对象,用于接收发送到目标的消息。
Message(消息)----------------------是在消费者和生产者之间传送的对象。
Session(会话)------------------------表示一个单线程的上下文,用于发送和接收消息。

 

 

2.1JMS消息模型
1、点对点或队列模型

 

 

JMS 点对点队列模型特点:

1、消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。

2、消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。

3、Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

 

 

2、发布者/订阅者模型

 

JMS 发布/订阅模型特点:

消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。

发布到topic的消息会被所有订阅者消费。

 

3.MQ对比与选择

 

实现了JMS规范的消息中间件产品
ActiveMQ、RocketMQ、RabbitMQ、HornetQ……

 

 

 

ActiveMQ

RabbitMQ

RocketMq

Joram

HornetQ

OpenMQ

MuleMQ

SonicMQ

ZeroMQ

关注度

成熟度

成熟

成熟

比较成熟

比较成熟

比较成熟

比较成熟

新产品无成功案例

成熟

不成熟

所属社区/公司

Apache

 Mozilla

Public

License

Alibaba

OW2

Jboss

Sun

Mule

Progress

 

社区活跃度

文档

特点

功能齐全,被大量开源项目使用

由于Erlang 语言的并发能力,性能很好

 各个环节分布式扩展设计,主从 HA;支持上万个队列;多种消费模式;性能很好

 

在 Linux 平台上直接调用操作系统的 AIO,性能得到很大的提升

 

性能非常

好,与

MuleESB 无缝整合

性能优越的商业 MQ

低延时,高性能,最高 43万条消息每秒

授权方式

开源

开源

开源

开源

开源

开源

商业

商业

开源

开发语言

Java

Erlang

Java

Java

Java

Java

Java

Java

C

支持的协议

OpenWire、

STOMP、

REST、XMPP、

AMQP

AMQP

自己定义的一

套(社区提供

JMS--不成熟)

JMS

JMS

JMS

JMS

JMS

TCP、UDP

客户端支持语言

Java、C、

C++、

Python、

PHP、

Perl、.net等

Java、C、

C++、

Python、 PHP、Perl 等

Java

C++(不成熟)

 

Java

Java

Java

Java

Java、C、

C++、.net

python、 java、 php、.net 等

持久化

内存、文件、数据库

内存、文件

磁盘文件

内存、文件

内存、文件

内存、文件

内存、文件

内存、文件、数据库

在消息发送端保存

事务

支持

不支持

支持

支持

支持

支持

支持

支持

不支持

集群

支持

支持

支持

支持

支持

支持

支持

支持

不支持

负载均衡

支持

支持

支持

支持

支持

支持

支持

支持

不支持

管理界面

一般

无社区有 web

console 实现

一般

一般

一般

部署方式

独立、嵌入

独立

独立

独立、嵌入

独立、嵌入

独立、嵌入

独立

独立

独立

评价

优点:

   成熟的产品,已经在很多公司得到应用(非大规模场景)。有较多的文档。各种协议支持较好,有多重语言的成熟的客户端;缺点:

根据其他用户反馈,会出莫名其妙的问题,切会丢

失消息。

其重心放到

activemq6.0 产品—apollo上去了,目前社区不活跃,且对 5.x 维护较少;

Activemq 不适合用于上千个队列的应用场景

优点:  由于

erlang语言的特性,mq性能较好;管理界面较丰富,在互联网公司也有较大规模的应用;支持amqp系诶,有多中语言且支持 amqp 的客

户端可用

 

缺点:

  erlang语言难度较

大。集群不支持动态扩展。

优点:

   模型简单,接口易用(JMS的接口很多场合并不太实

用)。在阿里大规模应用。目前支付宝中的余额宝等新兴产

品均使用

rocketmq。集群规模大概在

50 台左右,单日处理消息上

百亿;性能非常好,可以大量堆

积消息在

broker 中;支持多种消费,包括集群消费、广播消费等。开发度较活跃,版本

更新很快。

 

缺点:

  产品较新,文档比较缺乏。

没有在 mq 核心中去实现JMS 等接口,对已有系统而言不能兼容。阿里内部还有一套未开源

的 MQ API,这一层API可以将上层应用和下层 MQ 的实现解耦(阿里内部有多个mq的实现,如 notify、

 

 

 

 

 

 

 

 

 

metaq1.x, metaq2.x,

rocketmq 等),使得下面mq可以很方便的进行切换和升级而对应用无任何影响,目前这一套东西未开源

 

 

 

 

 

 

 

 

参考:

http://youzhixueyuan.com/ali-p8-architect-talk-message-middleware-selection-and-usage-scenarios.html
--------------------- 
作者:u014401141 
来源:CSDN 
原文:https://blog.csdn.net/u014401141/article/details/71249455 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用MQ消息中间件的优势在于它可以让发送和接收消息的应用程序解耦,异步地进行消息传递。MQ消息中间件还可以提供可靠的消息传输,支持各种消息模式,提供灵活的消息路由,支持可靠的消息重试,可以提供高吞吐率的消息处理等优势。 ### 回答2: 使用消息中间件MQ)的主要原因是为了解决分布式系统的异步通信和解耦的问题,提高系统的可靠性、可扩展性和性能。以下是MQ的几个重要优势: 1. 异步通信:MQ提供了异步通信的机制,可以让发送方和接收方在时间上解耦。发送方把消息发送到MQ后,可以立即继续自己的工作,而不需要等待接收方的响应。这对于处理高并发请求和处理耗时任务非常有帮助。 2. 解耦:MQ能够将发送方和接收方解耦,发送方只需要关注把消息发送到MQ,而不需要知道实际的接收方是谁。同样,接收方只需要从MQ获取消息,而不需要知道消息的发送方是谁。这样可以提高系统的灵活性和可维护性。 3. 可靠性:MQ提供消息持久化的机制,确保即使在发送方和接收方的故障或者断电情况下,消息仍然能够被保存下来,并在故障恢复后重新传递。同时,MQ还提供了事务和回滚的机制,保证消息的可靠性传递。 4. 可扩展性:MQ具有高度的可扩展性,可以根据实际需求添加更多的消息生产者和消费者。同时,MQ还支持多种消息传递模式,如发布/订阅、点对点等,可以根据不同的业务场景选择合适的模式。 5. 削峰填谷:通过将消息缓存到MQ,可以平滑处理系统的高峰请求和突发流量,避免系统的负载过高。同时,MQ还支持消息的优先级和延时发送,可以更好地满足不同类型的消息需求。 总之,使用MQ消息中间件可以提供异步通信、解耦、可靠性、可扩展性和削峰填谷等优势,帮助构建高性能、高可靠性的分布式系统。 ### 回答3: MQ消息中间件(Message Queue)是一种用于处理消息的软件架构,它被广泛应用于分布式系统和异步通信。使用MQ消息中间件的主要原因有以下几点: 1. 解耦:使用消息中间件能够将系统不同模块之间的通信解耦,即发送方和接收方之间不直接依赖于彼此的存在。发送方只需要将消息发送到队列,而不需要关心具体的接收方是谁。这种解耦能够提高系统的可扩展性和可维护性。 2. 异步通信:消息中间件支持异步通信模式,即发送方发送消息后就可以继续处理其他任务,不需要等待接收方返回响应。这种方式可以提高系统的性能和吞吐量,同时也能降低系统之间的耦合度。 3. 缓冲与削峰:消息中间件能够缓冲消息,当接收方无法立即处理消息时,消息会暂时存储在队列,等待接收方空闲时再进行处理。这种缓冲能够平衡系统不同模块之间的处理速度差异,并且能够应对突发性的请求,避免系统过载。 4. 可靠性与持久化:消息中间件支持消息的持久化存储,保证消息不会因为系统故障或断而丢失。即使在消息发送后出现问题,通过重新发送机制,消息仍然能够被接收方正确处理,保证消息的可靠性。 5. 可拓展性:消息中间件能够支持高并发和高可用的应用场景,通过多个消息队列实例的部署,能够实现水平扩展和负载均衡,提高系统的可拓展性。 综上所述,使用消息中间件的优势包括解耦、异步通信、缓冲与削峰、可靠性与持久化以及可拓展性。这些优势能够提高系统的性能、可用性和可维护性,使得分布式系统更加稳定和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值