在大数据、高并发的系统中,为了突破瓶颈,会将系统进行水平扩展和垂直拆分,形成独立的服务。每个独立的服务背后,可能是一个集群在对外提供服务。这就会碰到一个问题,整个系统是由多个服务(子系统)组成的,数据需要在各个服务中不停流转。如果数据在各个子系统中传输时,速度过慢,就会形成瓶颈,降低整个系统的性能。从而就形成了以Kafka为中心的解决方案!
因为阅读Kafka源码重要性就不言而喻,今天小编就分享一份拼多多Kafka的源码笔记,现已面向大众全面开源!(为了不影响大家的阅读体验,免费获取方式放在了文末!)
这份笔记从Kafka的应用场景、源码环境搭建开始逐步深人,不仅介绍Kafka的核心概念,而且对Kafka生产者、消费者、服务端的源码进行深人的剖析,最后介绍Kafka常用的管理脚本实现,让读者不仅从宏观设计上了解Kafka,而且能够深人到Kafka的细节设计之中。在源码分析的过程中,还穿插了笔者工作积累的经验和对Kafka设计的理解,希望读者可以举一反三, 不仅知其然,而且知其所以然。
第1章快速入门
1.1 Kafka简介
1.2 以Kafka为中心的解决方案
1.3 Kafka核心概念
1.4 Kafka源码环境
第2章生产者
2.1 KafkaProducer 使用示例
2.2 KafkaProducer 分析
- ProducerInterceptors&cProducerInterceptor
- Kafka 集群元数据
- Serializer&Deserializer
- Partitioner
2.3 RecordAccumulator分析
- MemoryR ecords
- RecordBatch
- BufferPool
- RecordAccumulator
2.4 Sender分析
- 创建请求
- KSelector
- InFlightRequests
- MetadataUpdater
- NetworkClient
第3章消费者
3.1 KafkaConsumer 使用示例
3.2 传递保证语义( Delivery guarantee semantic )
3.3 Consumer Group Rebalance设计
3.4 KafkaConsumer 分析
- ConsumerNetworkC lient
- SubscriptionState
- ConsumerCoordinator.
- PartitionAssignor 分析
- Heartbeat 分析
- Rebalance 实现
- offset 操作
- Fetcher
- KafkaConsumer 分析总结
第4章Kafka服务端
4.1 网络层
- Reactor模式
- SocketServer
- AbstractServer Thread
- Acceptor
- Processor
- RequestChannel
4.2 API层
KafkaR equestHandler
KafkaApis
4.3 日志存储
- 基本概念
- FileMessageSet
- ByteBufferMessageSet
- OfsetIndex
- LogSegment
- Log
- LogManager
4.4 DelayedOperationPurgatory 组件
- TimingWheel
- SystemTimer
- Delayed Dperation
- DelayedOperationPurgatory
- DelayedProduce
- DelayedFetch
4.5 副本机制
- 副本
- 分区
- ReplicaManager
4.6 KafkaController
- ControllerChannelManager
- ControllerContext
- ControllerBrokerRequestBatch
- PartitionStateMachine
- PartitionLeaderSelector
- ReplicaStateMachine
- ZooKeeper Listener
- KafkaController 初始化与故障转移
- 处理ContolledShutdownRequest
4.7 GroupCoordinator
- GroupMetadataManager
- GroupCoordinator分析
4.8 身份认证与权限控制
- 配置SASL/PLAIN认证
- 身份认证
- 权限控制
4.9 Kafka 监控
- JMX 简介
- Metrics简介
- Kafka中的Metrics
- Kafka的监控功能
- 监控KSelector的指标
第5章Kafka Tool
5.1 kafka-server-start 脚本
5.2 kafka-topics 脚本
- 创建Topic
- 修改Topic
5.3kafka-preferred-replica-election脚本
5.4 kafka-reassign-partitions 脚本
5.5 kafka-console -producer脚本
5.6 kafka-console-consumer脚本
5.7 kafka-consumer-groups脚本
5.8 DumpLogSegments
5.9 kafka-producer-perf-test 脚本
5.10 kafka-consumer-perf-test脚本
5.11kafka-mirror-maker脚本
总结
大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。
需要免费领取这份Kafka源码笔记的铁汁们,麻烦帮忙转发一下这篇文章+关注我,然后添加小助理vx免费获取!