美文网首页消息队列MQ
消息队列(五)kafka常见的配置

消息队列(五)kafka常见的配置

作者: joshuaXin | 来源:发表于2020-04-22 15:41 被阅读0次

    一:Producer相关的参数

    1.acks,Produce的回应, 可选值 all, -1, 0 1. 默认值为1;

    acks=0 不需要等待服务器的确认. 这时retries设置无效.

    acks=1 表示leader写入成功(但是并没有刷新到磁盘)后即向producer响应。延迟中等,一旦leader副本挂了,就会丢失数据。

    acks=all等待数据完成副本的复制, 等同于-1. 假如需要保证消息不丢失, 需要使用该设置. 

    2.unclean.leader.election.enable为true, 保证当ISR列表为空时, 选择其他存活的副本作为新的leader.

    3.min.insync.replicas:当acks=all时,至少有多少个Replicas需要确认已成功持久化数据,这个Replicas数量也包括Leader;

    4.retries:重试的次数,大于0的时候,可能顺序有变化;

    5.max.in.flight.requests.per.connection,默认是5,Producer允许未通过acks确认的请求最大数;

    6.buffer.memory:producer可以使用的最大内存来缓存等待发送到server端的消息

    7.batch.size、linger.ms:包大小,等待时间,当满足其中一个条件,就发送消息;

    8.max.block.ms:Produce消息的最长时间;

    9.enable.idempotence:幂等性,需要结合max.in.flight.requests.per.connection和retires、acks;

    10.transaction.timeout.ms:事务协调器等待producer更新事务状态的最大毫秒数, 超过的话事务协调器会终止进行中的事务. 

    二:Consumer相关的参数

    0.group.id: Consumer的用户组,默认是"";

    1. max.poll.records 表示每次默认拉取消息条数,默认值为 500;这个参数需要根据业务的数据量、处理时间、限流、可靠性等角度设置该参数;太小则拉取太频繁,太大则容易被认为故障;在Consumer的实现里面,为了减少并发、一致性等问题,Fetch拉取线程仅在当前拉取的message被处理完之后,才会进行下一次拉取

    2. max.poll.interval.ms 表示消费者处理消息逻辑的最大时间,即max.poll.records的message最大的消费时间;若超过就会被 Coordinator 剔除消息组然后重平衡, 默认值为 300000;这个值应保持在实际应用的3-5倍,因为Consumer处理的时候,下游可能会超时、宕机等意外;

    3.session.timeout.ms 默认10秒,在这个阈值内如果coordinator未收到consumer的任何消息,那coordinator就认为consumer挂了,那么就会Rebalance。

    4.heartbeat.interval.ms:给coordinator发送心跳包的间隔时间,heartbeat.interval.ms越小,发的心跳包越多,一般在session.timeout.ms的三分之一左右。

    5.enable.auto.commit、auto.commit.interval.ms:自动提交、若开启,提交的时间默认5s;

    6.拉取相关:fetch.max.wait.ms、fetch.min.bytes、fetch.max.bytes

    相关文章

      网友评论

        本文标题:消息队列(五)kafka常见的配置

        本文链接:https://www.haomeiwen.com/subject/ajgiihtx.html