kafka
文章平均质量分 93
Anur
这个作者很懒,什么都没留下…
展开
-
Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaSelector
NioSelector和KafkaSelector有什么区别?先说结论,KafkaSelector(org.apache.kafka.common.network.selector)是对NioSelector(java.nio.channels.Selector)的进一步封装。回想一下NioSelector,它参与了IO中的哪些过程?1、创建一个通道,并将通道注册到NioSelector上...原创 2018-07-20 18:21:36 · 1289 阅读 · 0 评论 -
Kafka源码剖析 —— 网络I/O篇 —— 浅析KafkaChannel、NetworkReceive、Send
一、SocketChannel和KafkaChannel有什么区别?上篇文章说道KafkaSelector在创建一个连接的时候和普通的nioSelector并没有什么不同,它是基于nioSelector的封装。我们知道创建连接的一系列操作都是由Channel去完成,而KafkaChannel实际上就是对它的进一步封装: KafkaChannel不仅封装了SocketChannel...原创 2018-08-07 10:29:23 · 1961 阅读 · 1 评论 -
仿照Kafka,实现一个简单的监听器 + 适配器吧!
前言不同于Spring中复杂的实现,在Kafka中,对于Listener和对应的Adaptor,都十分的简单与简洁。下面我们就以Kafka的实现作为参考,简单说说如何去实现一个监听器与适配器。一、监听器1.1 从 Kafka RequestFuture<\T> 简单看看监听器的实现我们可以看到,在这个RequestFuture类中,有一个 addListener 方法,...原创 2018-09-03 18:25:16 · 1804 阅读 · 0 评论 -
Kafka源码剖析 —— 生产者消息追加中的优秀设计与大体流程
Kafka生产者的消息发生大体需要经过以下这个流程。其中消息的追加包含以下几个组件。我们在KafkaProducer中调用send方法发送一个消息,在消息追加步骤,最终是将消息添加到了ByteBuffer中。一、KafkaProducer1.1、拦截器的实现我们发现在send的时候,如果存在拦截器,则调用onSend方法。 @Override publ...原创 2018-09-06 15:31:42 · 1071 阅读 · 0 评论 -
Kafka源码剖析 —— 生产者消息发送流水线上的大体流程
一、唤醒Selector上篇文章说到,消息是怎么被生产出来,简单来说,就是消息被追加到了RecordAccumulator中,以ByteBuffer的形式存了下来。那么在消息添加到ByteBuffer中后,后续的步骤又是怎么样的呢?首先上篇文章提到了Kafka追加消息时加锁的粒度,是一个Deque<RecordBatch> dq,我们根据topic(tp)来获取到要发往这个...原创 2018-09-12 20:56:55 · 931 阅读 · 0 评论