kafka重要配置参数详解

发送端的可选配置信息分析

1.acks

acks 配置表示 producer 发送消息到 broker 上以后的确认值。有三个可选项
Ø 0:表示 producer 不需要等待 broker 的消息确认。这个选项时延最小但同时风险最大(因为当 server 宕机时,数据将会丢失)。

Ø 1:表示 producer 只需要获得 kafka 集群中的 leader 节点确认即可,这个选择时延较小同时确保了 leader 节点确认接收成功。

Ø all(-1):需要 ISR 中所有的 Replica 给予接收确认,速度最慢,安全性最高,但是由于 ISR 可能会缩小到仅包含一个 Replica,所以设置参数为 all 并不能一定避免数据丢失,

2.batch.size

生产者发送多个消息到 broker 上的同一个分区时,为了减少网络请求带来的性能开销,通过批量的方式来提交消息,可以通过这个参数来控制批量提交的字节数大小,默认大小是 16384byte,也就是 16kb,意味着当一批消息大小达到指定的 batch.size 的时候会统一发送

3.linger.ms

Producer 默认会把两次发送时间间隔内收集到的所有 Requests 进行一次聚合然后再发送,以此提高吞吐量,而 linger.ms 就是为每次发送到 broker 的请求增加一些 delay,以此来聚合更多的 Message 请求。 这个有点想 TCP 里面的Nagle 算法,在 TCP 协议的传输中,为了减少大量小数据包的发送,采用了Nagle 算法,也就是基于小包的等-停协议。

Ø batch.size 和 linger.ms 这两个参数是 kafka 性能优化的关键参数,很多同学会发现 batch.size 和 linger.ms 这两者的作用是一样的,如果两个都配置了,那么怎么工作的呢?实际上,当二者都配置的时候,只要满足其中一个要求,就会发送请求到 broker 上

4.max.request.size

设置请求的数据的最大字节数,为了防止发生较大的数据包影响到吞吐量,默认值为 1MB。

消费端的可选配置分析

1.group.id

consumer group 是 kafka 提供的可扩展且具有容错性的消费者机制。既然是一个组,那么组内必然可以有多个消费者或消费者实例(consumer instance),它们共享一个公共的 ID,即 group ID。组内的所有消费者协调在一起来消费订阅主题(subscribed topics)的所有分区(partition)。当然,每个分区只能由同一个消费组内的一个 consumer 来消费.如下图所示,分别有三个消费者,属于两个不同的 group,那么对于 firstTopic 这个 topic 来说,这两个组的消费者都能同时消费这个 topic 中的消息,对于此事的架构来说,这个 firstTopic 就类似于 ActiveMQ 中的 topic 概念。如右图所示,如果 3 个消费者都属于同一个group,那么此事 firstTopic 就是一个 Queue 的概念

2.enable.auto.commit

消费者消费消息以后自动提交,只有当消息提交以后,该消息才不会被再次接收到,还可以配合 auto.commit.interval.ms 控制自动提交的频率。当然,我们也可以通过 consumer.commitSync()的方式实现手动提交

3.auto.offset.reset

这个参数是针对新的 groupid 中的消费者而言的,当有新 groupid 的消费者来消费指定的 topic 时,对于该参数的配置,会有不同的语义

  1. auto.offset.reset=latest

情况下,新的消费者将会从其他消费者最后消费的
offset 处开始消费 Topic 下的消息

  1. auto.offset.reset= earliest

情况下,新的消费者会从该 topic 最早的消息开始消费

  1. auto.offset.reset=none

情况下,新的消费者加入以后,由于之前不存offset,则会直接抛出异常。

4.max.poll.records

此设置限制每次调用 poll 返回的消息数,这样可以更容易的预测每次 poll 间隔要处理的最大值。通过调整此值,可以减少 poll 间隔

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka Producer的配置参数用于设置生产者的各项行为和属性。下面是一些常用的Kafka Producer配置参数及其详细解释: 1. bootstrap.servers:指定Kafka集群的初始连接地址,格式为`host1:port1,host2:port2,...`。 2. acks:指定Producer收到确认消息的模式。可选值有:"all"(所有副本都确认),"0"(不需要确认),"1"(只需 Leader 确认)。默认值为"1"。 3. retries:指定在发生发送错误时重试的次数。 4. batch.size:指定批量发送消息的大小,以字节为单位。当待发送的消息大小达到这个阈值时,Producer会进行批量发送。 5. linger.ms:指定Producer等待更多消息加入批处理的时间,以毫秒为单位。即使消息大小未达到`batch.size`,如果等待时间超过了该参数设定的阈值,Producer也会发送当前可用的消息。 6. buffer.memory:指定Producer端内存缓冲区的大小,以字节为单位。该缓冲区用于存储尚未发送到服务器的消息。 7. key.serializer:指定用于序列化消息键的序列化器类。 8. value.serializer:指定用于序列化消息值的序列化器类。 9. compression.type:指定消息压缩类型。可选值有:"none"(不压缩),"gzip","snappy","lz4"。 10. max.in.flight.requests.per.connection:指定在收到服务器的确认之前,Producer可以发送的未确认请求的最大数量。较高的值可以提高吞吐量,但可能会增加延迟。 11. max.block.ms:指定在Producer缓冲区已满的情况下,Producer.send()方法的最大阻塞时间。 以上仅是一些常见的配置参数Kafka Producer还提供了很多其他可用的配置选项。你可以根据自己的需求来选择适合的参数进行配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值