摘要: 这里纪录一些linux下用到的小技巧,以免遗忘 在linux中经常碰见各种文件处理。最常用的就是替换文件中的某些字符。常见字符替换还是很容易完成。但是有些不可见字符以及ascii编码字符等等都无法直接使用常见方法替换。这里可以用下面的几种方法进行处理 1.sed 方法 2.perl one line 阅读全文
posted @ 2016-09-28 18:45 vv.past 阅读(5245) 评论(0) 推荐(0) 编辑
摘要: 这里主要更新一下kafka 0.10.0版本的message消息格式的变化。 message 的格式在0.10.0的版本里发生了一些变化(相对于0.8.2.1的版本)这里把0.10.0的message的代码分析一下。 message的格式定义在源代码目录message目录里的Message.scal 阅读全文
posted @ 2016-09-06 10:21 vv.past 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 这里主要分析kafka 客户端实现 (代码分析以perl kafka实现为准) kafka客户端分为生产者和消费者,生产者发送消息,消费者获取消息. 在kafka协议里客户端通信中用到的最多的四个协议命令是fetch,fetchoffset,send,metadata.这四个分别是获取消息,获取of 阅读全文
posted @ 2016-08-12 18:13 vv.past 阅读(1556) 评论(0) 推荐(0) 编辑
摘要: 这里主要分析一下message的格式. 一条message的构成由以下部分组成 由上面可看出一个消息的内容部分的起始位置实际上是keyoffset+keysize+valuesizeLength 一条完整的消息由上面几部分组成. 这里是用java实现的一个打印log文件里的offset和对应消息的小 阅读全文
posted @ 2016-08-12 15:00 vv.past 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 这里主要分析FileMessageSet类 这个类主要是管理log消息的内存对象和文件对象的类.源代码文件在log目录下.这个类被LogSegment类代理调用用来管理分片. 下面是完整代码.代码比较简单.就不做过多说明了.这个类是MessageSet抽象类的实现类. 阅读全文
posted @ 2016-08-08 13:43 vv.past 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 这里分析MessageSet类 MessageSet是一个抽象类,定义了一条log的一些接口和常量,FileMessageSet就是MessageSet类的实现类.一条日志中存储的log完整格式如下 offset+message_size+message MessageSet定义log的一般接口的格 阅读全文
posted @ 2016-08-08 12:28 vv.past 阅读(871) 评论(0) 推荐(0) 编辑
摘要: 这里主要介绍log管理,读写相关的类的调用关系的介绍. 在围绕log的实际处理上.有很多层的封装和调用.这里主要介绍一下调用结构和顺序. 首先从LogManager开始. 调用关系简单如下:LogManager->Log->LogSegment->FileMessageSet->ByteBuffer 阅读全文
posted @ 2016-08-08 12:14 vv.past 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 这里分析kafka LogSegment源代码 通过一步步分析LogManager,Log源代码之后就会发现,最终的log操作都在LogSegment上实现.LogSegment负责分片的读写恢复刷新删除等动作都在这里实现.LogSegment代码同样在源代码目录log下. LogSegment是一 阅读全文
posted @ 2016-08-08 11:34 vv.past 阅读(1273) 评论(0) 推荐(0) 编辑
摘要: 这里分析一下message的封装类ByteBufferMessageSet类 ByteBufferMessageSet类的源代码在源代码目录message目录下.这个类主要封装了message,messageset,messageandoffset等类的对象.在Log类中读写log的时候基本上都是以 阅读全文
posted @ 2016-08-04 18:24 vv.past 阅读(925) 评论(0) 推荐(0) 编辑
摘要: 这里分析Log对象本身的源代码. Log类是一个topic分区的基础类.一个topic分区的所有基本管理动作.都在这个对象里完成.类源代码文件为Log.scala.在源代码log目录下. Log类是LogSegment的集合和管理封装.首先看看初始化代码. 上面是Log class初始化的部分.这个 阅读全文
posted @ 2016-08-03 17:47 vv.past 阅读(2348) 评论(0) 推荐(0) 编辑