Kafka Broker

  • Partition Leader + Follower Replicas — 数据以 partition 为单位复制
  • Controller — 集群里只有一个,负责选举 leader、管理副本
  • Log Segments — 消息落地到磁盘的存储结构
  • 无 Erlang — 纯 JVM (Java/Scala)
  • 协调依赖 ZooKeeper 或新版 KRaft (Raft 协议)

RabbitMQ Broker

  • Erlang VM — 整个 broker 跑在 Erlang 虚拟机上
  • Virtual Host — 多租户隔离
  • Exchange + Queue + Binding — 路由三件套(direct/fanout/topic/headers)
  • Message Store — 内存 + 磁盘持久化
  • Connection / Channel — 连接复用通道

本质区别

KafkaRabbitMQ
模型Pub/Sub + Log (partition)Pub/Sub + 消息队列
存储Append-only log,消息按 offset 顺序读取消息消费即删除(除非持久化)
协议自定义 binary 协议AMQP 0-9-1, STOMP, MQTT, HTTP
语言JVMErlang
适用场景高吞吐日志流、事件源任务队列、灵活路由

简单说:Kafka broker 是"分布式日志系统",RabbitMQ broker 是"消息队列路由器",设计哲学就不同。

更多推荐