Kafka进阶
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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。