
Kafka 源码笔记
文章平均质量分 96
谈谈1974
火萎了,我也准备走了
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Kafka 3.0 源码笔记(1)-Kafka 服务端的网络通信架构
文章目录Kafka 网络通信组件架构1. 底层服务器 SocketServer1.1 Acceptor 连接接收器1.2 Processor 连接处理器1.3 RequestChannel 请求队列2. 请求处理器线程池 KafkaRequestHandlerPoolKafkaRequestHandler 请求处理器Kafka 网络通信组件架构本系列文章基于 Kafka 3.0 版本 ,读者如有兴趣可以点击链接进入 github 下载源码。 Kafka 的服务端核心模块用 scala语言 编写,这是一种原创 2021-12-12 11:58:06 · 2936 阅读 · 3 评论 -
Kafka 3.0 源码笔记(12)-Kafka 服务端分区异常恢复机制的源码分析
文章目录1. HW 同步机制的问题1.1 数据丢失问题1.2 主从数据不一致2. Kafka 的异常恢复机制2.1 解决数据丢失问题2.2 解决数据不一致问题3. 异常恢复原理源码分析3.1 LeaderEpoch 的维护更新3.1.1 分区 Leader 当选时的更新3.1.2 消息写入时的维护3.2 异常恢复的处理1. HW 同步机制的问题在 Kafka 3.0 源码笔记(10)-Kafka 服务端消息数据的主从同步源码分析 中,笔者介绍了消息数据在主从副本之间同步的流程,从中可以知道主从同步的核心原创 2022-05-16 17:26:49 · 1481 阅读 · 1 评论 -
Kafka 3.0 源码笔记(11)-Kafka 服务端分区副本失败选主的源码分析
文章目录1. 分区副本选主的流程2. 源码分析2.1 BrokerRegistration 请求的处理2.1.1 BrokerRegistration 请求的发起2.1.2 BrokerRegistration 请求的处理2.2 BrokerHeartbeat 请求的交互2.2.1 BrokerHeartbeat 请求的发起2.2.2 BrokerHeartbeat 请求的处理1. 分区副本选主的流程Kafka 为了保证某些集群节点宕机的情况下对外的消息生产消费功能的可用性,实现了一套失败转移机制,原创 2022-04-29 00:04:03 · 3215 阅读 · 0 评论 -
Kafka 3.0 源码笔记(10)-Kafka 服务端消息数据的主从同步源码分析
文章目录前言1. 消息数据主从同步的流程2. 消息数据主从同步源码分析2.1 元数据变动的发布2.2 变动元数据的消费应用2.3 主从副本的消息数据同步前言Kafka 3.0 源码笔记(9)-Kafka 服务端元数据的主从同步 中笔者在文章的末尾提到了元数据主从同步完成后,元数据的变动被 broker 模块监听处理后才能对集群产生影响,本文实际上就是以创建 Topic 功能为引子,从消息数据分区副本主从同步的场景来分析这个过程。结合 Kafka 的整个设计实现来看,创建 Topic 后,整个消息生产消费原创 2022-04-08 20:55:26 · 3310 阅读 · 0 评论 -
Kafka 3.0 源码笔记(9)-Kafka 服务端元数据的主从同步
文章目录前言1. 元数据主从同步的流程1.1 两次 Fetch 完成 HW 同步1.2 一次 Fetch 完成 HW 同步2. 元数据主从同步源码分析2.1 Follower 节点 Fetch 请求的发起2.2 Leader 节点对 Fetch 请求的处理2.3 Follower 节点对 Fetch 响应的处理前言在 Kafka 3.0 源码笔记(8)-Kafka 服务端对创建 Topic 请求的处理 中笔者分析介绍了 Kafka 集群的 Leader 节点更新保存元数据的流程,而元数据保存下来后必然要原创 2022-04-04 17:02:42 · 3703 阅读 · 0 评论 -
Kafka 3.0 源码笔记(8)-Kafka 服务端集群 Leader 对 CreateTopics 请求的处理
文章目录前言1. Controller 处理请求的流程2. 源码分析2.1 事件生成2.2 事件消费2.3 创建 topic 时的分区分配2.4 业务执行结果处理前言在 Kafka 3.0 源码笔记(5)-Kafka 服务端 Controller 集群选举的流程 中笔者详细分析了 Controller 集群启动时的选主流程,而 Controller 的主节点在确定后需要对外提供服务,其中最重要的就是接受请求并维护集群的元数据。本文将以 Kafka 最常用的 Topic创建场景来分析 Controller原创 2022-03-26 17:41:37 · 2577 阅读 · 0 评论 -
Kafka 3.0 源码笔记(7)-Kafka 服务端对客户端的 Produce 请求处理
文章目录1. 前言2. 源码分析1. 前言在Kafka 3.0 源码笔记(6)-Kafka 生产者的源码分析 中笔者分析了作为客户端的 Producer 生产消息的主要动作,本文则着重分析 Kafka 服务端对于客户端生产消息的 Produce 请求的处理。这部分实际上比较简单,笔者在 Kafka 3.0 源码笔记(4)-Kafka 服务端对客户端的 Fetch 请求处理 已经介绍了 Kafka 服务端的文件存储结构以及读取消息数据的主要脉络,服务端写入消息的流程与之相比没有太大出入2. 源码分析原创 2022-03-12 16:03:06 · 2618 阅读 · 0 评论 -
Kafka 3.0 源码笔记(6)-Kafka 生产者的源码分析
文章目录1. 生产者消息的发送2. 源码分析2.1 KafkaProducer 的初始化2.2 KafkaProducer 的消息发送1. 生产者消息的发送Kafka 3.0 源码笔记(3)-Kafka 消费者的核心流程源码分析 中笔者提到Kafka 高性能的重要原因之一就是把负载均衡放在客户端实现,这一点在 Kafka 生产者的设计实现上也有体现。通常一个 Kafka 集群及其生产者的结构关联如下图所示Producer 生产者发送消息到 Kafka 服务端的大致流程如下:根据消息数据的 key原创 2022-02-11 14:29:55 · 1924 阅读 · 0 评论 -
Kafka 3.0 源码笔记(5)-Kafka 服务端集群 Leader 选举的流程
文章目录1. Kafka 集群选举的流程2. Kafka 集群选举的源码分析2.1 KafkaRaftManager 的初始化准备2.2 KafkaRaftManager 的启动运行2.3 集群选主的流程1. Kafka 集群选举的流程在 Kafka 3.0 源码笔记(1)-Kafka 服务端的网络通信架构 中笔者提到在 KRaft 模式下 Kafka 集群的元数据已经交由 Controller 集群自治,则在分布式环境下必然要涉及到集群节点的交互,包括集群选主、集群元数据同步等。其中 Kafka 集群原创 2022-01-22 22:44:27 · 3999 阅读 · 0 评论 -
Kafka 3.0 源码笔记(4)-Kafka 服务端对客户端的 Fetch 请求处理
文章目录前言1. Kafka 的文件存储结构2. 来自客户端的 Fetch 请求处理前言在 Kafka 3.0 源码笔记(3)-Kafka 消费者的核心流程源码分析 中笔者介绍了 Kafka 的客户端之一消费者 Consumer 拉取消息的流程,而Kafka 3.0 源码笔记(2)-Kafka 服务端的启动与请求处理源码分析一文则从服务器层面解析了 Kafka 服务端接收请求的关键,本文则将以来自客户端的 Fetch 请求的处理为例,大致分析 Kafka 服务端对请求的业务处理此处之所以强调 来自客原创 2022-01-20 11:38:50 · 3336 阅读 · 0 评论 -
Kafka 3.0 源码笔记(3)-Kafka 消费者的核心流程源码分析
文章目录前言1. 消费者负载均衡的实现2. 源码分析2.1 KafkaConsumer 的初始化2.2 KafkaConsumer 的消息拉取2.2.1 消息拉取的准备及入口2.2.2 消费者于协调器的交互2.2.2.1 协调器定位2.2.2.2 消费者加入消费者组的流程2.2.2.3 消费分区分配方案的同步2.2.2.4 消费者心跳的处理2.2.3 消息的拉取消费前言消费者是 Kafka 的客户端(源码为 Java 实现)之一,其实 Kafka 高性能的重要原因之一就是把负载均衡放在了客户端实现。 通原创 2021-12-26 19:02:08 · 4397 阅读 · 2 评论 -
Kafka 3.0 源码笔记(2)-Kafka 服务端的启动与请求处理源码分析
文章目录前言源码分析1. Kafka 服务端的启动流程2. Kafka 服务端新建连接的处理3. Kafka 服务端请求处理流程前言在 Kafka 3.0 源码笔记(1)-Kafka 服务端的网络通信架构 中笔者介绍了 Kafka 3.0 版本的组件构成,其实由此也可以将本文内容分为三个部分,主要时序如下图所示:Kafka 服务端的启动流程Kafka 服务端新建连接的处理Kafka 服务端请求处理流程源码分析1. Kafka 服务端的启动流程Kafka 服务端的启动由 Kafk原创 2021-12-18 17:03:41 · 2614 阅读 · 1 评论