什么是rabbitMQ
下载地址:
https://www.rabbitmq.com/
MQ: 消息队列,通过典型地生成者和消费者模型,生产者不断地向消息队列中生产消息,消费者不断地从队列中获取消息。而且只关心消息地发送和接收,没有业务逻辑地侵入,轻松地实现系统之间的解耦。别名为:中间件
消息中间件优点:
-
解藕:通过中间件来减少其他服务的对另一个服务(例如对发消息的服务)的依赖
-
异步通信
-
削峰
缺点: -
系统可用性降低:
系统引入的外部依赖越多,后期维护的成本加大,虽然系统与系统之间进行了解藕,但是别忘了所有系统都与MQ 建立了连接,一旦MQ 部署的服务器宏机,导致所有的系统无法正常的通信。 -
系统复杂度提高
加入MQ后,还考虑消息丢失,消息顺序,消息重复消费等问题 -
数据一致性
-
由于使用了异步相应,例如上图2 在,如果一个操作失败后,会导致数据错误。
类型: ActiveMQ 、 rabbitMQ、 kafka、 阿里自己研发的rocketMQ
rabbitMQ:基于AMQP协议,erlang语言开发,是部署最广泛的开源消息中间件,是最受欢迎的开源消息中间件之一
-
AMQP协议:
-
advanced message queuing protocol: 在2003年提出,最早应用与解决金融不同平台之间信息传递交互问题,顾名思义,AMQP是一种协议,跟准确的说是一种binary wire-lenvel protcol(连接协议),这是其JMS本质的差别,AMQP的provide天然性就是跨平台的.
rabbitMQ: 使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征:
- 1.面向消息、队列、路由(包括点对点和发布/订阅)
- 2.可靠性、安全
更多使用在企业级系统内对数据一致性、稳定性、和可靠性要求很高的场景,对性能和吞吐量有一定的要求。
rabbitmq 比 kafaka 可靠,卡法卡更合适IO高吞吐的处理了,一般应用在大数据日志处理或者对实时性(少量延迟),可靠性(少量丢数据)要求稍低的场景使用,比如ELK日志收集