实用指南:Kafka的一条消息的写入和读取过程原理介绍
Apache Kafka 是一个分布式流处理平台,其核心设计围绕高吞吐、低延迟和可扩展性。以下是 Kafka 中一条消息的写入和读取过程的原理详解:
一、消息写入过程(Producer → Broker)
1. 生产者发送消息
分区选择:
Producer 根据 Topic 的分区策略(如轮询、哈希键、自定义)将消息发送到某个 Partition。
若指定了
key
,则通过哈希算法确定 Partition,保证相同 Key 的消息分配到同一分区。
序列化与压缩:
消息(Key 和 Value)被序列化(如 Avro、JSON),可选压缩(Snappy、GZIP)以减少网络开销。
2. Broker 处理写入请求
写入 Leader 副本:
Producer 向 Partition 的 Leader Broker 发送消息(通过 ZooKeeper 或 Metadata 缓存获取 Leader 信息)。
Leader 将消息以顺序追加(Append-Only)的方式写入本地 Log Segment(物理日志资料)。
副本同步(ISR 机制):
Leader 将消息同步到所有 In-Sync Replicas (ISR) 的 Follower 副本,