RabbitMQ消息中间件入门

175 阅读3分钟

1.什么是MQ

    MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。

2.为什么要用MQ

    1 解耦

图片

    2 异步

图片

    3 削峰

图片

通过以上流程图大家很容易知道MQ的好处,但是使用了MQ也有坏处,是把双刃剑。

3.MQ的缺点

    1、系统可用性降低。依赖服务也多,服务越容易挂掉。需要考虑MQ瘫痪的情况。

    2、系统复杂性提高。需要考虑消息丢失、消息重复消费、消息传递的顺序性。

    3、业务一致性。主业务和从属业务一致性的处理

4.MQ分类

       市面上常见的mq有ActiveMQ,RocketMQ,Kafka,RabbitMQ,下面来对比下各个的优缺点:

ActiveMQRocketMQKafkaRabbitMQ
开发语言JavaJavaScala/JavaErlang
单机吞吐量万级十万级十万级万级
成熟度成熟开源版本不够成熟比较成熟成熟
持久化支持少量堆积支持少量堆积支持大量堆积支持大量堆积
顺序消息不支持支持支持不支持
性能稳定性一般较差
集群方式支持简单集群支持简单集群多master-slave模式天然支持分布式集群
管理页面一般较好无(需要借助第三方插件)一般
维护者apacheMozilla/Springapachealibaba

5.MQ的选择

    1.kafka

    主要特点是基于pull模式来处理消息,追求高吞吐量,一开始的初衷就是用于日志收集和传输,适合产生大量数据的互联网服务的收集行为业务。大型公司建议使用,如果有日志采集功能,首选kafka。

   2.RocketMQ

    RocketMQ天生为金融互联网领域而生, 对于可靠性要求很高的场景.是alibaba研发的中间件,在阿里双十一经历了多次考验,有电商业务大流量业务,可以首选RocketMQ。

    3.RabbitMQ

    由于RabbitMQ主要是用erlang语言开发的,本身有着天然的并发优势,性能极好,社区活跃度很高,管理页面使用起来十分方便,如果数据量不是很大,中小型公司优先选择RabbitMQ.

    4.ActiveMQ

    由于ActiveMQ是早期MQ的鼻祖,但是相对企业用的不多了,社区更新缓慢,没有经过大规模吞吐量的场景验证,一般很少使用此中间件。

6.后续预告

咱们将主要介绍RabbitMQ消息中间件核心部分,敬请期待。

欢迎关注我的公众号来一起学习,微信公众号不再提供留言功能,有问题的话可以直接在输入框回复。

程序江湖