Kafka的副本复制策略

简介:

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就不可用了。

目录
相关文章
|
2月前
|
消息中间件 安全 Kafka
一文搞懂Kafka中的listeners配置策略
1. listeners中的plaintext controller external是什么意思? 2. Kraft模式下controller和broker有何区别? 3. 集群节点之间同步什么数据,通过哪个端口,是否可以自定义端口? 4. 客户端通过哪个端口连接到kafka,通过9092连接的是什么,broker还是controller? 5. 为controller配置了单独的端口有什么用? 6. control.plane.listener.name与controller.listener.names有何区别?
139 2
|
6天前
|
消息中间件 监控 Kafka
【Kafka】分区副本中的 Leader 如果宕机但 ISR 却为空该如何处理
【4月更文挑战第12天】【Kafka】分区副本中的 Leader 如果宕机但 ISR 却为空该如何处理
|
11天前
|
消息中间件 存储 负载均衡
【Kafka】Kafka 的分区分配策略分析
【4月更文挑战第7天】【Kafka】Kafka 的分区分配策略分析
|
11天前
|
消息中间件 监控 Kafka
【Kafka】Kafka 分区Leader选举策略
【4月更文挑战第7天】【Kafka】Kafka 分区Leader选举策略
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
28 1
|
5月前
|
消息中间件 JSON 负载均衡
kafka 动态扩容现有 topic 的分区数和副本数
kafka 动态扩容现有 topic 的分区数和副本数
612 0
|
1月前
|
消息中间件 监控 Kafka
保证消息顺序性:Kafka 的策略与挑战
保证消息顺序性:Kafka 的策略与挑战
|
3月前
|
消息中间件 负载均衡 Kafka
Kafka - 3.x 分区分配策略及再平衡不完全指北
Kafka - 3.x 分区分配策略及再平衡不完全指北
72 0
|
3月前
|
消息中间件 运维 数据管理
Kafka - 3.x 副本不完全指北
Kafka - 3.x 副本不完全指北
41 0
|
4月前
|
消息中间件 缓存 算法
美团面试官让我聊聊kafka的副本同步机制,我忍不住哭了
美团面试官让我聊聊kafka的副本同步机制,我忍不住哭了

热门文章

最新文章