在Linux Kafka配置中,以下是一些重要的参数及其说明:
Broker端参数
- broker.id:每个Broker都需要有一个标识符,使用broker.id来表示。它的默认值是0,也可以被设置成其他任意整数。这个值在整个Kafka集群里必须是唯一的。
- listeners:告诉外部连接者要通过什么协议访问指定主机名和端口开放的Kafka服务。
- advertised.listeners:和listeners相比多了个advertised,表示宣称的、公布的,即这组监听器是Broker用于对外发布的。
- log.dirs:指定Broker使用的若干个文件目录路径。这是非常重要的参数,必须由你亲自指定。
- zookeeper.connect:用于保存broker元数据的Zookeeper地址。
- num.partitions:指定新创建的主题将包含多少个分区。
- auto.create.topics.enable:是否允许自动创建Topic,建议是false,避免出现写错了topic名字自动创建了奇怪的topic。
- unclean.leader.election.enable:是否允许Unclean Leader选举,建议设置为false,以保证数据一致性。
- log.retention.ms:控制一条消息数据被保存多长时间,默认使用log.retention.hours参数来配置时间,默认值为168小时,即一周。
- log.retention.bytes:指定Broker为消息保存的总磁盘容量大小。
- message.max.bytes:控制Broker能够接收的最大消息大小。
Topic级别参数
- retention.ms:规定了该Topic消息被保存的时长。
- retention.bytes:规定了要为该Topic预留多大的磁盘空间。
- max.message.bytes:决定了Kafka Broker能够正常接收该Topic的最大消息大小。
JVM参数
- KAFKA_HEAP_OPTS:指定堆大小,例如:
-Xms6g -Xmx6g
。 - KAFKA_JVM_PERFORMANCE_OPTS:指定GC参数,例如:
-server -XX:UseG1GC -XX:MaxGCPauseMillis20 -XX:InitiatingHeapOccupancyPercent35
。
这些参数覆盖了从Broker的基本配置到与Zookeeper的交互,再到Topic的管理和数据持久化的各个方面。在配置Kafka时,根据实际需求和集群规模调整这些参数是非常重要的。