Kafka架構探險(三) Kafka引數詳解

2021-09-28 13:08:24 字數 3446 閱讀 9160

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個數 消費者組...