Kafka-0.10源码解读

Posted 中琦2513

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka-0.10源码解读相关的知识,希望对你有一定的参考价值。

前言

其实干程序员这么些年来,一直有一个愿望想写本书,但是一直没实现,一开始是想着是因为自己没时间,后来想想也不是说没时间,可能还是感觉水平有限。为了给写书做准备,最近打算写一个专栏,专栏的要求就稍微低一些,能坚持写完的概率也就会大一些。所以最近挑了从Kafka的源码角度去写一个专栏。

 

选择写Kafka源码剖析的理由

1、Kafka是大数据里面难度较大,而且使用广泛的一个技术,倒不是说使用起来难度大,而是说使用过程中容易出问题,但是生产又对其稳定性要求高。通过剖析其里面的源码可以帮助大家深刻理解Kafka的原理,便于大家去解决生产中的问题。
2、Kafka的源码的质量是我看过的大数据的开源产品里面质量最好的。其代码质量远超于hadoop,Spark等产品。整体代码阅读起来难度也不大,而且清晰。最关键的是在里面可以学到较多的架构的知识,这些知识在一般的架构课里面是学不到的。还可以偷偷的告诉大家,里面的有些代码漂亮的代码,可以直接复制粘贴到你的项目里。

 

源码解析概述

在正式分析源码之前先说明一下此套专栏分析源码的思路。
本次分析源码是按照这个思路去分析的:

  1. 生产者生产数据的流程
  2. 服务端存储数据的流程
  3. 消费端消费数据的流程
    阅读源码对很多同学来说是个难题,此次我们使用画图讲解,场景驱动的方式去阅读源码,尽可能的把Kafka的源码剖析清楚。

 

生产者生产数据的流程

在这个流程里,我们分析数据生成的整个流程,可以学习到工业级的项目里是如何处理粘包和拆包问题的,可以学习到如何通过内存池的设计减少GC压力的,可以学习到是如何设计优秀的数据结构来提高代码性能的。

 

服务端存储数据的流程

这个流程里我们会分析,服务端是如何接受数据的,网络是如何架构的,数据是如何存储的,副本之间是如何管理的,元数据是如何管理的,集群是如何管理的等。里面我们可以学习到Kafka为了实现高并发,高性能的目的是如何架构项目的,这是这个项目的一大亮点。

 

消费端消费数据的流程

其实之前的分析清楚了以后再去分析这个流程就比较简单了,这个流程里面我们重点关注消费者是如何实现负载均衡的。

 

 

第一部分:Producer源码解析

《01 Kafka源码深度剖析-前言》

《02 Kafka源码深度剖析-源码阅读环境搭建》

《03 Kafka源码深度剖析-源码分析思路》

《04 Kafka源码深度剖析-从一个demo开始》

《05 Kafka源码深度剖析-KafkaProducer初始化》

《06 Kafka源码深度剖析-KafkaProducer元数据管理》

《07 Kafka源码深度剖析-Producer核心流程初探》

《08 Kafka源码深度剖析-KafkaProducer加载元数据》

《09 Kafka源码深度剖析-选择合适的分区》

《10 Kafka源码深度剖析-RecordAccumulator封装消息流程初探》

《11 Kafka源码深度剖析-提高性能设计的数据结构》

《12 Kafka源码深度剖析-RecordAccumulator封装消息流程详解》

《13 Kafka源码深度剖析-RecordAccumulator高性能代码设计总结》

《14 Kafka源码深度剖析-sender线程发送消息流程初探》

《15 Kafka源码深度剖析-batch发送的条件》

《16 Kafka源码深度剖析-筛选可以发送消息的Broker》

《17 Kafka源码深度剖析-Kafka网络设计》

《18 Kafka源码深度剖析-KafkaProducer会发送消息吗》

《19 Kafka源码深度剖析-KafkaProducer终于与Broker建立上连接了》

《20 Kafka源码深度剖析-KafkaProducer终于发送请求了》

《21 Kafka源码深度剖析-KafkaProducer处理粘包问题的完美方案》

《22 Kafka源码深度剖析-KafkaProducer处理拆包问题的教科书代码》

《23 Kafka源码深度剖析-KafkaProducer是如何处理暂存状态的响应消息的》

《24 Kafka源码深度剖析-KafkaProducer最终如何处理响应》

《25 Kafka源码深度剖析-响应被处理了以后内存是如何处理的?》

《26 Kafka源码深度剖析-消息有异常是如何处理的?》

《27 Kafka源码深度剖析-消息发送超时了是如何处理的?》

《28 Kafka源码深度剖析-请求长时间没响应如何处理》

《29 Kafka源码深度剖析-生产者源码精华总结》

 

 

第二部分:Broker端源码解析

《30 Kafka源码深度剖析-观察Kafka源码的包》

《31 Kafka源码深度剖析-Acceptor线程是如何启动的?》

《32 Kafka源码深度剖析-用于处理请求连接的Processor是如何启动的?》

《33 Kafka源码深度剖析-Processor线程是如何接收请求的?》

《34 Kafka源码深度剖析-Processor线程是如何处理completedReceives里的请求的?》

《35 Kafka源码深度剖析-requestQueue队列里的请求是如何被处理的?》

《36 Kafka源码深度剖析-Request是如何被处理的?》

《37 Kafka源码深度剖析-服务端发送响应的准备工作》

《38 Kafka源码深度剖析- 响应消息是如何发送给客户端的?》

《39 Kafka源码深度剖析-支持超高并发的Kafka网络设计鉴赏》

《40 Kafka源码深度剖析-ReplicaManager写数据入口初探》

《41 Kafka源码深度剖析-LogManager是什么?》

《42 Kafka源码深度剖析-LogManager启动后干什么?》

《43 Kafka源码深度剖析-Log对象的append总流程窥探》

《44 Kafka源码深度剖析-如何用内存映射写稀松索引?》

《45 Kafka源码深度剖析-如何基于os cache写消息?》

《46 Kafka源码深度剖析-Kafka的一条消息的格式》

未完待续...

 

第一部分:Consumer端源码解析

待更......

请持续关注......

 

最后,这是西瓜老师的简述 Kafka 源码解析的专栏。各位请关注。大牛生产,必属精品。

作者:西瓜老师爱大数据
链接:
https://www.jianshu.com/u/d7cd0519e90a
来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

以上是关于Kafka-0.10源码解读的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 0.10问题点滴

Kafka 0.10 KafkaConsumer流程简述

Kafka 0.10 KafkaConsumer流程简述

scala spark-streaming整合kafka (spark 2.3 kafka 0.10)

使用 - -zookeeper 标志列出所有 Kafka 0.10 主题,而无需访问 Zookeeper

Retrofit2源码解读