Apache Kafka的主要配置文件包括server.properties
(用于broker配置)、producer.properties
(用于生產者配置)和consumer.properties
(用于消費者配置)。以下是一些基本的配置參數及其說明:
Kafka Broker配置參數:
broker.id
:每個broker在集群中的唯一標識,要求是正數。log.dirs
:Kafka數據的存放地址,可以是多個,多個使用逗號分隔即可。port
:server接受客戶端連接的端口,默認6667。zookeeper.connect
:zookeeper集群連接地址,格式如:zookeeper.connect server01:2181,server02:2181,server03:2181
。message.max.bytes
:server可以接受的消息最大尺寸,默認1000000。num.network.threads
:server用來處理網絡請求的線程數,默認3。num.io.threads
:server用來處理請求的I/O線程數,這個線程數至少等于磁盤的個數。background.threads
:用于后臺處理的線程數,例如文件的刪除。queued.max.requests
:在網絡線程停止讀取新請求之前,可以排隊等待I/O線程處理的最大請求個數。host.name
:broker的hostname,如果hostname已經設置的話,broker將只會綁定到這個地址上;如果沒有設置,它將綁定到所有接口,并發布一份到ZK。advertised.host.name
:如果設置,則就作為broker的hostname發往producer、consumers以及其他brokers。advertised.port
:此端口將給與producers、consumers以及其他brokers,它會在建立連接時用到;它僅在實際端口和server需要綁定的端口不一樣時才需要設置。socket.send.buffer.bytes
:SO_SNDBUFF緩存大小,server進行socket連接所用,默認100*1024。socket.receive.buffer.bytes
:SO_RCVBUFF緩存大小,server進行socket連接時所用,默認100 * 1024。socket.request.max.bytes
:server允許的最大請求尺寸;這將避免server溢出,它應該小于Java heap size。num.partitions
:如果創建topic時沒有給出劃分partitions個數,這個數字將是topic下partitions數目的默認數值。log.segment.bytes
:topic partition的日志存放在某個目錄下諸多文件中,這些文件將partition的日志切分成一段一段的;這個屬性就是每個文件的最大尺寸。log.roll.hours
:即使文件沒有到達log.segment.bytes
,只要文件創建時間到達此屬性,就會創建新文件。log.cleanup.policy
:log清除策略,可選值為delete和compact。log.retention.minutes
和log.retention.hours
:每個日志文件刪除之前保存的時間。log.retention.bytes
:每個topic下每個partition保存數據的總量。log.cleaner.enable
:當這個屬性設置為false時,一旦日志的保存時間或者大小達到上限時,就會被刪除;如果設置為true,則當保存屬性達到上限時,就會進行log compaction。log.cleaner.threads
:進行日志壓縮的線程數。log.cleaner.io.max.bytes.per.second
:進行log compaction時,log cleaner可以擁有的最大I/O數目。log.cleaner.io.buffer.size
:log cleaner清除過程中針對日志進行索引化以及精簡化所用到的緩存大小。log.cleaner.io.buffer.load.factor
:進行log cleaning時所需要的I/O chunk尺寸。log.cleaner.backoff.ms
:進行日志是否清理檢查的時間間隔。log.cleaner.min.cleanable.ratio
:這項配置控制log compactor試圖清理日志的頻率。log.cleaner.delete.retention.ms
:保存時間;保存壓縮日志的最長時間;也是客戶端消費消息的最長時間。Kafka Producer配置參數:
bootstrap.servers
:指定Kafka集群的地址,格式為host:port
。key.serializer
和 value.serializer
:分別設置消息鍵和值的序列化方式。acks
:指定生產者發送消息后需要等待的確認數。retries
:指定生產者在發生錯誤時的重試次數。batch.size
:指定生產者在發送批量消息時的批次大小。linger.ms
:指定生產者在發送批量消息時的等待時間。compression.type
:指定消息壓縮類型。max.in.flight.requests.per.connection
:每個連接在未接收到上一個請求的響應前可以發送的請求的個數。buffer.memory
:生產者客戶端中用于緩存消息的緩存區大小。compression.type
:指定消息壓縮類型。Kafka Consumer配置參數:
bootstrap.servers
:與Producer相同,指定Kafka broker地址。group.id
:消費者組的唯一標識符。key.deserializer
和 value.deserializer
:分別設置消息鍵和值的反序列化方式。enable.auto.commit
:指定消費者是否自動提交偏移量。auto.offset.reset
:指定消費者在啟動時如何處理偏移量。max.poll.records
:指定每次拉取的最大記錄數。fetch.max.bytes
:指定每次拉取的最大字節數。session.timeout.ms
:消費者與Kafka集群的超時時間。請注意,以上信息僅供參考,具體配置參數可能會根據Kafka版本和實際需求有所不同。在實際配置時,建議參考官方文檔或咨詢專業人士以確保配置的正確性和系統的穩定性。