kafka Log 原始碼結構和初始化邏輯學習筆記

2021-10-10 04:39:31 字數 1422 閱讀 7163

log 檔案位於core\src\main\scala\kafka\log\log.scala 目錄下。

改檔案定義了10個類和物件:

loglog伴生物件定義一些常量輔助方法。

log 類是log檔案最核心部分。

rollparams

定義控制日誌段是否切分的資料結構,對應的伴生物件也是對應的工廠方法。

logmetricnames

對應log物件的監測指標。

logoffsetsnapshot

封裝分割槽所有位移元資料的容器類。

logreadinfo

封裝讀取日誌資料和返回的元資料。

completedtxn

記錄已完成的事務的元資料,主要用於構建事務索引。

object log
class log(

@volatile

var dir: file,

@volatile

var config: logconfig,

@volatile

var logstartoffset:

long

,@volatile

var recoverypoint:

long

, scheduler: scheduler,

brokertopicstats: brokertopicstats,

val time: time,

val maxproduceridexpirationms:

int,

val produceridexpirationcheckintervalms:

int,

val topicpartition: topicpartition,

val producerstatemanager: producerstatemanager,

logdi***ilurechannel: logdi***ilurechannel)

extends logging with kafkametricsgroup

dir 是日誌所在資料夾路徑,logstartoffset是日誌當前對外可見的最早一條訊息的位移值,這兩個變數都是var 的,可以多執行緒更新。還有一種位移log end offset(leo) ,它是表示日誌下一條待插入訊息的位移值,如下圖所示:

Linux scheduler 排程原始碼初步閱讀

schedule 流程 可排程實體的vruntime load計算 為什麼要先看fork的源 呢?因為在schedule函式裡面一開始我就有點看不懂 cpu smp processor id 按理來說很好理解呀,不就是獲取當前的cpu的id嗎?但是什麼叫做當前?在多處理器的機器上面,當前的定義是什麼...

iscroll原始碼初涉

專案裡面用的是iscroll probe這個版本,具體原因是需要使用定位功能,但是今天學習,還是選軟柿子 iscroll lite 來捏吧。進門第一段 請求動畫幀 var raf window.requestanimationframe window.webkitrequestanimationfr...

wifidog 原始碼初分析(3)

之後 接入裝置 的瀏覽器接收到 wifidog 返回的 302 重定向請求後,會將頁面重定向至 auth server 的 login 頁面,並且在此 url 中會攜帶一些 路由器 閘道器 引數,以及 接入裝置的 mac 位址 和 客戶端訪問的源url 如示例中的 baidu.com 下面幾個步驟就...