文章预览
今天咱们聊聊Kafka如何保证消息不丢失的问题。 Kafka作为一款高吞吐量的分布式消息系统,在数据一致性和消息持久化方面的表现确实很出色。 不过,要真正理解Kafka如何保证消息不丢失,我们得从几个角度来剖析: 消息生产者、消息存储、消息消费者以及Kafka自身的容错机制。 一、消息生产者端的保证 首先,Kafka在消息生产者端提供了多种机制来确保消息不会丢失。 1. acks参数 在Kafka中,生产者发送消息时可以指定一个acks参数,这个参数决定了消息发送后需要多少个副本确认接收后,生产者才认为消息发送成功。 acks=0:生产者不会等待任何确认。消息发送后立即认为成功,消息有丢失的风险。 acks=1:生产者会等待leader副本确认接收。此时消息已经到达Kafka,但如果leader故障,消息可能丢失。 acks=all:生产者会等待所有副本确认接收。此时消息被
………………………………