kafka 配置属性
-
kafka broker 配置详解
其中比较重要的参数:
request.required.acks:要保证leader和replica都能同步到值,可以设置为-1
此配置是表明当一次produce请求被认为完成时的确认值。特别是,多少个其他brokers必须已经提交了数据到他们的log并且向他们的leader确认了这些信息。典型的值包括:
0: 表示producer从来不等待来自broker的确认信息(和0.7一样的行为)。这个选择提供了最小的时延但同时风险最大(因为当server宕机时,数据将会丢失)。
1:表示获得leader replica已经接收了数据的确认信息。这个选择时延较小同时确保了server确认接收成功。
-1 或者 all:producer会获得所有同步replicas都收到数据的确认。同时时延最大,然而,这种方式并没有完全消除丢失消息的风险,因为同步replicas的数量可能是1.如果你想确保某些replicas接收到数据,那么你应该在topic-level设置中选项min.insync.replicas设置一下。请阅读一下设计文档,可以获得更深入的讨论。
request.timeout.ms :默认30000ms, broker尽力实现request.required.acks需求时的等待时间,否则会发送错误到客户端
参考:https://www.cnblogs.com/wangjing666/p/10234445.html -
kafka producer 配置:
同一个partition中有序的消息,如果配置并发数大于1,那也是会导致消费的不是有序的了
==>并发数是跟partition的数量一致,
ACKS默认是1,会出现消息丢失的情况。当leader broker接收到消息,还没同步到副本中时,down了,
==>是在配置broker服务器上配置的(request.required.acks =all 或者-1),也可以在producer的配置中设置为acks=all 或者-1
创建topic的时候为什么需要加上副本数量?这个不是在配置kafka的broker的时候可以指定数据量吗
心跳时间:检查消费者是否down了,设置为10s比较好,短点,还有个参数是隔多少秒开始检查
max.poll.interval.ms 默认是5分钟,当消费时间大于设置的时间时,会出现提交offset失败,导致一直重复消费,且数据积压
max.poll.records 每次pull的条数,不要设置太大,免得消费的太慢,