消息队列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
目录
相关文章
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
94 2
|
1月前
|
消息中间件 Java
springboot整合消息队列——RabbitMQ
springboot整合消息队列——RabbitMQ
75 0
|
9天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
11天前
|
消息中间件 存储 Java
RabbitMQ入门指南(八):MQ可靠性
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了MQ数据持久化、LazyQueue模式、管理控制台配置Lazy模式、代码配置Lazy模式、更新已有队列为lazy模式等内容。
37 0
|
18天前
|
消息中间件 存储 负载均衡
消息队列学习之RabbitMQ
【4月更文挑战第3天】消息队列学习之RabbitMQ,一种基于erlang语言开发的流行的开源消息中间件。
15 0
|
23天前
|
消息中间件 存储 负载均衡
消息队列学习之kafka
【4月更文挑战第2天】消息队列学习之kafka,一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台。
17 2
|
1月前
|
消息中间件 存储 中间件
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
【SpringCloud Stream消息驱动、设计思想以及整合rabbitmq消息队列案例--学习笔记】
50 0
|
1月前
|
消息中间件 缓存 API
|
1月前
|
消息中间件 存储 Cloud Native
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
|
2月前
|
消息中间件 安全 Kafka
2024年了,如何更好的搭建Kafka集群?
我们基于Kraft模式和Docker Compose同时采用最新版Kafka v3.6.1来搭建集群。
437 2
2024年了,如何更好的搭建Kafka集群?

相关产品

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