Apache Kafka - 集群架构



请查看以下插图。它显示了 Kafka 的集群图。

Cluster Architecture

下表描述了上图中显示的每个组件。

序号 组件及描述
1

代理(Broker)

Kafka 集群通常包含多个代理来维护负载均衡。Kafka 代理是无状态的,因此它们使用 ZooKeeper 来维护其集群状态。一个 Kafka 代理实例每秒可以处理数十万次读写操作,并且每个代理可以处理 TB 级别的数据而不会影响性能。Kafka 代理领导者选举可以通过 ZooKeeper 完成。

2

ZooKeeper

ZooKeeper 用于管理和协调 Kafka 代理。ZooKeeper 服务主要用于通知生产者和消费者 Kafka 系统中是否有任何新的代理出现或代理发生故障。根据 Zookeeper 收到的关于代理存在或故障的通知,生产者和消费者做出决策并开始与其他代理协调其任务。

3

生产者

生产者将数据推送到代理。当新的代理启动时,所有生产者都会搜索它并自动向该新代理发送消息。Kafka 生产者不会等待代理的确认,并尽可能快地发送消息,直到代理能够处理为止。

4

消费者

由于 Kafka 代理是无状态的,这意味着消费者必须通过使用分区偏移量来维护已消费了多少消息。如果消费者确认某个特定消息偏移量,则表示消费者已消费所有先前消息。消费者向代理发出异步拉取请求,以便准备一个字节缓冲区以供消费。消费者可以通过提供偏移量值来回溯或跳过分区中的任何位置。消费者偏移量值由 ZooKeeper 通知。

广告