Kafka連接池設置建議
host:port,host:port
),提升集群容錯能力;避免使用單個地址,防止單點故障導致連接失效。order-service-producer
),方便Broker端日志定位問題,便于排查連接異常。client.dns.lookup=use_all_dns_ips
(獲取所有IP地址),云上或SLB場景可配合resolve_canonical_bootstrap_servers_only=true
(僅解析規范主機名),避免DNS緩存問題導致的連接失敗。all
(或-1
),要求所有ISR(同步副本)確認寫入,確保數據不丟失;這是生產環境的強一致性要求。3
(或更大,如5
),配合delivery.timeout.ms
(建議設為request.timeout.ms
的2-4倍,如60000-120000
),處理臨時性故障(如網絡抖動)的重試,避免消息丟失。true
,開啟冪等性,避免重試導致的消息重復;與acks=all
配合使用,是生產環境的最佳實踐。16KB
,建議調大至32KB-128KB
(根據內存情況),增加單批次消息量,減少網絡請求次數,提升吞吐量;但過大的批次會增加延遲。5ms
(Kafka 4.0+),建議設置為10-50ms
,讓批次有更多時間攢滿,提高吞吐量;低延遲場景可設為0-2ms
,但會犧牲少量吞吐。lz4
(兼顧吞吐量與壓縮比,約3-4倍),或zstd
(更高壓縮比,約5-8倍,但CPU開銷略大);開啟壓縮可減少網絡傳輸和磁盤占用,適合高帶寬成本場景。32MB
,建議調大至64MB-128MB
(根據生產者吞吐量),作為生產端消息緩沖池;過小會導致頻繁阻塞(默認max.block.ms=60000
),無法及時發送消息。5
,冪等開啟時必須≤5
(避免消息亂序);建議保持默認,若需更高吞吐且允許少量亂序,可設為10
,但需評估業務影響。500
,建議根據消費者處理能力調整(如100-1000
),控制每次拉取的記錄數;過大會導致內存溢出,過小會增加拉取次數,降低吞吐。5分鐘
,建議設置為消費者處理單條消息的最大時間(如30秒-5分鐘
);若處理時間過長,會觸發重平衡,導致連接斷開。1
,建議調大至1KB-1MB
(如1024
),減少拉取次數;增大該值可提高吞吐量,但會增加延遲。500ms
,建議設置為100-1000ms
,與fetch.min.bytes
配合,平衡延遲與吞吐;過小會導致頻繁拉取,過大則會增加延遲。num.partitions
)設置為消費者線程數的1-2倍(如消費者有10個線程,分區數設為10-20
),優化并行處理能力;副本數(default.replication.factor
)設置為3
,保證高可用性。32GB
內存(用于緩存消息和索引),使用SSD/NVMe
硬盤(減少磁盤I/O瓶頸),多核CPU(提升并發處理能力);網絡帶寬需滿足峰值吞吐量(如1Gbps帶寬支持約10萬條/秒的消息傳輸)。kafka-consumer-groups.sh
)或第三方工具(如Prometheus+Granafa、Datadog),監控連接數、吞吐量、延遲、錯誤率等指標,及時發現連接池瓶頸。buffer.memory
緩解阻塞,調大max.poll.records
提高吞吐),定期進行壓力測試(如使用kafka-producer-perf-test.sh
),驗證配置效果。