Kafka Produce如何保证数据不丢失

概述

Kafka的发送模式可以分为同步模式和异步模式,可以通过参数producer.type=sync和producer.type=async指定。

同步模式

producer.type设置为sync时为同步模式。
此时可以通过配置request.required.acks的值来指定确认机制,分别为

  • 0 : 不等待broker返回确认消息。
  • -1 : 等待topic中partition leader保存消息成功,并返回成功状态。
  • 1 : 等待topic中partition leader及所有replication 都保存消息成功,然后返回成功状态。

异步模式

producer.type设置为async时为同步模式。
此时可以通过配置如下四个参数用来调整发送状态

  • queue.buffering.max.ms : producer缓存消息的时间,比如设置成1000时,就会缓存1s的数据,然后将缓存的数据push到Kafka,这样可以极大的增加broker吞吐量,但也会造成时效性的降低。
  • queue.buffering.max.messages : producer缓存队列里最大缓存的消息数量,如果超过这个值,producer就会阻塞或者丢掉消息。
  • queue.enqueue.timeout.ms : 当达到queue.buffering.max.messages这个值时的处理策略。如果配置为0,则会将消息丢弃,如果配置为-1,producer则会阻塞。
  • batch.num.messages : 一个batch缓存的消息数量,达到这个数值时,producer才会发送消息。

你可能感兴趣的:(中间件)