在Ubuntu系統上配置Kafka時,合理分配系統資源是確保Kafka集群高效運行的關鍵。以下是一些關鍵配置和考慮因素:
Kafka Broker配置
- log.dirs:配置多個日志目錄,建議掛載到不同的物理磁盤,以提高讀寫性能和實現故障轉移。例如:
/home/kafka1,/home/kafka2,/home/kafka3
。
- listeners:配置監聽器以告訴外部連接如何訪問Kafka服務。例如:
PLAINTEXT://0.0.0.0:9091
。
- advertised.listeners:公開Broker的監聽器信息,以便其他Broker和客戶端能夠找到它。例如:
PLAINTEXT://kafka1:9091
。。
- auto.create.topics.enable:建議線上環境設置為false,以防止自動創建Topic。
- log.retention.hours/log.retention.bytes:控制消息數據的保存時間和總磁盤容量。例如:
log.retention.hours=168
表示保存7天數據。。
- message.max.bytes:控制Broker能夠接收的最大消息大小,建議在線上環境中設置一個較大的值。。
JVM配置
- KAFKA_HEAP_OPTS:指定堆大小,例如:
-Xmx4G -Xms4G
。
- KAFKA_JVM_PERFORMANCE_OPTS:指定GC參數,例如:
-XX:+UseG1GC
。。
分區分配策略
- Range分配:默認策略,根據消費者數量和分區數量進行平均分配。
- RoundRobin分配:輪詢分配策略,適用于消費者訂閱Topic相同且追求分區均勻分配的場景。
- Sticky分配:在兼顧分區分配均勻性和穩定性方面展現出獨特的優勢。。
以上配置和建議基于一般的最佳實踐,實際配置可能需要根據具體的業務需求和系統環境進行調整。