本文介绍消息队列 Kafka 的系统结构和 Pub/Sub 模型。

消息队列 Kafka 系统架构

一个典型的消息队列 Kafka 集群包含:

  • Producer:通过 push 模式向消息队列 Kafka Broker 发送消息,可以是网站的页面访问、服务器日志等,也可以是 CPU 和内存相关的系统资源信息;
  • Kafka Broker:消息队列 Kafka 的服务器,用于存储消息;支持水平扩展,一般 Broker 节点数量越多,集群吞吐率越高;
  • Consumer Group:通过 pull 模式从消息队列 Kafka Broker 订阅并消费消息;
  • Zookeeper:管理集群的配置、选举 leader,以及在 Consumer Group 发生变化时进行负载均衡。


消息队列 Kafka 的 Pub/Sub 模型

消息队列 Kafka 采用 Pub/Sub(发布/订阅)模型,其中:

  • Consumer Group 和 Topic 的关系是 N:N。 同一个 Consumer Group 可以订阅多个 Topic,同一个 Topic 也可以同时被多个 Consumer Group 订阅。
  • 同一 Topic 的一条消息只能被同一个 Consumer Group 内的任意一个 Consumer 消费,但多个 Consumer Group 可同时消费这一消息。