Kafka源碼解讀——kafka配置文件_Configs

Kafka源碼解讀——配置文件_Configs(間斷持續更新......)

目錄

  • Producer Configs配置
  • Consumer Configs配置
  • Kafka Connect Configs配置

以下配置中沒有的請查看官網原文:http://kafka.apache.org/documentation/

一、Producer Configs配置

名稱 釋義
key.serializer  
  • key序列化類

value.serializer  
  • value序列化類

acks
  • 設置爲0,則生產者根本不會等待服務器的任何確認。記錄將立即添加到套接字緩衝區並被視爲已發送。在這種情況下,無法保證服務器已收到記錄,重試配置將不會生效(因爲客戶端通常不知道任何故障)。爲每個記錄返回的偏移量將始終設置爲-1

  • 設置爲1,這意味着領導者會將記錄寫入其本地日誌,但不會等待所有追隨者的完全確認。在這種情況下,如果領導者在確認記錄後立即失敗,但在追隨者複製記錄之前,則記錄將丟失。 

  • 設置爲all,這意味着領隊將等待完整的同步副本集確認記錄。這可以保證只要至少有一個同步副本保持活動狀態,記錄就不會丟失。這是最有力的保證。這相當於ACKS=-1設置。 

bootstrap.servers  
  •  用於建立與Kafka羣集的初始連接的主機/端口對列表。客戶機將使用所有服務器,而不管在此處指定用於引導的服務器是什麼,此列表隻影響用於發現完整服務器集的初始主機。此列表的格式應爲host1:port1,host2:port2,…。由於這些服務器只是用於初始連接以發現完整的羣集成員身份(可能會動態更改),因此此列表不需要包含完整的服務器集(但是,如果服務器關閉,您可能需要多個服務器)。 

buffer.memory    
  • 官方默認大小:33554432字節(32mb)
  •  producer可用於緩衝等待發送到服務器的記錄的內存總字節數。如果記錄的發送速度超過了它們可以傳遞到服務器的速度,則生產者將阻塞,阻塞時間由ax.block.ms定義,之後將引發異常。 
  •  此設置應大致等於生產者將使用的總內存,但不是絕對的根據實際傳輸數據定義,因爲並非生產者使用的所有內存都用於緩衝。一些額外的內存將用於壓縮(如果啓用了壓縮)以及維護處理中的請求。 
compression.type  
  •  生產者生成的所有數據的壓縮類型。默認值爲無(即無壓縮)。有效值爲none、gzip、snappy、lz4或zstd。壓縮是整批數據,因此分批的效果也會影響壓縮比(越多分批意味着更好的壓縮)。 壓縮參考:https://www.jianshu.com/p/d69e27749b00
retries
  •  設置一個大於零的值將導致客戶端重新發送任何發送失敗並可能出現暫時性錯誤的記錄。請注意,此重試與客戶端在收到錯誤後重新發送記錄的情況相同。如果不將max.in.flight.requests.per.connection設置爲1,則允許重試可能會更改記錄的順序,因爲如果將兩個批發送到單個分區,而第一個批失敗並重試,但第二個批成功,則第二批中的記錄可能會首先出現。注意:另外,如果delivery.timeout.ms配置的超時在成功確認之前先過期,則在重試次數用完之前,生成請求將失敗。通常,用戶應該不設置此配置,而是使用delivery.timeout.ms來控制重試行爲。 

ssl.key.password  
  •  密鑰存儲文件中私鑰的密碼。這對於客戶是可選的。 

ssl.keystore.location  
  •  密鑰存儲文件的位置。這對於客戶端是可選的,可以用於客戶端的雙向身份驗證。 

ssl.keystore.password    
  • 密鑰存儲文件的存儲密碼。這對於客戶機是可選的,只有在ssl.keystore中才需要。位置配置。

ssl.truststore.location    
  • 信任存儲文件的位置。

