kafka
沙滩上的拖鞋
分享前沿的技术、架构。
展开
-
kafka-日志段LogSegment管理操作-源码学习笔记
背景前面一篇文章已经说了日志段和日志的关系,日志通过ConcurrentSkipListMap 保存所有日志段对象,他是线程安全的,健值是可排序的。今天我们来探讨下日志段管理功能。1、增加日志Log 类中定义了添加日志段的方法addSegment.def addSegment(segment: LogSegment): LogSegment = this.segments.put(segment.baseOffset, segment)通过源码可以看出,实质上就是调用ConcurrentSki原创 2020-11-09 11:32:09 · 431 阅读 · 0 评论 -
kafka Log高水位管理操作-源码学习笔记
高水位管理操作定义:@volatile private var highWatermarkMetadata: LogOffsetMetadata = LogOffsetMetadata(logStartOffset)根据定义可以看出,1、highWatermarkMetadata是可变的,并且通过volatile 保证它线程之间的可见性。2、高水位值的初始值是 Log Start Offset 的值。3、类型是LogOffsetMetadata 。LogOffsetMetadata 类源码:原创 2020-11-02 22:34:35 · 562 阅读 · 0 评论 -
kafka Log 源码结构和初始化逻辑学习笔记
Log 源码结构Log 文件位于core\src\main\scala\kafka\log\Log.scala 目录下。改文件定义了10个类和对象:LogAppendInfoLogAppendInfo类保存了一组写入消息的各种元数据信息;LogAppendInfo伴生对象定义一些工厂方法,用于创建特定的LogAppendInfo实例。LogLog伴生对象定义一些常量辅助方法。Log 类是Log文件最核心部分。RollParams定义控制日志段是否切分的数据结构,对应的伴生对象也是对应的工原创 2020-11-02 18:15:38 · 223 阅读 · 0 评论 -
kafka日志段LogSegment-源码学习笔记
kafka日志结构概述kafka 日志在磁盘上的组织结构如下:kafka日志由多个日志段组成,每个日志段会在磁盘上创建一组文件,包括消息日志文件(.log),位移索引文件(.index),时间戳索引文件(.timeindex),以及终止事务文件(.txnindex),该文件只在使用索引的情况下创建。一般情况下,一个kafka主题有很多分区,每个分区对应一个Log对象,在物理磁盘上对应一个子目录,比如你创建了两个分区的主题test-topic,在磁盘上就会创建两个子目录test-topic-0和tes原创 2020-11-02 13:55:50 · 351 阅读 · 0 评论 -
kafka源码思维导图
kafka源码思维导图kafka源码全景图从功能上讲,Kafka 源码分为四大模块。服务器端源码:实现 Kafka 架构和各类优秀特性的基础。Java 客户端源码:定义了与 Broker 端的交互机制,以及通用的 Broker 端组件支撑代码。Connect 源码:用于实现 Kafka 与外部系统的高性能数据传输。Streams 源码:用于实现实时的流处理功能。kafka服务端源码思维导图服务端源码的思维导图如下:...原创 2020-10-30 16:57:21 · 302 阅读 · 0 评论