Kafka-0.10源码解读
Posted 中琦2513
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka-0.10源码解读相关的知识,希望对你有一定的参考价值。
前言
其实干程序员这么些年来,一直有一个愿望想写本书,但是一直没实现,一开始是想着是因为自己没时间,后来想想也不是说没时间,可能还是感觉水平有限。为了给写书做准备,最近打算写一个专栏,专栏的要求就稍微低一些,能坚持写完的概率也就会大一些。所以最近挑了从Kafka的源码角度去写一个专栏。
选择写Kafka源码剖析的理由
1、Kafka是大数据里面难度较大,而且使用广泛的一个技术,倒不是说使用起来难度大,而是说使用过程中容易出问题,但是生产又对其稳定性要求高。通过剖析其里面的源码可以帮助大家深刻理解Kafka的原理,便于大家去解决生产中的问题。
2、Kafka的源码的质量是我看过的大数据的开源产品里面质量最好的。其代码质量远超于hadoop,Spark等产品。整体代码阅读起来难度也不大,而且清晰。最关键的是在里面可以学到较多的架构的知识,这些知识在一般的架构课里面是学不到的。还可以偷偷的告诉大家,里面的有些代码漂亮的代码,可以直接复制粘贴到你的项目里。
源码解析概述
在正式分析源码之前先说明一下此套专栏分析源码的思路。
本次分析源码是按照这个思路去分析的:
- 生产者生产数据的流程
- 服务端存储数据的流程
- 消费端消费数据的流程
阅读源码对很多同学来说是个难题,此次我们使用画图讲解,场景驱动的方式去阅读源码,尽可能的把Kafka的源码剖析清楚。
生产者生产数据的流程
在这个流程里,我们分析数据生成的整个流程,可以学习到工业级的项目里是如何处理粘包和拆包问题的,可以学习到如何通过内存池的设计减少GC压力的,可以学习到是如何设计优秀的数据结构来提高代码性能的。
服务端存储数据的流程
这个流程里我们会分析,服务端是如何接受数据的,网络是如何架构的,数据是如何存储的,副本之间是如何管理的,元数据是如何管理的,集群是如何管理的等。里面我们可以学习到Kafka为了实现高并发,高性能的目的是如何架构项目的,这是这个项目的一大亮点。
消费端消费数据的流程
其实之前的分析清楚了以后再去分析这个流程就比较简单了,这个流程里面我们重点关注消费者是如何实现负载均衡的。
第一部分:Producer源码解析
《05 Kafka源码深度剖析-KafkaProducer初始化》
《06 Kafka源码深度剖析-KafkaProducer元数据管理》
《07 Kafka源码深度剖析-Producer核心流程初探》
《08 Kafka源码深度剖析-KafkaProducer加载元数据》
《10 Kafka源码深度剖析-RecordAccumulator封装消息流程初探》
《12 Kafka源码深度剖析-RecordAccumulator封装消息流程详解》
《13 Kafka源码深度剖析-RecordAccumulator高性能代码设计总结》
《14 Kafka源码深度剖析-sender线程发送消息流程初探》
《16 Kafka源码深度剖析-筛选可以发送消息的Broker》
《18 Kafka源码深度剖析-KafkaProducer会发送消息吗》
《19 Kafka源码深度剖析-KafkaProducer终于与Broker建立上连接了》
《20 Kafka源码深度剖析-KafkaProducer终于发送请求了》
《21 Kafka源码深度剖析-KafkaProducer处理粘包问题的完美方案》
《22 Kafka源码深度剖析-KafkaProducer处理拆包问题的教科书代码》
《23 Kafka源码深度剖析-KafkaProducer是如何处理暂存状态的响应消息的》
《24 Kafka源码深度剖析-KafkaProducer最终如何处理响应》
《25 Kafka源码深度剖析-响应被处理了以后内存是如何处理的?》
《27 Kafka源码深度剖析-消息发送超时了是如何处理的?》
第二部分:Broker端源码解析
《31 Kafka源码深度剖析-Acceptor线程是如何启动的?》
《32 Kafka源码深度剖析-用于处理请求连接的Processor是如何启动的?》
《33 Kafka源码深度剖析-Processor线程是如何接收请求的?》
《34 Kafka源码深度剖析-Processor线程是如何处理completedReceives里的请求的?》
《35 Kafka源码深度剖析-requestQueue队列里的请求是如何被处理的?》
《36 Kafka源码深度剖析-Request是如何被处理的?》
《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源码解读的主要内容,如果未能解决你的问题,请参考以下文章
scala spark-streaming整合kafka (spark 2.3 kafka 0.10)