kafka消费者的配置

  1. fetch.min.bytes
    该属性指定了消费者’从服务器获取记录的最小字节数。 broker 在收到消费者的数据请求时, 如果可用的数据量小于fetch.min.bytes 指定的大小,那么它会等到有足够的可用数据时才把它返回给消费者。
    作用:可以降低消费者和 broker 的工作负载,因为它们在主题不是很活跃的时候(或者一天里的低谷时段)就不需要来来回回地处理消息。
    场景设置:
    1> 数据量小,但消费者的 CPU 使用率却很高,那么就需要把该属性的值设得比默认值大。
    2> 消费者的数量比较多,把该属性的值设置得大一点可以降低 broker 的工作负载。
  2. fetch.max.wait.ms
    通过 fetch.min.bytes 告诉 Kafka,等到有足够的数据时才把它返回给消费者。而 feth. Max.旧i.t.l'lS 则用于指定 broker 的等待时间,默认是 500ms,如果没有足够的数据流入 Kafka,消费者获取最小数据量的要求就得不到满足,最终导致 500ms 的延迟。
    作用:如果要降低 潜在的延迟(为了满足 SLA),可以把该参数值设置得小一些。如果 fetch.max.wait.ms 被设 为 lOOms,并且 fetch.max.wait.ms 被设为 lMB,那么 Kafka 在收到消费者的请求后,要么返 回 IMB 数据,要么在 lOOms 后返回所有可用的数据,就看哪个条件先得到满足。
  3. max.partition.fetch. bytes
    该属性指定了服务器从每个分区里返回给消费者的最大字节数。它的默认值是 lMB, 也 就是说, KafkaConsumer.poll() 方住从每个分区里返回的记录最多不超过max.partition.fetch. bytes 指定的字节。
    优化:如果一个主题有 20 个分区和 5 个消费者,那么每个消费者需要 至少 4MB 的可用内存来接收记录。在为消费者分配内存时,可以给它们多分配一些,因为如果群组里有消费者发生崩愤,剩下的消费者需要处理更多的分区。
    注意: 1、max.partition.fetch.bytes 的值必须比 broker 能够接收的最大消息的字节数(通过 max.message.size 属性配置)大, 否则消费者可能无法读取这些消息,导致消费者一直挂起重试。
    2、另一个需要考虑的因素是消费者处理数据的时间。 1肖费者需要频繁调用 poll() 方陆 来避免会话过期和发生分区再均衡,如果单次调用 poll() 返回的数据太多,消费者需要更 多的时间来处理,可能无怯及时进行下一个轮询来避免会话过期。如果出现这种情况, 可以把max.partition.fetch.bytes 值改小,或者延长会i舌过期时间。
  4. session.timeout.ms
    该属性指定了消费者在被认为死亡之前可以与服务器断开连接的时间,默认是 3s。如果消费者没有在 session.timeout.ms 指定的时间内发送心跳给群组协调器,就被认为已经死亡,协调器就会触发再均衡,把它的分区分配给群组里的其他消费者。
    heartbeat.interval.ms 指定了 poll() 方住向协调器发送心跳的频率。
    session.timeout.ms 则指定了消费者可以多久不发送心跳。一般与上者参数同时设置。
    heartbeat.interval.ms 必须比session.timeout.ms 小, 一 般是 session.timeout.ms 的三分之一。如果 session.timeout.ms 是 3s ,那么 heartbeat.interval.ms 应该是 ls。 把 session.timeout.ms 值设得比默认值小,可以更快地检测和恢 复崩愤的节点,不过长时间的轮询或垃圾收集可能导致非预期的再均衡。把该属性的值设 置得大一些,可以减少意外的再均衡,不过检测节点崩愤-需要更长的时间。
  5. auto.offset.reset
    该属性指定了消费者在读取一个没有偏移量的分区或者偏移量无效的情况下(因消费者长 时间失效,包含偏移量的记录已经过时井被删除)该作何处理。它的默认值是 latest, 意 思是说,在偏移量无效的情况下,消费者将从最新的记录开始读取数据(在消费者启动之 后生成的记录)。另一个值是 ea「li.est,意思是说,在偏移量无效的情况下,消费者将从 起始位置读取分区的记录。
    6 . enable.auto.commit
    该属性指定了消费者是否自动提交偏移 量,默认值是 true。
    应用:为了尽量避免出现重复数据和数据丢失,可以把它设为 false,由自己控制何时提交偏移量。
    如果把它设为true,还可以通过配置 auto.commit.interval.ms 属性来控制提交的频率。
原文地址:https://www.cnblogs.com/sgjk/p/13471347.html