消息队列MQ选型 - Kafka、RabbitMQ对比

简介: image.png适应场景异步处理,应用解耦,流量削锋和消息通讯对比featurescenarioKafkaRabbitMQ备注PUB-SUB 发布订阅模型√√推拉消费Consumer消费消息的动作方式。
img_03dc936e2cd52e8a77d1dc908114f92d.png
image.png

适应场景

异步处理,应用解耦,流量削锋和消息通讯

对比

feature scenario Kafka RabbitMQ 备注
PUB-SUB 发布订阅模型
推拉消费 Consumer消费消息的动作方式。 pull push/pull push更关注实时性。pull更关注消费者消费能力。
延迟消费 Producer产生一条消息后,并不希望立刻被消费掉。 X 高阶需求。
consumer group 同一条Message能同时被多个消费组消费,但同一group中,一条Message只会被一个consumer消费 KAFKA: 不需要在管理平台配置。 RabbitMQ:增加需要配置,涉及到内部数据冗余。
消息tag(filter) 以过滤出tag为keyword的message X X
消息回溯 从历史中的某个位置重新拉取消息 X X 只对拉模式,推模式不考虑回溯,支持时间维度offset
事务性 mq内部逻辑,消息状态是否一致 X 和消息中间件内部实现相关。
优先级 消息优先级,consumer优先消费高优先级消息。 X
染色 追踪消息在mq中的具体耗时 X X
本地读优化 Producer\Consumer 不在同一机房。MQ搭建在P端,C端会存在跨机房访问的问题。 X X 使用数据同步工具,将P所在机房数据同步到C所在机房的集群。
doubt message(消息追踪) 跨公司,异构系统间,消息状态追踪。 X X
消息积压 没有被消费的消息在MQ中堆积 支持程度的区别,不同mq会存在不同。
负载均衡 1:防止单点 2:C端压力LB在MQ各节点上。 RMQ:多集群做负载
支持的消息大小 每条消息的大小 无限制 无限制 需要对消息大小做限制,降低系统不确定性。
定期回收消息 mq中的消息一旦被消费后,可以被删除,空间回收。
消费语义 方式分别为:1、最多消费一次 2、最少消费一次3、仅消费一次 2 2 业务方消费端做幂等
对全局序支持 消息在全局保持时序一致 X X 设计复杂度原因,不考虑支持

备注:
“√” 表示目前系统已主持
“X” 表示系统不考虑支持该特性


欢迎关注 高广超的简书博客 与 收藏文章 !
欢迎关注 头条号:互联网技术栈

个人介绍:

高广超 :多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能互联网架构。

本文首发在 高广超的简书博客 转载请注明!

img_7015b3c64a6b1e4a95d4739adf2bbaa0.png
image.png
目录
相关文章
|
21天前
|
消息中间件 分布式计算 监控
Python面试:消息队列(RabbitMQ、Kafka)基础知识与应用
【4月更文挑战第18天】本文探讨了Python面试中RabbitMQ与Kafka的常见问题和易错点,包括两者的基础概念、特性对比、Python客户端使用、消息队列应用场景及消息可靠性保证。重点讲解了消息丢失与重复的避免策略,并提供了实战代码示例,帮助读者提升在分布式系统中使用消息队列的能力。
34 2
|
1月前
|
消息中间件 监控 大数据
Kafka消息队列架构与应用场景探讨:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Kafka的消息队列架构,包括Broker、Producer、Consumer、Topic和Partition等核心概念,以及消息生产和消费流程。此外,还介绍了Kafka在微服务、实时数据处理、数据管道和数据仓库等场景的应用。针对面试,文章解析了Kafka与传统消息队列的区别、实际项目挑战及解决方案,并展望了Kafka的未来发展趋势。附带Java Producer和Consumer的代码示例,帮助读者巩固技术理解,为面试做好准备。
27 0
|
1天前
|
消息中间件 存储 运维
深入理解MQ消息队列的高可用与可靠性策略
深入理解MQ消息队列的高可用与可靠性策略
11 3
|
2天前
|
消息中间件 监控 负载均衡
rabbitmq与kafka的区别
RabbitMQ提供了强大的可靠性保障,通过持久化机制和消息确认机制来确保消息的可靠传输和消费。而Kafka也提供了类似的可靠性保障,但其持久化机制和消息确认机制的实现方式与RabbitMQ有所不同。
|
6天前
|
消息中间件 存储 传感器
Kafka消息队列原理及应用详解
【5月更文挑战第6天】Apache Kafka是高性能的分布式消息队列,常用于实时数据管道和流应用。它提供高性能、持久化、分布式和可伸缩的消息处理,支持解耦、异步通信和流量控制。Kafka的核心概念包括Broker、Topic、Partition、Producer、Consumer和Consumer Group。其特点是高吞吐、低延迟、数据持久化、分布式架构和容错性。常见应用包括实时数据流处理、日志收集、消息传递和系统间数据交换。
|
17天前
|
消息中间件 大数据 Java
消息队列 MQ
消息队列 MQ
24 3
|
20天前
|
消息中间件 数据安全/隐私保护
MQTT微消息队列服务器连接报错:Error: Connection refused: Not authorized
使用MQTTX工具进行测试时,通过AccessKey创建了Client ID的用户名和密码。配置了公网接入点及端口1883,但尝试连接时出现错误。已附上工具截图:![](https://ucc.alicdn.com/pic/developer-ecology/3byii5uar64gg_36327474e991439da422f38c450ef153.png)。确认过用户名、密码和Client ID无误,问题仍未解决,期待回复!
|
25天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
9月前
|
消息中间件 Linux
centos7 yum快速安装rabbitmq服务
centos7 yum快速安装rabbitmq服务
140 0
|
9月前
|
消息中间件 中间件 微服务
RabbitMQ 入门简介及安装
RabbitMQ 入门简介及安装
88 0

热门文章

最新文章

相关产品

  • 云消息队列 Kafka 版
  • 云消息队列 MQ