首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
01 | 消息引擎系统ABC
02 | 一篇文章带你快速搞定Kafka术语
03 | Kafka只是消息引擎系统吗?
04 | 我应该选择哪种Kafka?
05 | 聊聊Kafka的版本号
06 | Kafka线上集群部署方案怎么做?
07 | 最最最重要的集群参数配置
09 | 生产者消息分区机制原理剖析
10 | 生产者压缩算法面面观
11 | 无消息丢失配置怎么实现?
12 | 客户端都有哪些不常见但是很高级的功能?
13 | Java生产者是如何管理TCP连接的?
14 | 幂等生产者和事务生产者是一回事吗?
15 | 消费者组到底是什么?
16 | 揭开神秘的“位移主题”面纱
17 | 消费者组重平衡能避免吗?
18 | Kafka中位移提交那些事儿
19 | CommitFailedException异常怎么处理?
20 | 多线程开发消费者实例
21 | Java 消费者是如何管理TCP连接的?
22 | 消费者组消费进度监控都怎么实现?
23 | Kafka副本机制详解
24 | 请求是怎么被处理的?
25 | 消费者组重平衡全流程解析
26 | 你一定不能错过的Kafka控制器
27 | 关于高水位和Leader Epoch的讨论
28 | 主题管理知多少?
29 | 熟悉Kafka动态配置
30 | 怎么重设消费者组位移?
31 | 常见工具脚本大汇总
32 | KafkaAdminClient:Kafka的运维利器
33 | Kafka认证机制用哪家?
34 | 云环境下的授权该怎么做?
35 | 跨集群备份解决方案MirrorMaker
36 | 你应该怎么监控Kafka?
37 | 主流的Kafka监控框架
38 | 调优Kafka,你做到了吗?
39 | 从0搭建基于Kafka的企业级实时日志流处理平台
40 | Kafka Streams与其他流处理平台的差异在哪里?
41 | Kafka Streams DSL开发实例
42 | Kafka Streams在金融领域的应用
当前位置:
首页>>
技术小册>>
Kafka核心技术与实战
小册名称:Kafka核心技术与实战
### 02 | 一篇文章带你快速搞定Kafka术语 在深入探讨Kafka的核心技术与实战应用之前,掌握其基本术语是不可或缺的基石。Apache Kafka,作为分布式流处理平台,凭借其高吞吐量、可扩展性、持久性和容错性,在大数据和实时数据流处理领域占据了举足轻重的地位。本章节旨在通过一篇详尽的文章,帮助你快速理解并掌握Kafka中的关键术语,为后续的学习和实践打下坚实基础。 #### 一、Kafka基础架构概览 在深入术语之前,我们先对Kafka的基础架构有一个大致的了解。Kafka集群主要由以下几个核心组件构成: - **Broker**:Kafka服务器,负责存储消息和提供数据服务。每个Kafka集群包含一个或多个Broker。 - **Topic**:Kafka中的消息类别,用于区分不同种类的数据。生产者(Producer)向Topic发送消息,消费者(Consumer)从Topic订阅并消费消息。 - **Partition**:Topic的物理划分,每个Topic可以划分为多个Partition,以提高并行处理能力。 - **Producer**:消息的生产者,负责向Kafka集群发送消息。 - **Consumer**:消息的消费者,从Kafka集群中读取并处理消息。 - **Consumer Group**:消费者组,允许多个消费者实例共同处理同一个Topic的数据,以实现负载均衡和容错。 - **ZooKeeper**:Kafka依赖ZooKeeper来管理集群的元数据(如Broker信息、Topic配置等),以及实现集群的协调功能。 #### 二、Kafka核心术语详解 ##### 2.1 Topic与Partition - **Topic**:Kafka中的消息以Topic为单位进行归类,相当于传统消息系统中的队列或主题。生产者将消息发送到特定的Topic,而消费者则从该Topic中订阅并消费消息。Topic是逻辑上的概念,用于标识一组消息的目的地。 - **Partition**:为了提高Kafka的并行处理能力和吞吐量,每个Topic可以被进一步划分为多个Partition。Partition是物理上的概念,每个Partition在Kafka集群中都是一个有序的、不可变的消息序列,且每个Partition内的消息都被分配一个唯一的序列号(Offset)。通过Partition,Kafka实现了数据的分布式存储和并行消费。 ##### 2.2 Producer与Consumer - **Producer**:生产者,是向Kafka集群发送消息的客户端应用程序。生产者可以将消息发送到指定的Topic,并通过分区器(Partitioner)决定消息被发送到哪个Partition。分区器通常基于消息的键(Key)或轮询算法来决定分区。 - **Consumer**:消费者,是从Kafka集群中读取并处理消息的客户端应用程序。消费者通过订阅一个或多个Topic以及Topic中的Partition来读取消息。Kafka允许消费者以组(Consumer Group)的形式进行消费,同一个组内的消费者共同处理同一个Topic的数据,以实现负载均衡。 ##### 2.3 Offset与Consumer Offset - **Offset**:偏移量,是Kafka中用于标识Partition中每条消息的唯一序列号。它是一个长整型数值,表示消息在Partition中的位置。通过Offset,消费者可以指定从哪个位置开始读取消息,实现消息的精确控制。 - **Consumer Offset**:消费者偏移量,是消费者当前已消费到的消息的Offset。Kafka自动记录每个Consumer Group中每个Partition的Consumer Offset,以便在消费者重启或失败后能够从上次的位置继续消费消息,保证消息处理的幂等性。 ##### 2.4 Leader与Follower - **Leader**与**Follower**:在Kafka的高可用架构中,每个Partition都有一个或多个副本(Replica)以提高数据的可靠性和容错性。这些副本被分为Leader和Follower两种角色。Leader负责处理读写请求,而Follower则通过复制Leader的数据来保持与Leader的数据一致性。当Leader出现故障时,Kafka会选举一个新的Leader来接管服务,确保服务的连续性。 ##### 2.5 ISR与AR - **ISR(In-Sync Replicas)**:同步副本集合,是Partition中所有与Leader保持同步的副本的集合。只有ISR中的副本才有资格被选为新的Leader。ISR的大小可以通过配置参数进行调整,以平衡数据可靠性和性能。 - **AR(Assigned Replicas)**:已分配副本集合,是Partition中所有副本的集合,包括Leader和所有Follower。AR定义了Partition的副本分布,而ISR则定义了哪些副本是可靠的、可以参与选举的。 ##### 2.6 消息确认与日志压缩 - **消息确认(Acks)**:生产者发送消息到Kafka后,可以根据配置要求Broker返回不同的确认信息。例如,`acks=0`表示生产者不等待Broker的确认;`acks=1`表示等待Leader的确认;`acks=all`或`acks=-1`表示等待ISR中所有副本的确认。这有助于根据业务需求调整消息的可靠性级别。 - **日志压缩(Log Compaction)**:Kafka支持日志压缩功能,用于优化长时间运行Topic的存储空间。当开启日志压缩时,Kafka会保留每个Key的最新值,并删除旧值,从而减少磁盘空间的使用。这对于需要长期保存数据的场景(如用户行为日志)非常有用。 ##### 2.7 消费者组协调与再平衡 - **消费者组协调**:Kafka通过ZooKeeper来协调消费者组中的消费者实例。每个消费者组都有一个唯一的ID,Kafka使用此ID来跟踪消费者组的成员和它们的订阅信息。 - **再平衡(Rebalance)**:当消费者组中的成员发生变化(如新增或删除消费者实例)时,Kafka会触发再平衡过程,以重新分配Partition到消费者实例,确保每个Partition都能被消费者组中的某个消费者实例所消费。再平衡是Kafka实现负载均衡和容错的关键机制之一。 #### 三、总结 通过本文的介绍,我们系统地了解了Kafka中的一系列核心术语,包括Topic、Partition、Producer、Consumer、Offset、Leader、Follower、ISR、AR、消息确认、日志压缩以及消费者组协调与再平衡等。这些术语构成了Kafka的基础架构和运行机制,是深入学习Kafka核心技术与实战应用的基石。希望本文能够帮助你快速掌握Kafka的基本概念和原理,为后续的学习和实践奠定坚实的基础。
上一篇:
01 | 消息引擎系统ABC
下一篇:
03 | Kafka只是消息引擎系统吗?
该分类下的相关小册推荐:
Kafka面试指南
Kafka核心源码解读
kafka入门到实战
Kafka 原理与源码精讲
消息队列入门与进阶