在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分配:在兼顾分区分配均匀性和稳定性方面展现出独特的优势。。
以上配置和建议基于一般的最佳实践,实际配置可能需要根据具体的业务需求和系统环境进行调整。