目录

Producer的ACKs参数

配置

acks配置为0

acks配置为1

acks配置为-1或者all


副本的目的就是冗余备份,当某个Broker上的分区数据丢失时,依然可以保障数据可用。因为在其他的Broker上的副本是可用的。

Producer的ACKs参数

对副本关系较大的是,producer配置的ack参数了,acks参数表示当生产者生产消息的时候写入到副本的要求严格程度。它决定了生产者如何再性能和可靠性之间取舍。

配置

Properties props = new Properties();
props.put("bootstrap.servers", "node1.itcast.cn:9092");
props.put("acks", "all");
Properties props = new Properties();
props.put("bootstrap.servers", "node1.itcast.cn:9092");
props.put("acks", "all");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

acks配置为0

kafka的副本机制-LMLPHP

ack为0,表示发生消息不要等到broker确认,直接发送下一条数据,性能最高,但可能存在数据丢失的情况。

acks配置为1

kafka的副本机制-LMLPHP

当生产者的ACK配置为1时,生产者会等待leader副本确认接收后,才会发送下一条数据,性能中等。

acks配置为-1或者all

kafka的副本机制-LMLPHP

ack为-1,表示等待所有副本以及将数据同步后,才会发送下一条数据,性能最慢

06-09 01:08