kafka提供很多的引數:broker引數、topic引數、producer引數、consumer引數等,方便我們對kafka的效能做調整,本博文就來歸納總結下常見的引數引數的說明是基於kafka 2.12-2.3.0版本
詳細可以參考官網
broker端的引數在kafka目錄下的config/server.properties
檔案中
引數名稱
備註說明
broker.id
kafka的唯一標誌,全域性唯一,預設是-1,如果不指定,則自動生成,也是全域性唯一
log.dirs
指定了kafka持久化訊息的目錄;可以是多個值,以逗號隔開;設定多個目錄,可以提高系統的吞吐量
zookeeper.connect
kafka依賴的zookeeper的ip和port;可以是zookeeper集群,以逗號隔開
listeners
broker***,主要用於client連線broker使用,格式:協議://ip:port,協議://ip:port,協議包括:plaintext/ssl/sasl_ssl等,如果不指定,則預設所有的client都能連線broker
advertised.listeners
和listeners類似,主要用於laas環境下,在多網絡卡的環境中,可以設定該引數值提供給外網的client訪問
log.retention.
控制訊息資料留存的時間,同時設定優先ms,預設留存時間是7d
log.retention.bytes
控制訊息日誌儲存的大小,超過該值的大小,則kafka會自動清理該分割槽的過期日誌端檔案,預設值是1073741824,值為-1時,表示不會根據訊息的大小來刪除訊息日誌
num.network.threads
控制broker端在後台用於處理網路請求的執行緒數,預設是3
num.io.threads
控制broker端處理磁碟io的執行緒數,預設是8
message.max.bytes
kafka接收最大訊息的大小,預設是977kb
log.segment.bytes
topic的分割槽是以一堆segment檔案儲存的,這個控制每個segment的大小,會被topic建立時的指定引數覆蓋
log.retention.check.interval.ms
週期性檢查是否有日誌符合刪除的條件,預設值是300s
num.recovery.threads.per.data.dir
kafka broker啟動的過程中會載入此節點上所有topic的log檔案,如果資料量非常大會導致載入時間過長,通過修改該值可以加快載入的速度,預設值是1
unclean.leader.election.enable
是否允許非isr中的副本被選舉為leader,如果設定為true的話,broker端可能因日誌截斷而造成訊息丟失
replication.factor
設定主題的副本數,一般使用default.replication.factor
如果將broker引數看作是全域性引數設定,那麼topic引數就是區域性引數設定,引數名稱和broker中的引數名稱是一致的,不過在topic中設定了,會覆蓋broker中的引數設定,常見的有以下幾種:
引數名稱
備註說明
message.max.bytes
覆蓋全域性的 message.max.bytes,即為每個topic指定不同的最大訊息的大小
retention.bytes
覆蓋全域性的log.retention.bytes 每個topic設定不同的訊息留存大小
訊息生產者傳送訊息到kafka指定的topic中,所以producer端的引數大多跟topic和訊息有關
引數名稱
備註說明
key.serializer
訊息序列化,可以指定系統已經提供的序列化方式,也可以自定義序列化方式 ,自定義需要實現org.apache.kafka.common.serialization.serializer介面,引數值是序列化處理器的全路徑名
value.serializer
跟key.serializer一樣
acks
控制producer生產訊息的永續性,值範圍有0、1、all
buffer.memory
指定producer端用於快取訊息的緩衝區大小,單位是位元組,預設是32mb
compression.type
retries
訊息重試的次數
batch.size
producer端批量傳送訊息的批大小
request.timeout.ms
broker響應producer端的超時時間大小,預設是30s
max.block.ms
記憶體緩衝區在填滿時,producer處於阻塞狀態,並停止接收新的訊息而不是丟擲異常
max.in.flight.requests.per.connection
限制了producer在單個broker鏈結上能否傳送的未響應請求的數量,如果設定成1,則可以保證訊息的順序性
引數名稱
備註說明
group.id
指定consumer group 的名字
key.deserializer
為訊息的key反序列化,也可以自定義,需要實現org.apache.kafka.common.serialization.deserializer介面
value.deserializer
為訊息體反序列化,跟key.deserializer類似
session.timeout.ms
consumer group檢測組內成員傳送崩潰的時間(coordinator檢測失敗的時間)
max.poll.interval.ms
consumer處理邏輯最大的時間
auto.offset.reset
指定了無位移或位移移界(即consumer要消費的訊息的位移不在當前訊息日誌的合理區間範圍)時kafka的應對策略,有三個值:earliest、latest、none
enable.auto.commit
指定consumer是否自動提交位移
fetch.max.bytes
指定consumer端單次獲取資料的最大位元組數,若訊息的內容很大,則該值應該調更大點,否則這個訊息無法被消費,預設是52428800
max.poll.records
控制單次poll呼叫返回的最大訊息數,預設是500條
heartbeat.interval.ms
coordinator要開啟新一輪的rebalance時,該引數控制consumer group的成員何時得知新的rebalance,該值必須要小於session.timeout.ms
connections.max.idle.ms
kafka定義關閉空閒socket的時間間隔,預設是9分鐘
Kafka基礎 Kafka架構
目錄kakfa 架構 kafka最初是由linkedin公司採用scala語言開發的乙個多分割槽 多副本並且基於zookeeper協調的分布式訊息系統,現在已經捐獻給了apache 會。目前kafka已經定位為乙個分布式流式處理平台,它以 高吞吐 可持久化 可水平擴充套件 支援流處理等多種特性而被廣...
Kafka學習(四) Kafka架構詳解
1 生產者 api 2 消費者 api 說明 kafka訊息保留在磁碟上,並在集群內複製以防止資料丟失 不能提高資料的讀取效率 consumer group 每乙個consumer屬於乙個特定的consumer group 可以為每個consumer指定 groupname broker kafka...
kafka學習二 kafka基礎架構
kafka基礎架構圖如下 生產者負責向某個topic傳送訊息,發訊息的時候可以指定分割槽 topic包含多個partition,每個partition又有leader和follower,leader和follower在不同的broker上。建立topic的時候副本數不能大於broker個數 消費者組...