Kafka架构探险(三)——Kafka参数详解

Kafka提供很多的参数:broker参数、topic参数、producer参数、consumer参数等,方便我们对kafka的性能做调整,本博文就来归纳总结下常见的参数

参数的说明是基于Kafka 2.12-2.3.0版本

详细可以参考官网

broker参数

broker端的参数在Kafka目录下的config/server.properties文件中

参数名称备注说明
broker.idkafka的唯一标志,全局唯一,默认是-1,如果不指定,则自动生成,也是全局唯一
log.dirs指定了kafka持久化消息的目录;可以是多个值,以逗号隔开;设置多个目录,可以提高系统的吞吐量
zookeeper.connectkafka依赖的zookeeper的ip和port;可以是zookeeper集群,以逗号隔开
listenersbroker监听器,主要用于client连接broker使用,格式:协议://ip:port,协议://ip:port,协议包括:PLAINTEXT/SSL/SASL_SSL等,如果不指定,则默认所有的client都能连接broker
advertised.listeners和listeners类似,主要用于laas环境下,在多网卡的环境中,可以设置该参数值提供给外网的client访问
log.retention.{hours/minutes/ms}控制消息数据留存的时间,同时设置优先ms,默认留存时间是7d
log.retention.bytes控制消息日志保存的大小,超过该值的大小,则kafka会自动清理该分区的过期日志端文件,默认值是1073741824,值为-1时,表示不会根据消息的大小来删除消息日志
num.network.threads控制broker端在后台用于处理网络请求的线程数,默认是3
num.io.threads控制broker端处理磁盘IO的线程数,默认是8
message.max.byteskafka接收最大消息的大小,默认是977kb
log.segment.bytestopic的分区是以一堆segment文件存储的,这个控制每个segment的大小,会被topic创建时的指定参数覆盖
log.retention.check.interval.ms周期性检查是否有日志符合删除的条件,默认值是300s
num.recovery.threads.per.data.dirkafka broker启动的过程中会加载此节点上所有topic的log文件,如果数据量非常大会导致加载时间过长,通过修改该值可以加快加载的速度,默认值是1
unclean.leader.election.enable是否允许非ISR中的副本被选举为leader,如果设置为true的话,broker端可能因日志截断而造成消息丢失
replication.factor设置主题的副本数,一般使用default.replication.factor

topic参数

如果将broker参数看作是全局参数设置,那么topic参数就是局部参数设置,参数名称和broker中的参数名称是一致的,不过在topic中设置了,会覆盖broker中的参数设置,常见的有以下几种:

参数名称备注说明
message.max.bytes覆盖全局的 message.max.bytes,即为每个topic指定不同的最大消息的大小
retention.bytes覆盖全局的log.retention.bytes 每个topic设置不同的消息留存大小

producer参数

消息生产者发送消息到kafka指定的topic中,所以producer端的参数大多跟topic和消息有关

参数名称备注说明
key.serializer消息序列化,可以指定系统已经提供的序列化方式,也可以自定义序列化方式 ,自定义需要实现org.apache.kafka.common.serialization.Serializer接口,参数值是序列化处理器的全路径名
value.serializer跟key.serializer一样
acks控制producer生产消息的持久性,值范围有0、1、all
buffer.memory指定producer端用于缓存消息的缓冲区大小,单位是字节,默认是32MB
compression.type消息压缩的类型,默认是none,值范围:GZIP、Snappy、LZ4
retries消息重试的次数
batch.sizeproducer端批量发送消息的批大小
request.timeout.msbroker响应producer端的超时时间大小,默认是30s
max.block.ms内存缓冲区在填满时,producer处于阻塞状态,并停止接收新的消息而不是抛出异常
max.in.flight.requests.per.connection限制了producer在单个broker链接上能否发送的未响应请求的数量,如果设置成1,则可以保证消息的顺序性

consumer参数

参数名称备注说明
group.id指定consumer group 的名字
key.deserializer为消息的key反序列化,也可以自定义,需要实现org.apache.kafka.common.serialization.Deserializer接口
value.deserializer为消息体反序列化,跟key.deserializer类似
session.timeout.msconsumer group检测组内成员发送崩溃的时间(coordinator检测失败的时间)
max.poll.interval.msconsumer处理逻辑最大的时间
auto.offset.reset指定了无位移或位移移界(即consumer要消费的消息的位移不在当前消息日志的合理区间范围)时kafka的应对策略,有三个值:earliest、latest、none
enable.auto.commit指定consumer是否自动提交位移
fetch.max.bytes指定consumer端单次获取数据的最大字节数,若消息的内容很大,则该值应该调更大点,否则这个消息无法被消费,默认是52428800
max.poll.records控制单次poll调用返回的最大消息数,默认是500条
heartbeat.interval.mscoordinator要开启新一轮的rebalance时,该参数控制consumer group的成员何时得知新的rebalance,该值必须要小于session.timeout.ms
connections.max.idle.msKafka定义关闭空闲Socket的时间间隔,默认是9分钟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值