当前位置:   article > 正文

工具篇8--Rabbitmq,RocketMq,kafka 消息模型对比_rabbitmq和rocketmq消息模型

rabbitmq和rocketmq消息模型


前言

本文对之前介绍的Rabbitmq,RocketMq,kafka 消息模型特定进行对比,并探究在实际开发中如何进行技术选型。


一、几种模型的对比:

1. 消息发送特点:

1.1 相同点:

  • Rabbitmq,RocketMq,kafka 消息发送失败均提供重试策略;
  • Rabbitmq,RocketMq,kafka 的消息 均提供集群消息和广播消息的发送;

1.2 不同点:

  • 消息类型:Rabbitmq,RocketMq 支持延迟消息的发送,而kafka 不支持;其中,Rabbitmq可以通过死信队列或者插件的方式实现;RocketMq 提供了按照延迟的级别实现;
  • 消息的批量发送:RocketMq,kafka都支持消息的批量发送,而Rabbitmq 是将多条消息压缩为一条消息进行发送,严格来说Rabbitmq 并不支持批量发送消息;
  • 消息的发送方式:RocketMq,kafka 消息都是发送到topic 中;Rabbitmq 的消息需要发送到交换机,然后通过路由建完成消息的路由;
  • Rabbitmq,RocketMq 提供了web 的管理界面,kafka 没有web界面需要按照第三方;

2. 消息存储:

2.1 相同点:

  • Rabbitmq,RocketMq,kafka 的消息都进行了持久化,且都有备份;Rabbitmq通过镜像队列进行数据备份;,RocketMq 通过队列的副本进行数据备份;kafka 通过副本分区进行数据备份;

2.2 不同点:

  • RocketMq 中一个topic 下有多个队列,多个队列可以分布在不同的broker 上 ; kafka 中一个topic 下有多个分区,每个分区可以分布在不同的broker 上;Rabbitmq 中的一个队列就时只有一个队列;

3. 消息接收:

3.1 相同点:

  • Rabbitmq,RocketMq,kafka 均支持批量消费消息;
  • Rabbitmq,RocketMq,kafka 均支持手动提交ack;
  • Rabbitmq,RocketMq,kafka 均支持消费失败的重试;

3.2 不同点:

  • 消费模型:RocketMq,kafka 只支持pull 模式;Rabbitmq 支持pull和poll模式;
  • 过滤消息:RocketMq 支持通过消息的tag 过滤消息,kafka 和Rabbitmq 不支持;
  • 消息的消费:RocketMq,kafka 消费某个或者多个topic,Rabbitmq 消费一个或者多个队列;
  • 历史消息:RocketMq,kafka 可以消费历史消息,Rabbitmq 在消息消费后就进行了删除,不支持消费历史消息;
  • 消费失败重试 Rabbitmq,RocketMq, 均支持消费失败的重试;kafka 不支持消费失败的重试;

4. 消息模型:

Rabbitmq,RocketMq,kafka 三者都是基于发布/订阅模型,支持集群部署;

二、消息选型:

1.业务场景:

  • 如果业务中消息量非常的大,并且消息需要快速消费,kafka 更加适合,因为其诞生支出就是为了处理社交平台的大量消息,可以达到20万级 QPS,Rabbitmq,RocketMq 稍微差一点儿可以达到10万级 QPS;
  • 如果业务中强调消息的准确性和可靠性, RabbitMQ 和 RocketMQ 都是不错的选择,尤其是RocketMQ 诞生之初就是为了处理金融类的消息;

2.性能指标:

  • 如果需要处理大规模数据的高吞吐量场景, Kafka 是最佳选择。Kafka 提供了非常高的吞吐量和低延迟,支持每秒处理数百万条消息;
  • 如果需要对低延迟消息进行实时处理, RocketMQ 更适合。RocketMQ 处理小消息时延迟非常低,适合实时数据传输和实时计算;
  • 如果需要保证消息不丢失和交付, RabbitMQ 优于其他消息队列,因为它支持消息确认机制和消息持久化;

3.生态系统:

  • RabbitMQ 生态系统较为成熟,有很多语言和框架的客户端支持。它的社区活跃,文档和插件齐全,易于上手;
  • RocketMQ 技术栈基本上是围绕 Java 和 Spring Framework 的。它支持主流的开源框架和应用,社区活跃度较高;
  • Kafka 提供了多种编程语言的客户端,支持 Spark、Flink、Storm 等流处理框架,并且有成熟的生态系统和社区支持;

三、总结:

本文简单总结了三种消息的特点,以及对消息技术选型提供一些基本的思路,这三种中间件各有优缺点,需要根据自己的业务需求、性能要求和技术栈来选择。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/603534
推荐阅读
相关标签
  

闽ICP备14008679号