ssl.truststore.password  
  • 信任存儲文件的密碼。如果沒有設置密碼,對信任庫的訪問仍然可用,但已禁用完整性檢查。

二、Consumer Configs配置

名稱 釋義
key.deserializer    
  • 同producer,不再解釋
value.deserializer    
  • 同producer,不再解釋
bootstrap.servers    
  • 同producer,不再解釋
fetch.min.bytes    
  • 請求返回的最小數據量,如果請求的數據量不夠這個值,則會繼續請求,超過了請求時間之後,會立即fetch,將此值設置大於1可以提高請求吞吐量,缺點是會有延遲。
group.id    
  • 標識消費者組的唯一字符串,如果消費者使用subscribe(topic)或基於kafka的偏移管理策略,則需要配置該屬性
heartbeat.interval.ms    
  • 用於確保消費者的會話保持活動的狀態,或者在consumer加入、離開組時,保持組內平衡;
  • 值必須低於<session.timeout.ms>,通常是不高於1/3,也可以更小,控制正常的、再平衡的預期時間
max.partition.fetch.bytes
  • 官方默認值:1048576字節(1mb)
  • 服務器返給每個分區的最大數據量,由消費者批量獲取,如果獲取第一個非空分區的第一個批處理記錄大於此值,則會回退,以防止consumer阻塞。
  • 最大批記錄大小由<message.max.bytes>(broker config)或<max.message.bytes>(topic config)
  •  <fetch.max.bytes>用於限制consumer請求的記錄大小
session.timeout.ms
  • Kafka組管理者會檢測consumer超時,consumer定期向broker節點發送心跳錶示它還活着
  • 如果在超時之前broker未收到consumer的心跳,那麼該broker會移除當前consumer,consumer組會重新找一個consumer來消費
  • 注意:此值的範圍爲:<group.min.session.timeout.ms><group.max.session.timeout.ms>之間(broker config)
ssl.key.password
  • 同producer,不再解釋
ssl.keystore.location    
  • 同producer,不再解釋
ssl.keystore.password 
  • 同producer,不再解釋
ssl.truststore.location    
  • 同producer,不再解釋
ssl.truststore.password  
  • 同producer,不再解釋
auto.offset.reset    
  • 官方默認值:latest;取值範圍 [latest, earliest, none]
  • 如果在Kafka中沒有初始化offet或者服務器上沒有當前offset(例如:該數據已被刪除該怎麼辦?)
  1. earliest:自動將offset設置爲最早的offset
  2. latest:自動將offset設置爲最新的offset
  3. none:如果在consumer組裏面沒有找到之前的offset,則向該consumer拋異常
  4. anything else:向consumer拋異常
   
   
   

三、Kafka Connect Configs配置

名稱 釋義
config.storage.topic    
  • 存儲connector的topic name
group.id    
  • 標識woker連接的集羣組的字符串
key.converter    
  • 轉換器類,用於在Kafka連接格式和寫入Kafka的序列化形式之間進行轉換。控制了寫或讀Kafka的消息中的鍵的格式,因爲它獨立於connectors,所以它允許任何connectors使用任何序列化格式。常見的例子由Json、Avro。
offset.storage.topic    
  • 存儲connectors偏移量的Kafka Topic的名稱
status.storage.topic    
  • 存儲connector和task狀態的Kafka Topic名稱
value.converter    
  • <key.converter>類似,這個設置value的轉換器類。
bootstrap.servers    
  • Kafka集羣主機:端口列表
  • 注意:不需要全部都配上,因爲只是爲了初始化連接,獲取整個集羣的數據,但爲了保險起見,最好多配幾個,防止部分主機宕機。
heartbeat.interval.ms    
  • 默認值:3000ms
  • 用於確保worker的會話保持活動的狀態,或者新的worker加入、離開組時,保持組內平衡;
  • 值必須低於<session.timeout.ms>,通常是不高於1/3,也可以更小,控制正常的、再平衡的預期時間
