Kafka源碼解讀——配置文件_Configs(間斷持續更新......)
目錄
- Producer Configs配置
- Consumer Configs配置
- Kafka Connect Configs配置
以下配置中沒有的請查看官網原文:http://kafka.apache.org/documentation/
一、Producer Configs配置
名稱 |
釋義 |
key.serializer |
|
value.serializer |
|
acks |
-
設置爲0,則生產者根本不會等待服務器的任何確認。記錄將立即添加到套接字緩衝區並被視爲已發送。在這種情況下,無法保證服務器已收到記錄,重試配置將不會生效(因爲客戶端通常不知道任何故障)。爲每個記錄返回的偏移量將始終設置爲-1
-
設置爲1,這意味着領導者會將記錄寫入其本地日誌,但不會等待所有追隨者的完全確認。在這種情況下,如果領導者在確認記錄後立即失敗,但在追隨者複製記錄之前,則記錄將丟失。
-
設置爲all,這意味着領隊將等待完整的同步副本集確認記錄。這可以保證只要至少有一個同步副本保持活動狀態,記錄就不會丟失。這是最有力的保證。這相當於ACKS=-1設置。
|
bootstrap.servers |
|
buffer.memory |
- 官方默認大小:33554432字節(32mb)
- producer可用於緩衝等待發送到服務器的記錄的內存總字節數。如果記錄的發送速度超過了它們可以傳遞到服務器的速度,則生產者將阻塞,阻塞時間由ax.block.ms定義,之後將引發異常。
- 此設置應大致等於生產者將使用的總內存,但不是絕對的根據實際傳輸數據定義,因爲並非生產者使用的所有內存都用於緩衝。一些額外的內存將用於壓縮(如果啓用了壓縮)以及維護處理中的請求。
|
compression.type |
|
retries |
|
ssl.key.password |
|
ssl.keystore.location |
|
ssl.keystore.password |
|
ssl.truststore.location |
|
ssl.truststore.password |
|
二、Consumer Configs配置
名稱 |
釋義 |
key.deserializer |
|
value.deserializer |
|
bootstrap.servers |
|
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 |
|
ssl.keystore.location |
|
ssl.keystore.password |
|
ssl.truststore.location |
|
ssl.truststore.password |
|
auto.offset.reset |
- 官方默認值:latest;取值範圍 [latest, earliest, none]
- 如果在Kafka中沒有初始化offet或者服務器上沒有當前offset(例如:該數據已被刪除該怎麼辦?)
- earliest:自動將offset設置爲最早的offset
- latest:自動將offset設置爲最新的offset
- none:如果在consumer組裏面沒有找到之前的offset,則向該consumer拋異常
- anything else:向consumer拋異常
|
|
|
|
|
|
|
三、Kafka Connect Configs配置
名稱 |
釋義 |
config.storage.topic |
|
group.id |
|
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 |
|
topics.regex |
- topic列表的正則表達式,該正則會被編譯成java.util.regex.Pattern,只能指定topic或topic.regex中的一個
|
四、Kafka Streams Configs配置
名稱 |
釋義 |
application.id |
1:默認客戶端ID前綴
2:成員管理組ID
3:日誌更新topic前綴
|
bootstrap.servers |
|
replication.factor |
- 默認值:1
- 流處理應用程序創建的更改日誌topic和重分區topic的複製因子
|
state.dir |
|
cache.max.bytes.buffering |
|
client.id |
用於內部的消費者、生產者和原始消費者的客戶端ID的前綴,格式爲“--streamthread--” |