一: kafka檔案組成
基本組成:
1- broker 節點,多個broker構成乙個集群
2- topic 對訊息進行歸類
3- producer 生產者
4- comsumer 消費者
5- consumergroup 消費組
topic的組成:
1- partition 物理上資料儲存的概念,乙個topic包含多個partition,每個partition內部是有序的;每個partition是乙個目錄;
2- segment 乙個partition包含多個segment,包含兩種檔案.index和.log。
這兩個檔案的命令規則為:partition全域性的第乙個segment從0開始,後續每個segment檔名為上乙個segment檔案最後一條訊息的offset值,數值大小為64位,20位數字字元長度,沒有數字用0填充,如下:
00000000000000000000.index
00000000000000000000
.log
00000000000000170410
.index
00000000000000170410
.log
00000000000000239430
.index
00000000000000239430.log
index索引檔案儲存大量的元資料,log資料檔案儲存大量的訊息。
partition內部讀取資料的流程為(例如讀取offset=170418的訊息):
1- 首先查詢segment檔案。確認資料儲存在00000000000000170410.index和00000000000000170410.log這兩個檔案中。
2- 到index檔案中查詢,log資料存貯的位置資訊。
3- 從log日誌中讀取所需日誌資訊。
二:資料可靠性和永續性保證
1- producer端
request.required.acks引數進行配置,可靠性級別為:
1(預設) producer寫到kafka中,收到leader的反饋資訊後,下確認其寫入成功。leader宕機,會丟失資料。
0 producer端不會收到任何的反饋資訊,資料可靠性很低。
-1 producer端需要確認leader和follower都反饋成功,才認為寫入成功。和min.insync.replicas引數(最小同步副本數,必須大於等於2)一起使用。利用副本冗餘資訊來確保資料不會丟失。但是可以會重複傳輸。
2- comsumer端
producer.type=sync一定要設定成同步的方式。
consumer先讀取訊息並處理,在commit。這種方式可以保證至少一次;
consumer 先讀取訊息,再commit,在處理,這種方式會丟失資料;
3- 自定義實現,快取訊息去重
consumer保持無狀態和冪等性就可以了
Kafka檔案的儲存機制
同乙個topic下有多個不同的partition,每個partition為乙個目錄,partition命名的規則是topic的名稱加上乙個序號,序號從0開始。每乙個partition目錄下的檔案被平均切割成大小相等 預設乙個檔案是500兆,可以手動去設定 的資料檔案,每乙個資料檔案都被稱為乙個段 s...
Kafka檔案的儲存機制
同乙個topic下有多個不同的partition,每個partition為乙個目錄,partition命名的規則是topic的名稱加上乙個序號,序號從0開始。每乙個partition目錄下的檔案被平均切割成大小相等 預設乙個檔案是500兆,可以手動去設定 的資料檔案,每乙個資料檔案都被稱為乙個段 s...
Kafka檔案的儲存機制
同乙個topic下有多個不同的partition,每個partition為乙個目錄,partition命名的規則是topic的名稱加上乙個序號,序號從0開始。每乙個partition目錄下的檔案被平均切割成大小相等 預設乙個檔案是500兆,可以手動去設定 的資料檔案,每乙個資料檔案都被稱為乙個段 s...