-
replica.lag.time.max.ms ,同时检测由于慢以及进程卡而导致的滞后(lagging)---即follower副本落后leader副本的时间间隔。默认是10秒。对于“请求速度追不上”的情况,检测机制也发生了变化---如果一个follower副本落后leader的时间持续性的超过这个参数值,则该follower副本被认为是“不同步”的。
-
consumer group下的consumer thread的数量等于partition数。
-
consumer group里面的consumer数量等于这个topic下的partition数量。
-
topic的Partition数量大于等于Broker的数量,可以提高吞吐率。
-
partition的Replica尽量分散到不同的机器,高可用。
-
replica副本数目不能大于broker节点数,否则报错。
-
flush页面缓存的周期、阈值
-
commit offset周期、阈值
无消息丢失配置、消息压缩
- block.on.buffer.full=true
Kafka0.9.0.0版本已被标记为“deprecated”。并使用max.block.ms参数代替。 - acks=all
必须所有follewer都响应了才被认为提交成功。 - retries=Integer.MAX_VALUE
开启无限重试 - max.in.flight.requests.per.connection=1
防止topic同分区下的消息乱序。限制了producer在单个broker连接上能够发送的未响应请求的数量。 - 使用带回调机制的send
- callback中显示立即关闭producer
- unclean.leader.election.enable=false
不允许非ISR中的副本被选举为leader。 - replication.factor >=3
多个副本保存分区的消息 - min.insync.replicas>1
控制某条消息至少被写入到ISR中的多少个副本才算成功。 - 确保replication.factor > min.insync.replicas
Consumer常用参数
- bootstrp.servers 指定多个是为了当failover时,自动找到完整broker列表。
- group.id 消费者组
- key.deserializer
- value.deserializer
- session.timeout.ms 从0.10.0.0开始,只是coordinator检测失败的时间
- max.poll.interval.ms ,是consumer处理逻辑最大时间。通过将该参数设置成实际的逻辑处理时间再结合较低的session.timeout.ms参数值,consumer group 既实现了快速的consumer崩溃检测,也保证了复杂的事件处理逻辑不会造成不必要的rebalance。
auto.offest.reset 位移重设策略
结合业务特点调优consumer参数request.timeout.ms、max.poll.records和max.poll.interval.ms。以避免不必要的rebalance出现。
网友评论