在Kafka配置中,有幾個關鍵參數尤為重要,它們可以根據業務需求進行調優,以優化性能、可靠性和可用性。以下是一些最關鍵的參數及其建議值:
吞吐量優先
- num.partitions:分區個數,設置為與消費者的線程數基本相等。
- batch.size:批量提交消息的字節數,建議設置為1M。
- linger.ms:發送間隔時間,建議設置為100ms以上。
- compression.type:壓縮類型,建議使用lz4壓縮。
- acks:應答機制,建議設置為all。
- buffer.memory:內存緩沖區大小,建議設置為64M以上。
延遲優先
- num.partitions:分區個數,設置為與消費者的線程數基本相等。
- num.io.threads:負責寫磁盤的線程數,建議占總核數的50%。
- num.replica.fetchers:副本拉取線程數,建議占總核數的50%的1/3。
- num.network.threads:數據傳輸線程數,建議占總核數的50%的2/3。
- linger.ms:設置為0,即有消息就發送。
- compression.type:設置為none。
- acks:設置為0,異步發送。
可靠性優先
- default.replication.factor:至少設置為3。
- min.insync.replicas:當生產者的ack設置為all時,建議設置為2。
- unclean.leader.election.enable:建議設置為false。
- acks:設置為all。
- retries:重試次數,建議>=3。
可用性優先
- num.partitions:分區個數,設置為與消費者的線程數基本相等。
- num.io.threads:負責寫磁盤的線程數,建議占總核數的50%。
- num.replica.fetchers:副本拉取線程數,建議占總核數的50%的1/3。
- num.network.threads:數據傳輸線程數,建議占總核數的50%的2/3。
- auto.create.topics.enable:建議設置為false。
- unclean.leader.election.enable:建議設置為false。
這些參數的調整需要根據具體的業務場景和需求來進行,以達到最佳的性能和可靠性平衡。