Kafka底层原理详解(图文全面总结)

Kafka是大型架构的必备中间件,下面我重点来详解Kafka底层原理@mikechen

Kafka

Kafka是由LinkedIn开源的分布式流处理平台,现由Apache基金会维护。

Kafka,是一个高吞吐量、低延迟、可扩展的分布式消息队列。

Kafka底层原理详解(图文全面总结)-mikechen

Kafka 主要用于以下场景:

日志收集系统:如 ELK、数据平台日志采集;

实时数据管道:如用户行为数据、金融交易流水;

流式计算输入源:与 Flink、Storm …等配合使用

异步解耦:实现系统间的松耦合,提高系统稳定性与可维护性。

Kafka底层原理

Kafka架构,由多个 Kafka Broker 组成,每个 Broker 负责管理一部分数据的读写请求。

Kafka 集群同时包含以下组件:

Kafka底层原理详解(图文全面总结)-mikechen

Broker

Kafka 服务器,负责接收生产者的消息、保存消息、供消费者拉取。

核心职责包括:

  • 存储 Topic 下各个 Partition 的消息数据;
  • 处理 Producer 的写入请求、和 Consumer 的读取请求;
  • 管理分区副本及其状态(Leader/Follower);
  • 对接 Zookeeper(或 KRaft)获取和更新元数据。

 

Producer

客户端应用,向 Kafka Topic 发送消息。

Kafka底层原理详解(图文全面总结)-mikechen

核心功能:

创建消息: 将业务数据封装成 Kafka 消息,消息通常包含 Key、Value 和可选的 Headers。

分区策略: 决定消息应该发送到 Topic 的哪个 Partition。

常见的分区策略包括轮询(Round Robin)、基于 Key 的哈希(Key-based Hashing)以及自定义分区策略。

异步发送与批量发送:Producer 可以选择同步、或异步发送消息。

为了提高吞吐量,Producer 通常会将多个消息,批量发送到 Broker。

 

Consumer

Consumer 是 Kafka 的消息消费者,负责订阅一个或多个 Topic,并从这些 Topic 的 Partition 中读取和处理消息。

Kafka底层原理详解(图文全面总结)-mikechen

Consumer 通常属于一个 Consumer Group,同一个 Group 中的 Consumer 实例协同消费订阅的 Partition。

 

Topic和Partition

Topic是Kafka中消息的逻辑分类,每条消息发布到某个Topic。

Partition是Topic的物理分片,Topic由多个Partition组成,Partition内消息有序。

Kafka底层原理详解(图文全面总结)-mikechen

Partition设计使Kafka能并行处理消息,提升吞吐量。

消息生产时,Producer根据消息Key或自定义策略决定写入哪个Partition。

Partition数量决定了Topic的并发度和扩展能力。

 

Zookeeper/KRaft

Zookeeper 或 KRaft(Kafka Raft)是 Kafka 用于管理集群元数据的组件。

Kafka底层原理详解(图文全面总结)-mikechen

在传统的 Kafka 架构中,Zookeeper 负责存储集群的配置信息、Topic 和 Partition 的元数据、。

以及,Broker 的注册信息、以及进行控制器(Controller)的选举等关键任务。

新版 Kafka 架构中,采用 KRaft 替代 Zookeeper)。

工作流程

以上组件,工作流程如下:

Kafka底层原理详解(图文全面总结)-mikechen

步骤 1: Producer -> Broker (发送消息)

步骤 2: Broker (存储消息)

步骤 3: Broker -> Zookeeper/KRaft (注册/更新元数据)

步骤 4: Consumer -> Zookeeper/KRaft -> Broker (获取元数据/拉取消息)

步骤 5: Broker -> Consumer (发送消息)

步骤 6: Consumer -> Broker (提交 Offset)

 

评论交流
    说说你的看法