Kafka集群最全详解(图文全面总结)

Kafka集群

Kafka集群:是由一个、或多个 Kafka Broker 服务器组成的系统。

如下图所示:

Kafka集群最全详解(图文全面总结)-mikechen

Kafka 集群并非单点服务,而是由多台服务器(Broker)组成,这带来了更高的可用性和扩展性。

这些 Broker 协同工作,共同承担消息的存储、和传输任务。

总之,可以将 Kafka 集群视为一个分布式的消息队列系统,它具有高吞吐量、可扩展性…等特点。

 

Kafka集群架构

Kafka集群架构,主要包括以下几个核心组成部分:

Kafka集群最全详解(图文全面总结)-mikechen

1. 生产者(Producer)

将消息发送到 Kafka 中的指定 Topic 和 Partition,支持同步/异步发送。

并且,支持消息压缩、批量发送、幂等性…等优化机制。

2. 消费者(Consumer)

从 Kafka 中读取数据,支持消费者组(Consumer Group)机制。

Kafka集群最全详解(图文全面总结)-mikechen

一个 Partition 同一时间只能被消费者组内一个消费者消费,保障消费的可伸缩性与负载均衡

3. Broker

Broker(代理):集群的核心。

在 Kafka 集群中,Broker 是指运行 Kafka 服务的一个独立的服务器实例。

一个 Kafka 集群由一个或多个 Broker 组成。可以将 Broker 视为 Kafka 集群的基本构建块和核心运行单元。

它们承担着存储数据、处理客户端请求以及维护集群内部状态的关键职责,因此被称为集群的“核心”。

 

4.Partition(分区)

每个 Broker :可以托管多个 Topic 的多个 Partition。

每个 Topic 可以被划分为一个、或多个 Partition,每个 Partition 是一个有序且不可变的消息序列。

不同的 Partition 可以分布在不同的 Broker 上,实现负载均衡。

对于每个 Partition,会有一个 Broker 被选举为 Leader,负责处理该 Partition 的所有读写请求。

其他的 Broker 则作为 Follower,负责从 Leader 同步数据,以实现数据的冗余和高可用性。

 

Kafka集群配置

假设我们部署一个包含 3 个 Kafka Broker 和 3 个 Zookeeper 节点 的集群:

Kafka集群最全详解(图文全面总结)-mikechen

3 个节点分别为: broker-0 / broker-1 / broker-2。

以 broker-0 为例:

broker.id=0                                # 每个 broker 唯一 ID(0/1/2)
listeners=PLAINTEXT://:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
num.network.threads=3
num.io.threads=8
num.partitions=3                           # 默认分区数
default.replication.factor=2               # 默认副本数
log.retention.hours=168
log.segment.bytes=1073741824               # 1 GB
log.retention.check.interval.ms=300000

其他两个 Broker 修改 broker.idlog.dirs 即可。

评论交流
    说说你的看法