Kafka的副本复制策略

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Kafka会把topic partitions的数据复制到一组server上,当一个Server宕机时可以做自动的故障恢复(automatic failover)。实际是把日志复制到一组机器上,一种基于日志的复制状态机(这里就不讨论这个)。

Kafka的每个topic portition的都会有一个leader,并且有0~n个follower。每个follower都会像一个普通的consumer一样,从leader消费上的message,也就是从leader上拉取message,并且把拉取到的message写入到自己的日志中,写入自己的日志后会(ack)通知leader写入成功。

当Producer向leader写入一条新的message时,一般是不会等follower的通知就返回,并且认为写入成功了。这时这条消息可能还没有被任何的follow拉取并且写入到自己的log中。如果这是leader宕掉的话,这条message就会丢失。

Producer有一个acks的选项,可以让producer等待收到follower后ack再认为是写入成功。收到follower的ack的message是committed的message。

那这里就会出现一个问题,producer收到多少个ack才能认为这条message是committed,也就是写入成功了那?Kafka用一种叫做ISR的策略来确定等待多少个ack。

满足以下2个条件的leader和follower被认为处于一种叫做'in sync'的状态:

  1. 与zookeeper保持会话session
  2. 如果是follower,它在从leader上复制message,并且没有落下太多(参数制定)。

Leader会记录具有'in sync'状态的所有节点的集合,当某个节点不满足上面的条件时,leader会把从集合中去除。

当所有in sync的副本已经把一条message写入到自己的log里,那么这条message就被认为是committed。

以上就是ISR副本复制策略,还是比较简单的,下面我们分析一下Kafka的可用性、数据可靠性。

显而易见,如果某个partition有f+1个副本,那么是可以容忍f个副本宕机的,并且保证数据是可靠不会丢的。

但是因为in sync集合是动态决定的,那有可能出现,集合中只有leader一个节点,其他的节点都已被移出集合,如果这时,便便Leader宕掉了,那么这种情况下数据是可能丢失的。

所以Kafka有一个参数配置可以指定集合中节点的最小数量,这可以保证即时f个副本宕机,数据也不会丢失,但是集合中的节点数如果小于最小阈值,则这个partition就不可用了。

目录
相关文章
|
19天前
|
消息中间件 负载均衡 Kafka
Kafka分区分配策略大揭秘:RoundRobin、Range、Sticky,你真的了解它们吗?
【8月更文挑战第24天】Kafka是一款突出高吞吐量、可扩展性和数据持久性的分布式流处理平台。其核心特性之一是分区分配策略,对于实现系统的负载均衡和高可用性至关重要。Kafka支持三种主要的分区分配策略:RoundRobin(轮询)、Range(范围)和Sticky(粘性)。RoundRobin策略通过轮询方式均衡分配分区;Range策略根据主题分区数和消费者数量分配;而Sticky策略则在保持原有分配的基础上动态调整,以确保各消费者负载均衡。理解这些策略有助于优化Kafka性能并满足不同业务场景需求。
122 59
|
1月前
|
消息中间件 安全 Kafka
"深入实践Kafka多线程Consumer:案例分析、实现方式、优缺点及高效数据处理策略"
【8月更文挑战第10天】Apache Kafka是一款高性能的分布式流处理平台,以高吞吐量和可扩展性著称。为提升数据处理效率,常采用多线程消费Kafka数据。本文通过电商订单系统的案例,探讨了多线程Consumer的实现方法及其利弊,并提供示例代码。案例展示了如何通过并行处理加快订单数据的处理速度,确保数据正确性和顺序性的同时最大化资源利用。多线程Consumer有两种主要模式:每线程一个实例和单实例多worker线程。前者简单易行但资源消耗较大;后者虽能解耦消息获取与处理,却增加了系统复杂度。通过合理设计,多线程Consumer能够有效支持高并发数据处理需求。
63 4
|
1月前
|
消息中间件 负载均衡 Java
"Kafka核心机制揭秘:深入探索Producer的高效数据发布策略与Java实战应用"
【8月更文挑战第10天】Apache Kafka作为顶级分布式流处理平台,其Producer组件是数据高效发布的引擎。Producer遵循高吞吐、低延迟等设计原则,采用分批发送、异步处理及数据压缩等技术提升性能。它支持按消息键值分区,确保数据有序并实现负载均衡;提供多种确认机制保证可靠性;具备失败重试功能确保消息最终送达。Java示例展示了基本配置与消息发送流程,体现了Producer的强大与灵活性。
49 3
|
2月前
|
消息中间件 存储 监控
深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制
深入理解Kafka核心设计及原理(六):Controller选举机制,分区副本leader选举机制,再均衡机制
51 1
|
2月前
|
消息中间件 算法 Kafka
面试题Kafka问题之Kafka的副本消息同步如何解决
面试题Kafka问题之Kafka的副本消息同步如何解决
46 4
|
2月前
|
消息中间件 Kafka 数据库
面试题Kafka问题之Kafka中的消息(Message)定义如何解决
面试题Kafka问题之Kafka中的消息(Message)定义如何解决
27 1
|
2月前
|
消息中间件 存储 Kafka
微服务分布问题之Kafka分区的副本和分布如何解决
微服务分布问题之Kafka分区的副本和分布如何解决
|
2月前
|
消息中间件 算法 NoSQL
面试题Kafka问题之Kafka保证系统的可用性如何解决
面试题Kafka问题之Kafka保证系统的可用性如何解决
32 0
|
3月前
|
消息中间件 Kafka 程序员
Kafka面试必备:深度解析Replica副本的作用与机制
**Kafka的Replica副本是保证数据可靠性的关键机制。每个Partition有Leader和Follower副本,Leader处理读写请求及管理同步,Follower被动同步并准备成为新Leader。从Kafka 2.4开始,Follower在完全同步时也可提供读服务,提升性能。数据一致性通过高水位机制和Leader Epoch机制保证,后者更精确地判断和恢复数据一致性,增强系统容错能力。**
74 1
|
2月前
|
消息中间件 Kafka 程序员
Kafka内幕:详解Leader选举与副本同步的那些事儿
大家好,我是小米,今天给大家带来一篇关于 Kafka 核心机制的深度解析文章。本文将详细讲解 Kafka 的 Leader 选举、副本消息同步以及相关概念 LEO 和 HW,帮助大家更好地理解和应用 Kafka,提升处理分布式系统的能力。快来一起学习吧!
169 0

热门文章

最新文章