目录标题
Kafka 知识体系梳理
一、核心概览
Kafka 作为分布式流处理平台,围绕 高性能、一致性、高可用 构建核心能力,通过消息系统特性解决异步通信需求,凭借架构设计支撑高吞吐与水平扩展。
二、关键特性与设计
(一)为什么高性能?
- partition 并发:基于分区实现并行读写,提升处理效率
- 顺序读写磁盘:规避随机 IO 开销,利用磁盘顺序访问优势
- page cache:借助操作系统页缓存加速数据读写
- 高性能序列化(二进制):减少数据传输体积与解析耗时
- 内存映射:优化文件读写的内存交互,降低系统调用开销
- 无锁化 offset 管理:避免锁竞争,提升并发场景下的 offset 操作效率
- Java NIO 模型:基于非阻塞 IO 实现高效网络通信
(二)一致性保障
- 选举机制:如 Raft 类协议,保障 Leader 节点选举的一致性
- Follower 数据同步:通过
Follower
拉取Leader
数据,维持副本间一致性
(三)高可用设计
- leader 选举:故障时快速重新选主,保障服务连续性
- replica 副本:多副本冗余存储,容忍节点故障
- ISR(In-Sync Replica):维护同步副本集合,确保数据可靠性
三、消息系统价值
为什么使用消息系统?
- 解耦:分离生产端与消费端依赖,降低系统耦合性
- 冗余:多副本存储实现数据容灾
- 扩展性:支持灵活扩展生产者、消费者规模
- 灵活性&峰值处理能力:削峰填谷,应对流量波动
- 可恢复性:基于持久化存储,故障后数据可恢复
- 顺序保证:分区内消息有序,满足业务顺序需求
- 缓冲:暂存消息,平衡生产与消费速率差异
- 异步通信:非阻塞交互,提升系统整体吞吐量
四、架构与组件
(一)Kafka 架构 - 基本组成
- Broker:Kafka 服务实例,负责存储、转发消息
- Topic:消息主题,逻辑上分类管理消息
- Partition:主题分区,实现消息分片存储与并行处理
- Offset:消费位移,标记消费者消费进度
- Replica:副本,保障数据冗余与高可用
- Message:消息实体,承载业务数据
- Producer:生产者,负责发送消息到 Kafka
- Consumer:消费者,订阅并消费 Kafka 消息
- Consumer Group:消费者组,实现消费负载均衡与故障转移
- Zookeeper:(旧版依赖)用于元数据管理、选主等协调操作
(二)Broker 核心模块
1. 网络通信层(SocketServer 相关)
- Acceptor:负责监听并接收客户端连接请求
- Processor:处理网络 IO 事件,转发请求到
RequestChannel
- RequestChannel:请求通道,连接网络层与业务处理层
- KafkaRequestHandlerPool:请求处理线程池,调度
RequestHandler
处理请求
2. 日志存储层(Log 相关)
- LogManager:日志管理器,负责主题分区日志的创建、删除等生命周期管理
- TopicAndPartition:主题 - 分区关联,标识具体日志分片
- LogSegment:日志段,存储一定时间或大小的消息片段
- Log:日志实例,管理多个
LogSegment
,提供读写接口
3. 副本管理(Replica 相关)
- ReplicaManager:副本管理器,协调副本同步、选主等操作
- AR(Assigned Replicas):分配的副本集合,含 Leader 和 Follower
- ISR(In-Sync Replicas):同步副本集合,保障数据一致性
- Replica:副本实例,存储分区数据副本
- Partition:分区实例,关联副本与日志
- ReplicaFetcherThread:副本拉取线程,从 Leader 同步数据
- becomeLeaderOrFollower:副本角色转换逻辑,处理选主后的角色变更
4. 其他关键模块
- OffsetManager:位移管理器,记录消费者
Offset
信息 - KafkaScheduler:定时任务调度器,执行日志清理、副本同步检测等任务
- KafkaApi:业务 API 层,处理各类客户端请求(生产、消费、元数据查询等)
- KafkaHealthcheck:健康检查模块,监控 Broker 状态
- TopicConfigManager:主题配置管理器,维护主题的动态配置
- KafkaController:控制器(新版核心),负责集群元数据管理、选主、故障转移等