RabbitMQ

什么是MQ

MQ全称为Message Queue(信息队列),消息队列是应用程序和应用程序之间的通信方法。
多用于分布式系统之间进行通信
分布式系统中两种通信方式
1.直接远程通信
2.借助第三方 完成间接通信.

MQ指的中间件
生产者(发送方)—中间件----消费者(接收方)

MQ的优势

  1. 应用解耦 远程调用耦合性越高,容错性就越低,可维护性差.使用MQ使得应用间解耦,提示容错性和可维护性.
  2. 异步提速 提升用户体验和系统吞吐量(单位时间内处理请求的数目)
  3. 削峰填谷高峰期消息积压,在高峰期过后的一段时间内,使用MQ后消息会一直维持在服务器能承受的范围内 ,知道消费完积压的消息,提升系统的稳定性.

MQ的劣势

  1. 系统可用性降低 系统引入的外部依赖越多,系统的稳定性就越差.一旦MQ宕机,就会对业务造成影响,如何保证MQ的高可用?
  2. 系统复杂度提高 大大增加了系统的复杂度,以前是系统间的同步消息调用,现在通过MQ变成异步,如何保证消息没有被重复消费,消息丢失,以及信息传递的顺序性?
  3. 一致性问题 A系统处理完业务,通过MQ给B,C两个系统发消息数据,如果B系统成功,C系统失败,如何保证数据处理的一致性?

使用MQ需满足的条件

1.生产者不需要从消费者处获得反馈,引入消息队列前直接引用,接口返回值应该为空.

2.容许短暂的不一致性

3.利大于弊 及解耦,提速,削峰这些方面的收益,大于加入MQ,管理MQ这些成本

RabbitMQ 简介

2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。RabbitMQ 采用 Erlang 语言开发。Erlang 语言由 Ericson 设计,专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。

AMQP 和 JMS

MQ是消息通信的模型;实现MQ的大致有两种主流方式:
1.AMQP是一种协议,更准确的说是一种binary wire-level protocol(链接协议)。这是其和JMS的本质差别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式。
2.JMS:JMS即Java消息服务(JavaMessage Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信

简单总结
RabbitMQ是基于AMQP协议使用Erlang语言开发的一款信息队列产品
AMQP是协议 类比http
JMS是API规范接口,类比JDBC

点击进入RabbitMQ官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值