会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
爱喝龙井的码农
博客园
首页
新随笔
联系
订阅
管理
2021年2月17日
Kafka源码解析(九)- 内存池设计BufferPool
摘要: 在发送数据的流程中有一部分是要根据批次的大小申请内存,Kafka客户端使用BufferPool来实现ByteBuffer的复用,目的是减少Full Gc的可能性 BufferPool由几个重要的成员组成 free : 是一个ArrayDeque队列,其中缓存了指定大小的ByteBuffer对象 to
阅读全文
posted @ 2021-02-17 15:39 写写代码睡着了
阅读(11)
评论(0)
推荐(0)
2020年11月4日
Kafka源码解析(八)- 高性能数据结构CopyOnWriteMap
摘要: 上一篇介绍了将数据存入RecordAccumulator 这一过程 这段代码是在高并发的情况下运行的,既然如此,就会有线程安全的问题。我们看到作者设计这段代码的时候,并没有在整个方法上加锁,而是采用分段解锁的方式,将性能提升到最高 但是不知道大家有没有注意到获取或创建队列的时候,也就是这行代码 De
阅读全文
posted @ 2020-11-04 00:57 写写代码睡着了
阅读(44)
评论(0)
推荐(0)
2020年11月2日
Kafka源码解析(七)- 发送数据流程(5)
摘要: 本篇介绍下Kafka是如何将消息压入RecordAccumulator对象中的 RecordAccumulator 中的append方法,点进去 步骤一:getOrCreateDeque,获取或创建队列,kafka设计上将发往同一个分区的数据封装成RecordBatch对象,然后将这些对象放入一个队
阅读全文
posted @ 2020-11-02 22:55 写写代码睡着了
阅读(30)
评论(0)
推荐(0)
2020年9月14日
Kafka源码解析(六)- 发送数据流程(4)
摘要: 本篇介绍下 kafka发送数据流程中是如何选择分区的。 点进步骤三这行代码。 我们在调用doSend()方法时会将消息封装下,可以使用指定分区的构造方法 如果我们调用上面的构造函数,指定分区编号,这里就不需要进行分区选择了,如果没有指定,kafka会有两种分区选择的方式,下面解读下这两种选择方式。
阅读全文
posted @ 2020-09-14 22:50 写写代码睡着了
阅读(57)
评论(0)
推荐(0)
2020年9月8日
Kafka源码解析(五)- 发送数据流程(3)
摘要: 本节,浅析Sender线程拉去元数据过程 元数据是由Sender线程来完成的,首先找到Sender线程的run()方法 这里我们看到,Sender线程运行起来之后,第一件干的事就是 从Metadata里面获取Cluster对象,也就是集群元数据信息。但是假如代码第一次进来,获取到的Cluster是没
阅读全文
posted @ 2020-09-08 23:58 写写代码睡着了
阅读(28)
评论(0)
推荐(0)
Kafka源码解析(四)- 发送数据流程(2)
摘要: 上一节介绍了发送数据的大体流程,一共分为八个步骤,本节开始解读几个重要的步骤。 步骤一:等待获取元数据(waitOnMetadata) waitOnMetadata 方法点进去 这段代码块包含一个do while循环。开始的时候,由于代码第一次进来,是获取不到元数据信息的,这时会去等待sender线
阅读全文
posted @ 2020-09-08 00:45 写写代码睡着了
阅读(25)
评论(0)
推荐(0)
2020年9月5日
Kafka源码解析(三)- 发送数据流程(1)
摘要: 这一节,介绍下发送的流程 回到examples 包里面的生产者例子中,在初始化好生产者后,就要调用send方法发送数据了。 一直点到doSend 方法,这里面就是准备发送数据的流程了,一共分为八个步骤。 步骤一:等待更新元数据,要想发送数据,肯定要知道集群元数据信息,waitOnMetadata 方
阅读全文
posted @ 2020-09-05 23:24 写写代码睡着了
阅读(14)
评论(0)
推荐(0)
Kafka源码解析(二)- Metadata对象
摘要: 在初始化生产者的过程中,初始化了一个元数据对象Metadata,下面解读下这个对象。 这个Metadata里面有一个Cluster 对象,这个是我们kafka集群的元数据对象,点进去看一下。 我们看到里面维护了许多数据结构,目的为了方便获取元数据信息,比如获取某个topic有几个分区、某个分区在哪台
阅读全文
posted @ 2020-09-05 22:10 写写代码睡着了
阅读(24)
评论(0)
推荐(0)
2020年9月3日
Kafka源码解析(一)- 初始化生产者
摘要: kafka版本:0.10.1.0 将kafka源码下载下来导入idea后都会看到一个examples包,这个包里面有生产者和消费者的例子,教我们如何使用,个人认为这里面的例子是我们学习源码最好的入口。 这段代码主要做了三件事: 1、初始化分区器 2、读取用户配置的retry.backoff.ms 这
阅读全文
posted @ 2020-09-03 20:03 写写代码睡着了
阅读(17)
评论(0)
推荐(0)
公告
点击右上角即可分享