随笔分类 -  kafka

kafka消费组创建和删除原理
摘要:0.10.0.0版本的kafka的消费者和消费组已经不在zk上注册节点了,那么消费组是以什么形式存在的呢? 1 入口 看下kafka自带的脚本kafka consumer groups.sh,可见脚本调用了kafka.admin.ConsumerGroupCommand 看下Consumer 阅读全文

posted @ 2018-10-09 09:22 吼吼吼的吼 阅读(7576) 评论(0) 推荐(0)

consumer提交offset原理
摘要:1 数据结构 消费者的消费状态是保存在SubscriptionState类中的,而SubscriptionState有个重要的属性那就是assignment保存了消费者消费的partition及其partition的状态 看下TopicPartitionState。TopicPartitionSt 阅读全文

posted @ 2018-10-08 09:05 吼吼吼的吼 阅读(2803) 评论(0) 推荐(0)

producer内存管理分析
摘要:1 概述 kafka producer调用RecordAccumulator append来将消息存到本地内存。消息以TopicPartition为key分组存放,每个TopicPartition对应一个Deque;RcordBatch的消息实际存储在MemoryRecords中;MemoryR 阅读全文

posted @ 2018-10-05 10:29 吼吼吼的吼 阅读(696) 评论(0) 推荐(0)

kafka partiton迁移方法与原理
摘要:在kafka中增加新的节点后,数据是不会自动迁移到新的节点上的,需要我们手动将数据迁移(或者成为打散)到新的节点上 1 迁移方法 kafka为我们提供了用于数据迁移的脚本。我们可以用这些脚本完成数据的迁移。 1.1 生成partiton分配表 1.1.1 创建json文件topic to 阅读全文

posted @ 2018-09-09 17:17 吼吼吼的吼 阅读(2248) 评论(0) 推荐(0)

kafka源码环境搭建
摘要:1. 准备工作 1.1 安装好jdk、scala sdk 1.2 安装好gradle 1.3 本地安装好zookeeper并运行; 这里使用zookeeper 3.3.6版本 2. 下载源码 为了更好的追踪源码和版本管理,我们不去kafka官网下载源码,可以直接去github clone ka 阅读全文

posted @ 2018-06-24 12:14 吼吼吼的吼 阅读(5404) 评论(0) 推荐(0)

kafka指定partiton生产
摘要:kafka发送一个消息的时候需要封装成一个ProducerRecord : 我们来分析下partiton方法: 可以通过在配置中指定“partitioner.class”配置项使用自定义的partitioner,自定义的partitioner需要实现Partitioner接口: 如果没有指 阅读全文

posted @ 2018-06-02 19:20 吼吼吼的吼 阅读(243) 评论(0) 推荐(0)

kafka consumer代码梳理
摘要:kafka consumer是一个单纯的单线程程序,因此相对于producer会更好理解些。阅读consumer代码的关键是理解回调,因为consumer中使用了大量的回调函数。参看 "kafka中的回调函数" 1 整体流程 从KafkaConsumer pollOnce(..)入口来 阅读全文

posted @ 2018-05-19 23:40 吼吼吼的吼 阅读(1972) 评论(0) 推荐(0)

kafka中的回调函数
摘要:kafka客户端中使用了很多的回调方式处理请求。基本思路是将回调函数暂存到ClientRequest中,而ClientRequest会暂存到inFlightRequests中,当返回response的时候,从inFlightRequests中读取对应的ClientRequest,并调用requ 阅读全文

posted @ 2018-05-06 13:37 吼吼吼的吼 阅读(9244) 评论(0) 推荐(0)

kafka生产者网络层总结
摘要:1 层次结构 负责进行网络IO请求的是NetworkClient,主要层次结构如下 ClusterConnectionStates报存了每个节点的状态,以node为key,以node的状态为value;inFlightRequets中保存了每个节点已经发送的请求,但是还没有返回的请求,以 阅读全文

posted @ 2018-04-30 22:21 吼吼吼的吼 阅读(400) 评论(0) 推荐(0)

kafka producer的batch.size和linger.ms
摘要:1.问题 batch.size和linger.ms是对kafka producer性能影响比较大的两个参数。batch.size是producer批量发送的基本单位,默认是16384Bytes,即16kB;lingger.ms是sender线程在检查batch是否ready时候,判断有没 阅读全文

posted @ 2018-04-21 17:20 吼吼吼的吼 阅读(15872) 评论(0) 推荐(2)

kafka producer 源码总结
摘要:kafka producer可以总体上分为两个部分: 1. producer调用send方法,将消息存放到内存中 2. sender线程轮询的从内存中将消息通过NIO发送到网络中 1 调用send方法 其实在调用new KafkaProducer初始化一个producer实例的时候,已经初 阅读全文

posted @ 2018-04-21 15:04 吼吼吼的吼 阅读(684) 评论(0) 推荐(0)

kafka客户端打印日志
摘要:kafka 0.10.0 java客户端使用slf4j作为日志门面,需要我们加入具体的日志实现依赖才能打印日志,日志框架:http://www.cnblogs.com/set cookie/p/8836496.html 1 客户端依赖jar包 使用命令 mvn dependency:tree 阅读全文

posted @ 2018-04-14 23:31 吼吼吼的吼 阅读(5079) 评论(0) 推荐(0)

PRODUCER配置加载
摘要:1.入口 Kafka通过new一个KafkaProducer将配置项进行加载。将用户定义的properties作为参数,构造成一个ProducerConfig对象。 2.ProducerConfig ProducerConfig保存的是生产者的全部配置项,这里包括用户自定义的和默认的配置项。实际上, 阅读全文

posted @ 2018-04-01 12:29 吼吼吼的吼 阅读(292) 评论(0) 推荐(0)

导航