kafka和rabbitmq的broker的组成差异

📅 2026/6/28 19:47:28
kafka和rabbitmq的broker的组成差异
Kafka BrokerPartition Leader Follower Replicas— 数据以 partition 为单位复制Controller— 集群里只有一个负责选举 leader、管理副本Log Segments— 消息落地到磁盘的存储结构无 Erlang— 纯 JVM (Java/Scala)协调依赖 ZooKeeper 或新版KRaft(Raft 协议)RabbitMQ BrokerErlang VM— 整个 broker 跑在 Erlang 虚拟机上Virtual Host— 多租户隔离Exchange Queue Binding— 路由三件套direct/fanout/topic/headersMessage 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 是消息队列路由器设计哲学就不同。