RabbitMq和Kafka架构异同分析:

rabbitmq:

  1. 架构为生产者-交换机-队列-消费者
  2. 交换机和队列之间通过路由键绑定,即routing key
  3. 消费者通过直接监听队列消费消息
  4. 交换机有四种类型,分别是faount广播交换机,会将消息发给下面所有队列;topic交换机,可以通过模糊匹配rk路由键,将消息转发到指定的队列中;direct交换机,通过完全匹配rk路由键,将消息转发到指定的队列中;header交换机使用的较少

kafka:

  1. 架构为生产者-broker-topic-partition-消费者组-消费者
  2. 消费者绑定在消费者组中,监听topic消费消息
  3. topic的消息只会被同一个消费者组中的一个消费者消费,所以消费者组中的消费者都会指定需要消费的topic中的partition
  4. 消息基本都是基于发布-订阅模式的

消息重复消费问题:

分布式集群下:

在RabbitMq中,消费者通过监听队列消费消息,当出现读个消费者监听同一个队列的情况时,RabbitMq中的轮询机制会保证消息只会被一个消费者消费

在Kafka中,消息是基于消费者组被订阅的,消费者组中的一个消费者只会消费一个topic中的一个partition的消息,也保证了消息只会被一个消费者消费

相关推荐
阳光是sunny4 小时前
Vue 项目怎么做用户行为全链路监控?轻量插件方案详解
前端·面试·架构
EMA10 小时前
Docker虚拟化失败解决方案
架构
李斯维11 小时前
从历史的角度看 Android 软件架构
android·架构·android jetpack
JouYY13 小时前
聊一下多 Agent 编排架构的应用实践
架构·llm·agent
Sunia13 小时前
《AgentX 专栏》10-生产部署:3台2C4G云服务器把企业级Agent真正跑起来的完整方案
java·架构
ZhengEnCi2 天前
Q01-高并发点赞系统架构设计
架构
笨鸟飞不快2 天前
从 MVC 到 DDD:一次真实的渐进式迁移实录
后端·架构
这个DBA有点耶2 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
锋行天下2 天前
我试图优化 Vite 的拆包,结果首屏慢了 10 倍
前端·vue.js·架构