Kafka请求参数

kafka版本: 2.12-3.3.2

<kafka_home>/config/server.properties配置文件

#broker的全局唯一编号,不能重复,只能是数字。
broker.id=0
#============线程数配置===========
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的线程数量
num.io.threads=8
#============缓冲配置=============
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#============数据配置=============
#kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/home/tools/kafka/kafka_2.12-3.3.2/data
#topic在当前broker上的分区个数
num.partitions=1
#各个消费者偏移量位置默认是在某一个节点的topic中保存的,为防止该broker宕掉无法获取offset信息,可配置在每个broker中都进行保存,配置文件中配置
# topic的offset的备份份数,默认时1个副本,开发环境推荐3以上
offsets.topic.replication.factor=1
# 设置保存offset偏移量的topic分区数
offsets.topic.num.partitions=3
# 事务主题的复制因子(设置更高推荐3以确保可用性)。 内部主题创建将失败,直到群集大小满足此复制因素要求。
transaction.state.log.replication.factor=1
# 覆盖事务主题的min.insync.replicas配置,推荐2
transaction.state.log.min.isr=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#===============刷入磁盘规则================
#接收的消息缓存达到多大开始刷入磁盘
#log.flush.interval.messages=10000
#接收的消息延迟时间达到多久开始刷入磁盘
#log.flush.interval.ms=1000
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#删除存留设置,配合segment文件使用,删除只会删除整个segment,并不是删除segment文件中的部分数据
#log.retention.bytes=1073741824
#每个segment文件的大小,默认最大1G
log.segment.bytes=1073741824
# 检查过期数据的时间,默认5分钟检查一次是否数据过期
log.retention.check.interval.ms=300000
#配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=node1:2181,node2:2181,node3:2181/kafka
#zookeeper连接超时时间
zookeeper.connection.timeout.ms=18000
#延迟初始消费者重新平衡的时间(以毫秒为单位)开发测试用0, 线上环境推荐用3000
group.initial.rebalance.delay.ms=0

Broker重要参数 配置文件路径为 config/server.properties

参数名称描述
replica.lag.time.max.msISR中,如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值,默认30s。
auto.leader.rebalance.enable默认是true。 自动Leader Partition 平衡。
leader.imbalance.per.broker.percentage默认是10%。每个broker允许的不平衡的leader的比率。如果每个broker超过了这个值,控制器会触发leader的平衡
leader.imbalance.check.interval.seconds默认值300秒。检查leader负载是否平衡的间隔时间。
log.segment.bytesKafka中log日志是分成一块块存储的,此配置是指log日志划分 成块的大小,默认值1G。
log.index.interval.bytes默认4kb,kafka里面每当写入了4kb大小的日志(.log),然后就往index文件里面记录一个索引
log.retention.hoursKafka中数据保存的时间,默认7天。
log.retention.minutesKafka中数据保存的时间,分钟级别,默认关闭
log.retention.msKafka中数据保存的时间,毫秒级别,默认关闭
log.retention.check.interval.ms检查数据是否保存超时的间隔,默认是5分钟
log.retention.bytes默认等于-1,表示无穷大。超过设置的所有日志总大小,删除最早的segment。
log.cleanup.policy

默认是delete,表示所有数据启用删除策略;

如果设置值为compact,表示所有数据启用压缩策略。
num.io.threads默认是8。负责写磁盘的线程数。整个参数值要占总核数的50%。
num.replica.fetchers副本拉取线程数,这个参数占总核数的50%的1/3
num.network.threads默认是3。数据传输线程数,这个参数占总核数的50%的2/3
log.flush.interval.messages强制页缓存刷写到磁盘的条数,默认是long的最大值,9223372036854775807。一般不建议修改,交给系统自己管理。
log.flush.interval.ms每隔多久,刷数据到磁盘,默认是null。一般不建议修改,交给系统自己管理。

生产者参数列表 可以直接在代码中设置

