摘要: 上一节相信你不光学会ArrayList构造函数的知识,更学会了先脉络后细节、连蒙带猜的思想。在之后的几节中,你将学会ArrayList常用方法的源码原理。学完之后,你将不会再被ArrayList的面试题问倒了,更可以得心应手的使用ArrayList。 今天这一节,你主要可以学到以下几点: Array 阅读全文
posted @ 2021-10-15 17:39 _繁茂 阅读(161) 评论(0) 推荐(1) 编辑
摘要: 为了让广大工程师们更好的提升个人技术能力和思想,我将开通一个大专栏《成长记》系列,会包含Java架构和大数据从底层技术到源码原理的分享,敬请关注! 无论作为Java程序员还是大数据工程师的你,工作时间久了,可能很多底层和基础技术已经还给你的大学老师或者80%已经丢在脑后了。比如你可能已经不记得网络模 阅读全文
posted @ 2021-10-15 16:10 _繁茂 阅读(208) 评论(0) 推荐(1) 编辑
摘要: 上一节我们主要分析了RecordAccumulator通过BufferPool申请内存的源码原理,在之前的分析中,在KafkaProducer发送消息时,把消息放入内存缓冲区中主要分为了三步。如下: 而且之前我们主要分析了前两步的代码,如下注释所示: public RecordAppendResul 阅读全文
posted @ 2021-10-11 23:35 _繁茂 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 之前三节我们主要分析了KafkaProducer是如何将消息放入到内存缓冲区的。 上面的逻辑只是Accumulator.append()的一段核心逻辑而已,还记得之前我们分析过的KafkaProducerHelloWorld的整体逻辑么? 之前分析的代码逻辑如下图所示: 从最开始配置解析,消息对象R 阅读全文
posted @ 2021-10-11 22:28 _繁茂 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 上一节我们分析到如何将消息放入内存缓冲器主要分三步,如下图所示: 我们重点分析了getOrCreateDeque()方法,它主要创建了如下数据结构,如下所示: 这一节我们继续向下分析,看看如何通过BufferPool申请内存空间NIO的多块内存ByteBuffer的。 BufferPool的创建 内 阅读全文
posted @ 2021-10-09 21:58 _繁茂 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 之前我们分析了Producer的配置解析、组件分析、拉取元数据、消息的初步序列化方式、消息的路由策略。如下图: 这一节我们继续分析发送消息的内存缓冲器原理—RecordAccumulator.append()。 如何将消息放入内存缓冲器的? 在doSend中的,拉取元数据、消息的初步序列化方式、消息 阅读全文
posted @ 2021-10-07 13:39 _繁茂 阅读(184) 评论(0) 推荐(0) 编辑
摘要: Kafka成长记的前4节我们通过KafkaProducerHelloWorld分析了Producer配置解析、组件组成、元数据拉取原理。 但KafkaProducerHelloWorld发送消息的代码并没有分析完,我们分析了如到了如下图所示的位置: 接下来,我们继续往下分析,这一节我们主要分析下发送 阅读全文
posted @ 2021-10-07 08:46 _繁茂 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 上一节结尾,我们总结道: 初始化KafkaProducer时并没有去拉取元数据,但是创建了Selector组件,启动了Sender线程,select阻塞等待请求响应。由于还没有发送任何请求,所以初始化时并没有去真正拉取元数据。 真正拉取元数据是在第一次send方法调用时,会唤醒唤醒Selector之 阅读全文
posted @ 2021-10-06 09:37 _繁茂 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 上一节我们分析了Producer的核心组件,我们得到了一张关键的组件图。你还记得么? 简单概括下上面的图就是: 创建了Metadata组件,内部通过Cluster维护元数据 初始化了发送消息的内存缓冲器RecordAccumulator 创建了NetworkClient,内部最重要的是创建了NIO的 阅读全文
posted @ 2021-10-06 08:28 _繁茂 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 上一节我们主要从HelloWorld开始,分析了Kafka Producer的创建,重点分析了如何解析生产者配置的源码原理。 public KafkaProducer(Properties properties) { this(new ProducerConfig(properties), null 阅读全文
posted @ 2021-10-06 07:26 _繁茂 阅读(236) 评论(0) 推荐(0) 编辑