rebalance.timeout.ms    
  • 默認值:60000ms
  • 再平衡開始後,允許每個woker加入工作組的最大時間,基本上是對所有任務刷新數據量和提交偏移量所需的時間限制,超時之後,worker會從組內刪除,導致提交offset失敗。
session.timeout.ms    
  • 默認值:10000ms
  • 用於檢測worker故障導致的超時,worker定時發送心跳,表示自己還活着,如果該worker會話超時之前未收到心跳,那麼worker將會從組內移除,並進行再平衡
  • 注意:此值的範圍爲:<group.min.session.timeout.ms>和<group.max.session.timeout.ms>之間
ssl.key.password      
ssl.keystore.location      
ssl.keystore.password    
ssl.truststore.location      
ssl.truststore.password    
client.dns.lookup    
  • 控制客戶端如何使用DNS查找。
  • use_all_dns_ips:當查找返回一個主機的多個IP地址時,將在連接失敗之前;用於引導和通知servers
  • resolve_canonical_bootstrap_servers_only:沒一個都將被解析,單獨作爲一個規範名稱列表
connections.max.idle.ms  
  • 默認值:540000ms
  • 配置多長時間之後關閉空閒連接
receive.buffer.bytes    
  • 讀取數據時使用的TCP接收緩衝區(SO_RCVBUF)的大小,如果值爲-1,則用系統默認值。

(1)Sources Connectors Configs配置

名稱 釋義
name
  • 全局唯一的名稱
connector.class    
  • 連接器的類別名,必須是org.apache.kafka.connect.connector.Connector的子類,如果是org.apache.kafka.connect.file.FileStreamSinkConnector,可以用全名,可以用FileStreamSink,可以用FileStreamSinkConnector,簡寫。
tasks.max    
  • 此連接器使用的最大任務數
errors.retry.timeout  
  • 默認值:0
  • 失敗重連的最長持續時間,值爲-1表示無限重試
errors.retry.delay.max.ms  
  • 連續重試嘗試之間的最長持續時間,一旦達到這個限制,抖動將增加到延遲,以防止出現羣體問題(不太理解,估計就是怕影響到整個Kafka集羣吧)
errors.tolerance    
  • 默認值:none
  • 連接操作期間的容錯行爲,none表示任何錯誤都將導致連接任務失敗,all表示跳過有問題的記錄,
errors.log.enable    
  • 默認值:false
  • 值爲true,將每個錯誤、失敗操作的詳細信息、有問題的記錄,都將寫入連接程序的日誌裏。默認爲false,因此只有不可容忍的錯誤纔會報錯。
errors.log.include.messages  
  • 默認值:false
  • 是否將導致失敗的連接記錄包含到日誌中,默認是false,將組織記錄key、value、header寫入日誌文件,儘管topic和分區號仍然會被log

(2)Sink Connectors Configs配置

名稱 釋義
name
  • 全局唯一的標識
connector.class    
  • 連接器類別名,必須是org.apache.kafka.connect.connector.Connector的子類,可以寫全名、FileStreamSink、FileStreamSinkConnector,使配置更簡單
tasks.max    
  • 連接最大任務數
topics    
  • 使用的topic列表,用','分隔
topics.regex    
  • topic列表的正則表達式,該正則會被編譯成java.util.regex.Pattern,只能指定topic或topic.regex中的一個

四、Kafka Streams Configs配置

 

名稱 釋義
application.id    
  • 集羣內流程需唯一標識,用處有3個:

1:默認客戶端ID前綴

2:成員管理組ID

3:日誌更新topic前綴

bootstrap.servers    
replication.factor    
  • 默認值:1
  • 流處理應用程序創建的更改日誌topic和重分區topic的複製因子
state.dir    
  • 默認值:/tmp/kafka-streams    
cache.max.bytes.buffering   
  • 所有線程之間緩存的最大字節數
client.id     用於內部的消費者、生產者和原始消費者的客戶端ID的前綴,格式爲“--streamthread--”

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章