kafka常用参数

生产者参数

生产者参数
buffer.memory 默认32M 内存缓冲大小
通过KafkaProducer发送出去的消息都是先进入到客户端本地的内存缓冲里,然后把很多消息收集成一个一个的Batch,再发送到Broker上去的。
batch.size 默认16K ProducerBatch的大小
linger.ms 默认0 生产者客户端会在ProducerBatch被填满或等待时间超过linger.ms值时发送出去。
max.request.size 默认1M 最大请求大小
1)限制单条消息大小
2)限制每次发送给Kafka服务器请求的最大大小
retries和retries.backoff.ms 重试机制 retries 请求重试次数
retries.backoff.ms 每次重试的间隔时间
acks 默认1 1)acks=1 生产者发送消息之后,只要分区的leader副本成功写入消息,那么它就会收到 来自服务端的成功响应。
2)acke=0 生产者发送消息之后不需要等待任何服务器的响应
3)acks=-1或acks=all 生产者在消息发送之后,需要等待ISR中的所有副本都成功写入消息之后才能够收到来自服务器的成功响应。
max.in.flight.requests.per.connection 默认5 限制每个连接最多缓存的未响应请求数,超过该值之后就不能再向这个连接发送更多的请求了,除非有缓存的请求收到了响应。
涉及分区的有序性,设置为1可以保证有序性,但是发送性能会受影响。不为1的时候,如果发生消息重发则会乱序

消费者参数

消费者参数
max.partition.fetch.bytes 默认1MB(1048576)。 指定了服务器从每个分区里返回给消费者的最大字节数。消费者poll()从每个分区里返回的记录最大不超过该值。 (一条msg大小)*(max.poll.records)<=(max.partition.fetch.bytes)
max.poll.records 默认500 Consumer每次调用poll()时取到的records的最大数。 如果数量过多,导致一次poll操作返回的消息记录无法在指定时间内完成,则会触发rebalace
heartbeat.interval.ms 默认值3000,即3秒 消费者的心跳间隔时间 消费者是通过向GroupCoordinator发送心跳来维持它们与消费组的从属关系,以及它们对分区的所有权关系。心跳线程是独立的线程。 这个参数必须 比session.timeout.ms参数设定的值要小,一般情况下值不能超过session.timeout.ms配置值的1/3
session.timeout.ms 默认值10000,即10秒 组管理协议中用来检测消费者是否失效的超时时间。 GroupCoordinator超过session_timeout指定的时间内没有收到心跳报文则认为该消费者已经下线。 该值必须在broker端参数group.min.session.timeout.ms(默认值为6000,即6秒)和group.max.session.timeout.ms(默认值为300000,取5分钟)允许的范围内。
max.poll.interval.ms 默认300000,取5分秒 两个poll操作间隔的最大时间 当通过消费组管理消费者时,该配置指定拉取消息线程最长空闲时间,若超过这个时间间隔还没有发起poll操作,则消费组认为该消费者已离开了消费组,将进行再均衡操作。Rebalance
fetch.min.bytes 默认1B 配置poll拉取请求过程中能从kafka拉取的最小数据量,如果可用数据量小于该值,会等到有足够数据时才会返回给消费者
fetch.max.bytes 默认50MB(52428800) 表示服务端能返回消息的总大小
enable.auto.commit 当为true,采用kafka的默认提交模式。 当为false,采用springr的人工提交模式。
auto.commit.interval.ms 默认5000,即5秒 自动提交间隔时间
auto.offset.reset earliest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费 latest:当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据 默认为lastest。

猜你喜欢

转载自blog.csdn.net/amunamuna/article/details/108688958