Kafka生產者配置在Debian上的注意事項
kafka1:9092,kafka2:9092
),建議至少配置2個地址以實現高可用。若集群規模較大,可通過此參數讓生產者自動發現集群中的其他Broker。org.apache.kafka.common.serialization.StringSerializer
),確保生產者發送的數據能被Broker正確解析。acks=1
(默認)表示僅等待Leader分區確認,性能較好但可能存在數據丟失風險;acks=all
(或-1
)表示等待所有ISR(同步副本)分區確認,可靠性最高,但會增加延遲。根據業務需求選擇(如金融場景建議acks=all
)。retries=3
)和重試間隔(如retry.backoff.ms=1000
),可應對臨時性網絡故障或Broker不可用問題,避免消息丟失。enable.idempotence=true
),可避免因網絡重試導致的重復消息,確保消息的“精確一次”語義(需Kafka 0.11及以上版本支持)。linger.ms=100
)。增加該值可提高批次填充率,提升吞吐量,但會增加消息延遲(適用于對延遲不敏感的場景)。compression.type=snappy
或lz4
),可減少網絡傳輸的數據量和Broker的存儲壓力。snappy
壓縮速度快、CPU開銷小,適合對延遲敏感的場景;lz4
壓縮率更高,適合對帶寬敏感的場景。buffer.memory=64M
)。若生產者發送速率超過Broker處理速率,緩存滿會導致發送阻塞,需根據業務消息量調整(建議64M以上)。receive.buffer.bytes
和send.buffer.bytes
),提高網絡傳輸效率。server.properties
配置文件是否有語法錯誤。bootstrap.servers
地址正確,防火墻未阻止9092端口(可通過telnet kafka1 9092
測試連通性)。batch.size
和linger.ms
)、啟用壓縮(compression.type=snappy
)、調整生產者緩存(buffer.memory=64M
),或升級Broker硬件(如使用SSD)。