La *_*ina 10 apache-kafka ruby-kafka librdkafka
根据我的阅读,acks=0 的 Kafka 基本上只是将消息推送到生产者缓冲区中。它不等待任何类型的确认。有了这个,我想知道它与异步生产者有什么不同?acks 如何影响异步生产者?
nip*_*una 14
卡夫卡制片人
在 Kafka 中,存在三种类型的生产者,主要分为异步和同步。
同步生产者 Ack = 0(即发即忘)
在“即发即忘”场景中,我们不会等待任何响应,也不会进行任何重试。因此,无法保证消息是否已传递。所以在这种情况下有
同步生产者 Ack = 1 或 Ack = 全部
在 Sync Producer with 中acks = 1,生产者将等待分区领导者的响应。因此,只有分区领导者经纪人才能提供保证。但是,如果领导者代理崩溃并且没有同步副本,则存在消息丢失的可能性。吞吐量低于异步和Fire and Forget,并且重试与生产者重试配置相同。
在 Sync Producer with 中acks = all,生产者将等待分区的 Leader 和所有同步副本的响应。因此,有来自分区领导者代理和同步副本代理的保证。我们可以确保与Min In sync Replica配置同步的副本数量。吞吐量最低并且重试与生产者重试配置相同。但最可靠的生产商。
异步生产者
异步生产者几乎与“即发即忘”生产者相同,但也有一些差异。它有一个回调函数来获取代理端是否有任何响应。但生产者并没有等待该响应,它是在后台发生的。所以区别在于,如果代理发送一些生产者错误并且有重试,就会有痕迹。由于异步重试,无法保证消息的顺序。
并且有一个配置称为max.in.flight.requests.per.connection. 如果之前的消息没有任何响应,则异步消息的数量将限制为该数量。因此,如果已满,异步生产者将再次被阻止,直到该响应到达生产者。
欲了解更多信息,请参阅
| 归档时间: |
|
| 查看次数: |
7868 次 |
| 最近记录: |