侧边栏壁纸
博主头像
ZHD的小窝博主等级

行动起来,活在当下

  • 累计撰写 79 篇文章
  • 累计创建 53 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

kafka常用参数

江南的风
2022-08-26 / 0 评论 / 0 点赞 / 20 阅读 / 7337 字 / 正在检测是否收录...

Kafka作为一个分布式流处理平台,拥有众多配置参数,这些参数的设置对于Kafka的性能、可靠性和吞吐量等方面有着重要影响。以下是一些Kafka的常用参数设置及其解释:

生产者(Producer)参数

  1. acks

    • 描述:指定了必须有多少个分区副本收到消息,生产者才会认为消息写入是成功的。

    • 选项

      • acks=0:生产者请求立即返回,不需要等待任何确认。这种方式有最高的吞吐率,但不保证消息发送成功。

      • acks=1:只要集群的leader分区副本接收到了消息,就会向生产者发送一个成功响应的ack。这种方式提供了不错的持久性保证和吞吐率。

      • acks=-1acks=all:leader节点会等待所有同步中的副本(ISR)确认之后再确认消息发送完成。这种方式提供了最高的消息持久性保证,但吞吐率可能较差。

  2. buffer.memory

    • 描述:生产者用于缓存消息的缓冲区大小。

    • 默认值:32MB(33554432字节)

  3. compression.type

    • 描述:生产者生成数据时可使用的压缩类型。

    • 选项none(不压缩)、gzipsnappylz4等。

  4. retries

    • 描述:生产者发送消息失败重试的次数。

    • 说明:重试时生产者会重新发送之前由于瞬时原因(如元数据信息失效、副本数量不足等)出现失败的消息。

  5. batch.size

    • 描述:生产者按批次发送消息时,每个批次的大小。

    • 默认值:16KB

  6. linger.ms

    • 描述:生产者在发送批次前的等待时间。

    • 默认值:0ms(表示不做停留)

    • 建议:为了减少网络IO,提升整体性能,可以设置为5~100ms。

消费者(Consumer)参数

  1. bootstrap.servers

    • 描述:消费者连接Kafka集群的入口参数,通常是Kafka集群中broker的地址。

  2. group.id

    • 描述:消费者所属的消费者组名称。

    • 说明:消费者通过group.id来区分不同的消费者组,实现发布/订阅的通信方式。

  3. enable.auto.commit

    • 描述:是否自动提交消息偏移量。

    • 默认值:true

  4. auto.commit.interval.ms

    • 描述:消费者偏移量向Kafka提交的频率。

    • 默认值:5000ms(5秒)

  5. auto.offset.reset

    • 描述:当Kafka中没有初始偏移量或当前偏移量在服务器中不存在时,消费者的处理方式。

    • 选项

      • earliest:自动重置偏移量到最早的偏移量。

      • latest:自动重置偏移量为最新的偏移量(默认)。

      • none:如果消费组原来的偏移量不存在,则向消费者抛异常。

  6. fetch.min.bytes

    • 描述:消费者获取服务器端一批消息最小的字节数。

    • 默认值:1个字节

  7. fetch.max.wait.ms

    • 描述:如果没有从服务器端获取到一批数据的最小字节数,该时间到后仍然会返回数据。

    • 默认值:500ms

  8. fetch.max.bytes

    • 描述:消费者获取服务器端一批消息最大的字节数。

    • 默认值:50MB(52428800字节)

通用参数

  1. replica.lag.time.max.ms

    • 描述:ISR中,如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR的时间阈值。

    • 默认值:30秒

  2. log.retention.hours

    • 描述:Kafka中数据保存的时间(小时级别)。

    • 默认值:7天(注意:这里可能是以小时为单位的默认值,但通常Kafka以天为单位设置更常见,如log.retention.days,默认值也是7)

  3. log.segment.bytes

    • 描述:Kafka中log日志划分成块的大小。

    • 默认值:1GB

  4. num.io.threads

    • 描述:负责写磁盘的线程数。

    • 默认值:8

  5. max.request.size

    • 描述:请求的最大字节数。

  6. receive.buffer.bytessend.buffer.bytes

    • 描述:TCP接收和发送缓冲区的大小。

其他重要参数

  1. default.replication.factor

    • 描述:分区的总的副本个数。

  2. min.insync.replicas

    • 描述:ISR列表中最少的在线副本的个数(含leader)。当在线的副本个数小于min.insync.replicas时,生产者发送消息会失败。

  3. max.in.flight.requests.per.connection

    • 描述:生产者在单个连接上能够发送的未响应请求的个数。

    • 默认值:5

    • 说明:设置为1可以避免生产者发送消息乱序,虽然吞吐量降低了,但安全性得到了提升。

  4. session.timeout.ms

    • 描述:Kafka消费者和coordinator之间连接超时时间。

    • 默认值:45秒

    • 说明:超过该值,消费者被移除,消费者组执行再平衡。

  5. max.poll.interval.ms

    • 描述:消费者处理消息的最大时长。

    • 默认值:5分钟

    • 说明:超过该值,消费者被移除,消费者组执行再平衡。

这些参数的设置需要根据具体的业务场景和需求进行调整,以达到最佳的性能和可靠性。同时,Kafka也提供了丰富的监控和调优工具,可以帮助用户更好地理解和优化Kafka集群的运行状态。

0

评论区