Kafka 原理加強

2021-10-21 01:27:46 字數 1886 閱讀 6202

4.分割槽的目的是為了提高併發讀寫和增加集群的可擴充套件性(後續可以加分割槽/加機器提高集群效能…)

5.分割槽會有副本,副本的作用是為了提高資料的安全性

6.如何確認訊息傳送成功?–使用acks訊息確認應答機制

7.訊息的有序性:kafka只保證從同乙個分割槽消費的訊息,是按照offset,有序的, 不保證多個分區間有序

2.當某個主題的某個分割槽的資料夾下的檔案太大了,就會生成新的segment分段檔案,目的也是為了提高後續的讀效率,注意: 訊息新增到segment分段檔案是追加進去的, 也就是順序寫3.訊息日誌檔案不是一直儲存的,可以根據配置的策略進行自動刪除

4.如果資料足夠多, 新來乙個消費者要從指定的offset去消費訊息,該如何尋找?

比如:要查詢絕對offset為7的message:

5.部分元資料在zk中的儲存

3.消費完如何提交?–由enable.auto.commit引數決定

4.了解–手動提交時可以根據業務自己決定如何提交

//準備乙個集合,存放消費到的資料,集合的size大於一定數量的時候,也就是積攢到一批的時候,才提交偏移量

arraylist

> list =

newarraylist()

;while

(true

)//todo 5.手動提交偏移量

//經過上面的迴圈,list中就有了一批資料,如果list.size>5,就提交偏移量

if(list.

size()

>5)

}try

long lastoffset = partitionrecords.

get(partitionrecords.

size()

-1).

offset()

; consumer.

commitsync

(collections.

singletonmap

(partition,

newoffsetandmetadata

(lastoffset +1)

));}

}}

5.了解-可以訂閱主題進行消費,也可以訂閱主題的指定分割槽進行消費

//todo 3.訂閱主題

"foo"));

//todo 3.訂閱主題的部分分割槽

//手動指定 消費指定分割槽的資料---start

string topic =

"foo"

;topicpartition partition0 =

newtopicpartition

(topic,0)

;topicpartition partition1 =

newtopicpartition

(topic,1)

;consumer.

assign

(arrays.

aslist

(partition0, partition1));

//手動指定 消費指定分割槽的資料---end

while

(true)}

//subscribe方法和assign方法只能選乙個

KAFKA原理簡介

每條訊息在檔案中的位置成為offset 偏移量 offset為long型數字。過後無論是否被消費,都會被清楚。consumer儲存消費資訊的offset。kafka通過partition將日誌內容分散到多個server上,每個partition都會被 當前server儲存,kafka可以配置part...

Kafka複製原理

每個主題都有多個分割槽 每個分割槽都會有自己的多個副本 每個分割槽與自己的副本之間都會有乙個leader 同一主題下的不同分割槽包含的訊息不同 同一條訊息不會出現在多個分割槽中 由於訊息是以可追加的log日誌儲存到分割槽中的,多個分割槽順序寫磁碟的總效率要比隨機寫記憶體還要高 訊息被追加到分割槽日誌...

kafka 原理分析

partition是以檔案的形式儲存在檔案系統中,比如建立乙個名為firsttopic的topic,其中有3個 partition,那麼在kafka的資料目錄 tmp kafka log 中就有3個目錄,firsttopic 0 3,命名規則是 sh kafka topics.sh create z...