目录
Kafka 架构
Kafka 是一个分布式流处理平台,核心架构包括以下组件:
Producer(生产者):
负责将消息发布到 Kafka 的 Topic 中。
Consumer(消费者):
从 Topic 订阅并消费消息。
Broker(服务器):
Kafka 集群中的每个节点都是一个 Broker,负责消息的存储和转发。
Topic(主题):
消息的逻辑分类,生产者将消息发送到特定 Topic,消费者从 Topic 订阅消息。
Partition(分区):
每个 Topic 可以分为多个 Partition,分区是 Kafka 并行处理的基本单位,每个分区是一个有序、不可变的消息序列。
Replica(副本):
每个 Partition 可以有多个副本,分布在不同的 Broker 上,确保数据的高可用性和容错性。
Leader 和 Follower:
每个 Partition 有一个 Leader 副本和多个 Follower 副本,Leader 负责处理读写请求,Follower 从 Leader 同步数据。
Zookeeper:
用于管理 Kafka 集群的元数据、Broker 状态、Leader 选举等。
Kafka 工作原理
消息发布:
Producer 将消息发送到指定的 Topic,消息根据分区策略(如轮询、哈希等)分配到某个 Partition。
消息存储:
消息以追加(Append)的方式写入 Partition 的日志文件(Log Segment),Kafka 不会修改或删除已写入的消息。
消息复制:
Leader Partition 将消息复制到所有 Follower Partition,确保数据冗余和高可用性。
消息消费:
Consumer 从 Partition 拉取消息,每个 Consumer 属于一个 Consumer Group,组内的 Consumer 共同消费一个 Topic 的消息,每个 Partition 只能被组内的一个 Consumer 消费。
Offset 管理:
Consumer 通过 Offset 记录消费进度,Kafka 将 Offset 存储在内部 Topic(
__consumer_offsets
)中,确保消费状态可恢复。
日志清理:
Kafka 提供两种日志清理策略:
日志删除(Log Retention):根据时间或大小删除旧数据。
日志压缩(Log Compaction):保留每个 Key 的最新值,适用于 Key-Value 场景。
高可用性:
通过副本机制和 Leader 选举实现高可用性。如果 Leader 失效,Zookeeper 会从 ISR(In-Sync Repl