跳到主要内容

第2章 Kafka重要概念

1.什么是kafka

Kafka 是一个分布式流处理平台,最初由LinkedIn开发,后来开源并贡献给了Apache基金会。它主要用于构建实时数据管道和流应用程序。Kafka的核心理念是将消息流从一个地方传送到另一个地方,具备高吞吐量、低延迟、水平扩展能力,能够处理大量的实时数据。

Kafka的使用场景非常广泛,主要应用于日志聚合、实时监控、事件驱动系统、流式数据处理、消息队列系统等。它能处理从各种源头(例如日志、传感器数据、交易数据)采集的大量数据,并将这些数据实时传送到目标系统中。

2.kafka核心概念

Producer(生产者):生成消息并将其发送到Kafka主题的客户端应用程序。

Consumer(消费者):从Kafka主题读取消息的客户端应用程序。

Broker:Kafka集群中的服务器,负责存储和传输数据。一个Kafka集群包含多个Broker,所有消息都被存储在它们的磁盘上。

Topic(主题):Kafka中用来分类消息的逻辑单元。每个主题包含若干个分区。

Partition(分区):主题的子集,Kafka将一个主题拆分为多个分区以实现并行处理和负载均衡。

Replica(副本):分区的副本,保证了分区的高可用性。Kafka为每个分区保存多个副本,其中一个副本被选为Leader,其余副本作为Follower。

Offset:每条消息在分区中的唯一标识符。消费者使用Offset追踪它已处理的消息。

Consumer Group(消费者组):多个消费者可以组成一个消费者组,消费者组内的每个消费者都会从不同的分区消费消息,从而实现负载均衡。

Lag: 消息堆积

1728196253345-f53f75e2-d56f-4dc0-b219-c3b280698873.png

3.kafka与zookeeper的关系

Kafka使用Zookeeper作为分布式协调工具,主要用于管理Kafka集群的元数据和配置,以下是具体的几点关系:

集群管理:Zookeeper负责追踪Kafka集群中所有Broker的状态,确保Kafka的Broker能够动态加入或退出集群。

Leader选举:Zookeeper帮助Kafka进行分区副本的Leader选举。在每个分区中,只有一个副本是Leader,负责处理所有的读写请求,其余副本作为Follower进行同步。Zookeeper确保当Leader失效时,能够快速选举出新的Leader。

元数据管理:Zookeeper维护着Kafka集群的所有元数据,包括主题、分区、副本的配置信息等。消费者和生产者可以通过Zookeeper了解集群的状态和拓扑结构。

Kafka最新版本已经逐步去除对Zookeeper的依赖,转向使用自身的Kafka Raft协议(KRaft)进行集群管理和Leader选举。这是为了简化架构并减少对外部系统的依赖。

4.kafka处理消息流程

1)消息生产

生产者发送消息到指定的 Kafka 主题。

消息基于键或轮询策略分配到特定分区。

2)数据存储

领导者副本首先接收并写入消息到磁盘。

消息从领导者复制到所有追随者副本。

消息在多个副本间同步后被视为已提交。

3)消息消费

消费者从订阅的主题拉取消息。

消费者根据读取的偏移量消费消息,并可提交新的偏移量以跟踪进度。

4)故障处理

如果领导者副本失败,将从同步副本中选择新的领导者。

如果消费者失败,其分区将被重新分配给同一群组的其他消费者。

5.kafka的版本选择

更新: 2025-04-07 14:48:51