目录
第一章 Kafka概述与核心价值
1.1 消息队列的演进与Kafka的诞生
消息队列的三大核心功能(解耦、削峰、异步)
Kafka的设计哲学:高吞吐、分布式、持久化
与RabbitMQ、RocketMQ的对比分析
1.2 Kafka的核心应用场景
实时数据管道(如日志采集、用户行为追踪)
事件驱动架构(EDA)的基石
流处理平台(Kafka Streams、Flink集成)
1.3 Kafka生态全景图
核心组件:Broker、ZooKeeper、Producer、Consumer
周边生态:Connect、Streams、KSQL、MirrorMaker
第二章 Kafka核心概念与架构解析
2.1 核心概念深度剖析
Topic:逻辑消息分类单元
Partition:并行处理的秘密(分区策略详解)
Offset:消息的唯一标识与消费者定位
Replica:ISR机制与数据高可用保障
Consumer Group:水平扩展与负载均衡
2.2 Kafka架构设计精要
分布式Commit Log存储机制
生产者-存储层-消费者三级解耦
数据持久化策略(顺序写盘、零拷贝)
ZooKeeper的角色演变(KIP-500去ZK化)
第三章 Kafka环境搭建与配置
3.1 单机部署实战
# 下载解压
wget https://archive.apache.org/dist/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -xzf kafka_2.13-3.6.0.tgz
# 启动ZooKeeper(Kafka 3.0+内置)
bin/zookeeper-server-start.sh config/zookeeper.properties
# 启动Kafka Broker
bin/kafka-server-start.sh config/server.properties
3.2 集群部署最佳实践
server.properties关键配置:
broker.id=1
listeners=PLAINTEXT://host:9092
log.dirs=/data/kafka-logs
num.partitions=3
default.replication.factor=2
min.insync.replicas=1
3.3 Docker & Kubernetes部署
# docker-compose.yml示例
version: '3'
services:
zookeeper:
image: zookeeper:3.8.0
kafka:
image: confluentinc/cp-kafka:7.3.0
depends_on: [zookeeper]
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
第四章 Kafka API深度使用
4.1 生产者API与消息保障
// Java生产者示例(Exactly-Once语义)
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("enable.idempotence", "true");
props.put("transactional.id", "prod-1");
Producer<String, String> producer = new KafkaProducer<>(props);
producer.initTransactions();
try {
producer.beginTransaction();
producer.send(new ProducerRecord<>("orders", "key", "value"));
producer.commitTransaction();
} catch (ProducerFencedException e) {
producer.close();
}
4.2 消费者API与位移管理
# Python消费者示例(手动提交)
from kafka import KafkaConsumer
consumer = KafkaConsumer(
'user_events',
bootstrap_servers='localhost:9092',
group_id='analytics-group',
enable_auto_commit=False
)
for msg in consumer:
process_message(msg.value)
consumer.commit()
4.3 Admin API运维操作
// 创建Topic(3分区2副本)
AdminClient admin = AdminClient.create(props);
admin.createTopics(Collections.singleton(
new NewTopic("logs", 3, (short) 2)
));
第五章 生产环境运维实践
5.1 监控指标体系
关键监控项:
Broker: UnderReplicatedPartitions, ActiveControllerCount
Producer: RecordSendRate, RequestLatency
Consumer: RecordsLag, CommitRate
5.2 日志管理与数据清理
# 按时间保留策略
log.retention.hours=168
# 按大小保留策略
log.retention.bytes=1073741824
# 清理策略
log.cleanup.policy=delete
5.3 安全加固方案
SASL/SCRAM认证配置
SSL加密传输
ACL权限控制
第六章 性能调优黄金法则
6.1 生产者优化
batch.size(16KB-1MB)
linger.ms(5-100ms)
compression.type(snappy/lz4/zstd)
6.2 Broker优化
num.io.threads=8
num.network.threads=3
log.flush.interval.messages=10000
6.3 消费者优化
fetch.min.bytes=1
max.poll.records=500
多线程消费模型
第七章 常见疑难问题排错
7.1 消息丢失场景
生产者未收到ACK
Broker刷盘策略不当
消费者未提交offset
7.2 重复消费问题
生产者重试导致消息重复
消费者提交offset失败
解决方案:幂等处理、事务消息
7.3 集群脑裂问题
ZooKeeper会话超时
网络分区隔离
恢复方案:优先保障分区一致性
第八章 压力测试与基准报告
8.1 测试环境规划
3 Broker集群(16核/32GB/NVMe SSD)
万兆网络环境
8.2 生产者压测
bin/kafka-producer-perf-test.sh \
--topic test \
--num-records 1000000 \
--record-size 1024 \
--throughput -1 \
--producer-props bootstrap.servers=localhost:9092
8.3 消费者压测
bin/kafka-consumer-perf-test.sh \
--topic test \
--bootstrap-server localhost:9092 \
--messages 1000000
8.4 性能瓶颈分析
网络带宽限制(单分区吞吐上限)
磁盘IOPS瓶颈
CPU密集型操作(压缩/加密)
第九章 Kafka源码解析进阶
9.1 网络层设计
Reactor模式实现(SocketServer核心类)
请求处理全流程解析
9.2 存储引擎揭秘
分段日志(LogSegment)
索引文件(OffsetIndex/TimeIndex)
页缓存优化技巧
9.3 副本同步机制
Leader/Follower状态机
LEO与HW更新逻辑
副本故障转移流程
第十章 Kafka未来演进
10.1 KRaft模式(去ZooKeeper化)
共识算法改进
控制器架构重构
10.2 Tiered Storage分层存储
冷热数据分离策略
与对象存储集成
10.3 流处理能力增强
KStreams与KSQL演进
与Flink深度整合