RabbitMQ消息中间件技术精讲(一)

第一章 课程介绍

  1. 导航
  2. 业界主流消息中间件介绍
    1. MQ衡量指标:服务性能、数据存储、集群架构

    2. ActiveMQ:缺点:性能不是特別好,并不试用高并发场景,优点:API很完善,适用于中小型互联网公司

    3. kafka,优点:关注高性能,特点是基于pull模式来处理消息消费,追求高吞吐量,缺点:对于数据可靠性要求不是很高

    4. RocketMQ,起源于kafka,纯java编写,需要运维维护,缺点:商业版收费

    5. RabbitMQ,基于AMQP协议,试用于对数据一致性、稳定性和可靠性要求很高的场景
      RabbitMQ消息中间件技术精讲(一)

      特性 ActiveMQ RabbitMQ RocketMQ Kafka
      单机吞吐量 万级 万级 10万级 10万级,这是kafka最大特点就是吞吐量高,一般配合大数据来进行实时数据计算、日志采集等场景
      Topic数据对吞吐量的影响 Topic可以达到几百几千的级别,吞吐量会有较小幅度下降,这是RabbitMQ的优势,在同等机器下,可以支持大量的Topic Topic从几十到几百的时候,吞吐量会大幅度下降。所以在同等机器下kafka尽量保持Topic数量不要过多,如果要支持大规模Topic,则要增加更多的机器
      时效性 ms级 微秒级,这是RabbitMQ一大特点,延迟是最低的 ms级 ms级
      可用性 高,基于主从架构实现高可用性 高,基于主从架构实现高可用性 非常高,分布式架构 非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
      消息可靠性 有较低的概率丢失数据 经过参数优化配置,可以做到0丢失 经过参数优化配置,可以做到0丢失
      功能支持 MQ领域的功能及其完备 基于Erlang开发,所以并发能力很强,性能极其好,延时很低 MQ功能较为完备,还是分布式的,扩展好 功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模时候用
      优劣势总结 非常成熟,功能强大,在业内大量的公司以及项目中都有应用。偶尔会有较低概率丢失消息,而且现在社区以及国内应用越来越少,官方设置不够活跃。 Erlang语言开发,性能极其好,延时很低,吞吐量到万级,MQ功能比较完备。而且社区活跃,但是Erlang语言开发,很难读懂源码很难定制和掌握 阿里产品,接口简单易用,在双十一实践检验,日处理消息上百亿之多,可以做到大规模吞吐,性能非常好,分布式扩展也很方便,社区很活跃。Java开发,可以读懂源码,实现定制化 kafka的特点其实很明显,就是仅仅提供较少的核心功能,但是提供超高的吞吐量,ms级的延迟,极高的可用性以及可靠性,而且分布式可以任意扩展。同时kafka最好是支撑较少的topic数量即可,保证其超高吞吐量。而且kafka唯一的一点劣势是有可能消息重复消费,那么对数据准确性会造成极其轻微的影响,在大数据领域中以及日志采集中,这点轻微影响可以忽略。这个特性天然适合大数据实时计算以及日志收集
上一篇:Dubbo-go 优雅上下线设计与实践


下一篇:聊聊RabbitMq动态监听这点事