2.3 Kafka配置参数详解
在2.2节配置部署了Kafka集群的各种模式。Kafka的核心配置文件是server.properties,现在我们对这个配置文件中的每个参数进行详细的说明,具体内容如下。
• broker.id
每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响Consumers的消息情况。
• num.network.threads
broker处理消息的最大线程数,在一般情况下不需要去修改。
• num.io.threads
broker处理磁盘IO的线程数,其数值应该大于硬盘数。
• socket.send.buffer.bytes
socket的发送缓冲区,socket的调优参数为SO_SNDBUFF。
• socket.receive.buffer.bytes
socket的接收缓冲区,socket的调优参数为SO_RCVBUFF。
• socket.request.max.bytes
socket请求的最大数值,防止服务器端的内存溢出。message.max.bytes必然要小于socket.request.max.bytes,会被topic创建时的指定参数覆盖。
• log.dirs
Kafka数据的存放地址,多个地址用逗号分隔,例如,/data/kafka-logs-1,/data/kafka-logs-2。
• num.partitions
是每个Topic的分区个数,若在Topic创建时没有指定,则会被Topic创建时的指定参数覆盖。
• num.recovery.threads.per.data.dir
在启动恢复日志和关闭刷盘日志时每个数据目录的线程的数量,其默认值为1。
• offsets.topic.replication.factor
副本数或备份因子,其默认值为3。
• transaction.state.log.replication.factor
事务主题的副本因子。
• log.retention.hours
日志保存时间(hours|minutes),默认为7天(168小时)。超过这个时间会根据policy处理数据。无论bytes和minutes哪个先达到都会触发。
• log.segment.bytes
控制日志segment文件的范围,超出该范围则追加到一个新的日志segment文件(-1表示没有限制)。
• log.retention.check.interval.ms
日志片段文件的检查周期,查看它们是否达到了删除策略的设置(log.retention.hours或log.retention.bytes)。
• zookeeper.connect
ZooKeeper集群的地址,可以是多个地址,多个地址之间用逗号分隔。
• zookeeper.connection.timeout.ms
指定消费者将offset更新到ZooKeeper中的时间。注意,offset更新时基于的是time而不是基于每次获得的消息。一旦更新ZooKeeper发生异常并重启,将可能拿到已经拿到的消息,并连接ZooKeeper的超时时间。
• group.initial.rebalance.delay.ms
这是一个新增的参数。对用户来说,这个改进最直接的效果之一就是新增了一个broker配置:group.initial.rebalance.delay.ms,其默认时间是3秒。用户需要在server.properties文件中自行将其修改为想要配置的值。这个参数的主要效果就是让Kafka推迟空消费组接收到成员加入请求后,立即开启rebalance。在实际使用时,假设你预估所有Consumer组成员加入需要在10s内完成,那么就可以将该参数设置为10 000。