Kafka数据可靠性保障

为确保生产者发送的数据能够可靠地写入指定主题,主题的每个分区在成功接收数据后,必须向生产者返回确认响应(ack)。只有当生产者收到该确认信号,才会继续发送后续数据;若未接收到确认,生产者将判定发送失败,并自动重新发送相关数据,以保障数据不丢失,提升传输的可靠性。

1、 副本数据同步方法

2、 Kafka采用第二种方案,因其更具优势与适用性。

3、 为容忍n个节点故障,第一种方案需2n+1个副本,第二种仅需n+1个。由于Kafka每个分区数据量大,采用第一种方案会导致严重的数据冗余,存储开销显著增加,因此第二种方案在资源利用上更具优势。

4、 尽管第二种方案网络延迟较高,但对Kafka的运行影响不大。

5、 Leader节点会维护一个动态的同步副本集合(ISR),即与Leader保持数据一致的Follower列表。当Follower成功复制了Leader上的数据后,Leader便会向其发送确认应答(ack)。若某个Follower在指定时间内未能及时从Leader拉取并同步最新数据,就会被移出ISR,这一时间上限由参数replica.lag.time.max.ms控制。只有处于ISR中的副本才有资格参与新的Leader选举。一旦当前Leader出现故障,系统将自动从ISR中选取一个健康的Follower升级为新的Leader,从而保证分区高可用和数据一致性。这种机制有效平衡了数据安全与集群性能之间的关系。

6、 确认应答机制

7、 对于重要性较低的数据,可靠性要求不高,可容忍少量丢失,因此无需等待ISR中所有follower完成同步,可直接提交。

8、 Kafka为用户提供了三种可靠性级别,可根据对延迟和可靠性的需求权衡后选择相应配置。

9、 配置acks参数

10、 生产者发送消息后不等待代理的确认,延迟最低。代理接收到消息但尚未写入磁盘时即返回响应,若此时代理发生故障,可能导致数据丢失。

11、 生产者等待代理返回确认信号,分区主副本数据写入磁盘后即发送确认。若主副本在从副本完成同步前发生故障,尚未同步的数据将无法恢复,导致数据丢失。

12、 当配置为-1时,生产者需等待Broker的确认。此时,分区的Leader与Follower均需将数据成功写入磁盘后,才返回确认信息。然而,若在Follower完成数据同步后、Broker发送确认前,Leader突然发生故障,系统可能触发重新选举。新的Leader接替后,生产者可能因未收到确认而重发消息,从而导致数据重复写入,带来潜在的数据一致性问题。

13、 故障处理具体步骤

14、 LEO代表各副本中最大的偏移量。

15、 HW指消费者可见的最大偏移量,即同步副本集中最小的日志末端偏移。

leader
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片