欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Kafka 2.7 集群参数介绍

最编程 2024-05-02 12:48:36
...

Kafka配置集群时涉及到诸多参数,了解这些参数是使用好Kafka的前提,本文做个备忘以便后续查阅。

Kafka Server配置参数

listeners

格式:协议名称://主机名:端口号
告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。

advertised.listeners

格式:协议名称://主机名:端口号
区别于listeners,表明这个broker是用于对外发布的。

auto.create.topics.enable

默认值:true
是否允许自动创建topic,即当生产者或消费者指定的Topic不存在时,是否允许自动创建。为了命名规范,应考虑将其设置为false。

unclean.leader.election.enable

默认值:false
是否允许不在ISR集合中的副本参与leader选举,为了防止数据丢失,应设为false。据说这个默认值在有些版本的Kafka中不一样,需要额外关注下。

auto.leader.rebalance.enable

默认值:true
这个配置与broker的负载均衡有关。若broker故障无法对外提供服务,则该broker上的分区将转移到其他可用的broker上,该分区的leader副本也随之转移。当一台broker的leader副本过多,将导致其压力过大,因此Kafka默认当其leader副本超过指定的比例leader.imbalance.per.broker.percentageauto.leader.rebalance.enable为true时,将触发换leader的操作。因为换leader成本较高,推荐将其设置为false。

log.retention.hoursminutes|ms

默认值:168小时即一周
指定数据留存时间。从优先级上来说 ms 设置最高、minutes 次之、hours 最低。

log.retention.bytes

默认值:1073741824即1GB
指定Broker为消息保存的总磁盘容量大小。

num.partitions

默认值:1
新建topic默认的分区数量。

default.replication.factor

默认值:1
默认创建topic的副本数,建议修改为>=3的数来避免数据丢失。

offsets.topic.replication.factor

默认值:1
与位移主题相关的副本因子,为了提高数据持久性建议设置>1的值。

min.insync.replicas

默认值:1
表示消息至少要被写入到多少个副本才算是“已提交”,调大该值可以提升消息持久性,建议设置1<min.insync.replicas<default.replication.factor的值。

zookeeper.connect

zookeeper连接字符串。格式形如:zk1:2181,zk2:2181,zk3:2181zk1:2181,zk2:2181,zk3:2181/kafka1(kafka1为chroot字符串,用于标识kafka集群)

num.network.threads

默认值:3
服务器用于处理网络请求的网络线程数。该参数为动态参数,可用于临时提高消息的处理能力。

num.io.threads

默认值:8
服务器用于执行网络请求的io线程数。该参数为动态参数,可用于临时提高消息的处理能力。

num.replica.fetchers

默认值:1
follower拉取leader副本消息的线程数

Topic参数

Topic参数会覆盖Kafka默认参数,用于根据实际业务进行调整。

创建topic时添加设置

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.ms=15552000000 --config max.message.bytes=5242880

修改topic

bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760

retention.ms

默认值:604800000ms即7天
topic消息保存时长。

retention.bytes

默认值:1073741824byte即1GB
topic消息总磁盘空间。

compression.type

默认值:producer
topic级别的压缩类型,允许的压缩算法为gzipsnappylz4zstd,此外也允许不压缩uncompressed或保留生产者的压缩格式producer

JVM 参数(Java8)

推荐使用Java8及以上的JDK;内存推荐至少设置为6g;建议使用G1垃圾回收器,因为其性能更好,能使full gc较少。

export KAFKA_HEAP_OPTS=--Xms6g --Xmx6g
export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
bin/kafka-server-start.sh config/server.properties