new KafkaProducer<>(conf) conf中直接put添加
参数名称描述
bootstrap.servers生产者连接集群所需的broker地址清单。例如node1:9092,node2:9092,node3:9092
key.serializer和value.serializer指定发送消息的key和value的序列化类型。一定要写全类名
buffer.memoryRecordAccumulator缓冲区总大小,默认32m
batch.size缓冲区一批数据最大值,默认16k。适当增加该值,可以提高吞吐量,但是如果该值设置太大,会导致数据传输延迟增加
linger.ms如果数据迟迟未达到batch.size,sender等待linger.time之后就会发送数据。单位ms,默认值是0ms,表示没有延迟。生产环境建议该值大小为5-100ms之间
acks

0:生产者发送过来的数据,不需要等数据落盘应答。

1:生产者发送过来的数据,Leader收到数据后应答。

-1(all):生产者发送过来的数据,Leader+和isr队列里面的所有节点收齐数据后应答
max.in.flight.requests.per.connection允许最多没有返回ack的次数,默认为5,开启幂等性要保证该值是 1-5的数字
retries

当消息发送出现错误的时候,系统会重发消息。retries表示重试次数。默认是int最大值,2147483647。

如果设置了重试,还想保证消息的有序性,需要设置

MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION=1否则在重试此失败消息的时候,其他的消息可能发送成功了
retry.backoff.ms两次重试之间的时间间隔,默认是100ms
enable.idempotence是否开启幂等性,默认true,开启幂等性
compression.type

生产者发送的所有数据的压缩方式。默认是none,也就是不压缩。

支持压缩类型:none、gzip、snappy、lz4和zstd

消费者参数列表 可以直接在代码中设置

new Kafka<>(conf) conf中直接put添加
bootstrap.servers向Kafka集群建立初始连接用到的host/port列表
key.deserializer和value.deserializer指定接收消息的key和value的反序列化类型。一定要写全类名
group.id标记消费者所属的消费者组。
enable.auto.commit默认值为true,消费者会自动周期性地向服务器提交偏移量。
auto.commit.interval.ms如果设置了 enable.auto.commit 的值为true, 则该值定义了消费者偏移量向Kafka提交的频率,默认5s
auto.offset.reset

当Kafka中没有初始偏移量或当前偏移量在服务器中不存在(如,数据被删除了),该如何处理?

earliest:自动重置偏移量到最早的偏移量。

latest:默认,自动重置偏移量为最新的偏移量。

none:如果消费组原来的偏移量不存在,则向消费者抛异常。

anything:向消费者抛异常。

offsets.topic.num.partitions__consumer_offsets的分区数,默认是50个分区
heartbeat.interval.ms

Kafka消费者和coordinator之间的心跳时间,默认3s

该条目的值必须小于 session.timeout.ms ,也不应该高于 session.timeout.ms 的1/3
session.timeout.msKafka消费者和coordinator之间连接超时时间,默认45s
max.poll.interval.ms消费者处理消息的最大时长,默认是5分钟。超过该值,该消费者被移除,消费者组执行再平衡
fetch.min.bytes默认1个字节。消费者获取服务器端一批消息最小的字节数
fetch.max.wait.ms默认500ms。如果没有从服务器端获取到一批数据的最小字节数。该时间到,仍然会返回数据
fetch.max.bytes

默认Default:  5242880050 m)。消费者获取服务器端一批消息最大的字节数。如果服务器端一批次的数据大于该值(50m)仍然可以拉取回来这批数据,因此,这不是一个绝对最大值。一批次的大小受message.max.bytes (broker config)or

max.message.bytes (topic config)影响

max.poll.records一次poll拉取数据返回消息的最大条数,默认是500
partition.assignment.strategy

修改分区分配策略

        给的的类为 org.apache.kafka.clients.consumer.XXXXXX

默认为RangeRange 优先分配,排在前面的消费者容易数据倾斜

RoundRobinAssignor 采用轮训分配,不会数据倾斜,轮训配置

StickyAssignor 粘性分配,根据上一次的分配结果再分配,降低转换开销

exclude.internal.topics

拒绝消费系统topic 例如offset对应的topic

true          不允许消费

false        允许消费


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钻风巡山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值