【Kakfa】Kafka 中 AR、ISR、OSR 三者的概念

简介: 【4月更文挑战第11天】【Kakfa】Kafka 中 AR、ISR、OSR 三者的概念

在 Kafka 中,AR、ISR 和 OSR 是与副本同步和复制机制相关的重要概念,它们共同组成了 Kafka 的副本管理系统。了解这三个概念对于理解 Kafka 的可靠性和性能优化至关重要。下面我将详细分析 AR、ISR 和 OSR 的概念,并附上相关示例代码。

1. AR(Assigned Replica,分配的副本)

AR 是指被分配给分区的副本集合。在 Kafka 中,每个分区都有一个 AR 集合,其中包含了分区的所有副本。AR 是在 Kafka 控制器节点进行计算和管理的,它决定了每个分区的副本分配策略和副本的分布情况。

主要作用:

  • 副本分配: AR 确定了每个分区的副本分配策略,包括副本的数量、分布和位置等。AR 决定了哪些节点上有分区的副本,以及每个节点上分配了多少个副本。
  • 负载均衡: AR 通过动态调整副本的分布,实现了集群的负载均衡。通过在不同节点上分配副本,AR 可以避免某些节点的负载过重,提高了系统的整体性能和稳定性。

2. ISR(In-Sync Replica,同步副本)

ISR 是指与 Leader 副本保持数据同步的副本集合。在 Kafka 中,每个分区都有一个 ISR 集合,其中包含了与 Leader 副本保持数据同步的所有副本。ISR 是动态调整的,根据副本的同步状态和延迟情况而变化。

主要作用:

  • 数据同步: ISR 确保了分区的所有副本与 Leader 副本保持数据同步。当消息被 Leader 副本确认接收后,ISR 中的副本也会逐渐复制消息,确保所有副本之间的数据一致性。
  • 高可用性: ISR 中的副本可以快速接管分区的读写请求,提高了分区的高可用性。当 Leader 副本发生故障时,ISR 中的副本可以立即接管分区的服务,而无需等待数据复制完成。

3. OSR(Out-of-Sync Replica,不同步副本)

OSR 是指与 Leader 副本不保持数据同步的副本集合。在 Kafka 中,每个分区都有一个 OSR 集合,其中包含了与 Leader 副本数据不同步的副本。OSR 的存在是正常的,可能由于网络延迟、副本故障或其他原因导致副本与 Leader 副本之间的数据同步出现滞后。

主要作用:

  • 故障检测: OSR 中的副本可能由于故障或其他原因导致与 Leader 副本的数据不同步。监控 OSR 中的副本状态可以帮助及时检测和处理副本的故障或异常情况。
  • 动态调整: OSR 中的副本可以通过数据同步和复制来重新加入到 ISR 中,从而提高分区的可用性和性能。Kafka 控制器会根据副本的同步状态和延迟情况动态调整 ISR 和 OSR 的成员。

示例代码

下面是一个简单的 Kafka 生产者示例代码,演示了如何创建一个主题并向其中发送消息:

import org.apache.kafka.clients.producer.*;
import java.util.Properties;

public class ProducerExample {
   

    public static void main(String[] args) {
   
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("acks", "all");
        props.put("retries", 0);
        props.put("batch.size", 16384);
        props.put("linger.ms", 1);
        props.put("buffer.memory", 33554432);
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        Producer<String, String> producer = new KafkaProducer<>(props);

        try {
   
            for (int i = 0; i < 10; i++) {
   
                producer.send(new ProducerRecord<>("my-topic", Integer.toString(i), Integer.toString(i)));
            }
        } catch (Exception e) {
   
            e.printStackTrace();
        } finally {
   
            producer.close();
        }
    }
}

以上示例代码创建了一个 Kafka 生产者,向名为 "my-topic" 的主题发送了 10 条消息。在实际生产环境中,可以根据需求设置主题的副本数量和 ISR 配置,以满足数据的高可用性和容错性要求。

结论

在 Kafka 中,AR、ISR 和 OSR 三者共同组成了副

本管理系统,负责管理分区的副本分配、数据同步和故障处理等功能。了解和理解这三个概念对于正确配置和优化 Kafka 集群至关重要。通过合理配置 AR、监控 ISR 和处理 OSR,可以确保 Kafka 集群的高可用性、容错性和性能。

相关文章
|
5天前
|
消息中间件 存储 负载均衡
Apache Kafka核心概念解析:生产者、消费者与Broker
【10月更文挑战第24天】在数字化转型的大潮中,数据的实时处理能力成为了企业竞争力的重要组成部分。Apache Kafka 作为一款高性能的消息队列系统,在这一领域占据了重要地位。通过使用 Kafka,企业可以构建出高效的数据管道,实现数据的快速传输和处理。今天,我将从个人的角度出发,深入解析 Kafka 的三大核心组件——生产者、消费者与 Broker,希望能够帮助大家建立起对 Kafka 内部机制的基本理解。
25 2
|
25天前
|
消息中间件 存储 分布式计算
大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败
大数据-72 Kafka 高级特性 稳定性-事务 (概念多枯燥) 定义、概览、组、协调器、流程、中止、失败
31 4
|
25天前
|
消息中间件 JSON 大数据
大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
59 4
|
26天前
|
消息中间件 NoSQL Kafka
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
大数据-52 Kafka 基础概念和基本架构 核心API介绍 应用场景等
56 5
|
26天前
|
消息中间件 存储 分布式计算
大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解
大数据-53 Kafka 基本架构核心概念 Producer Consumer Broker Topic Partition Offset 基础概念了解
56 4
|
25天前
|
消息中间件 大数据 Kafka
大数据-77 Kafka 高级特性-稳定性-延时队列、重试队列 概念学习 JavaAPI实现(二)
大数据-77 Kafka 高级特性-稳定性-延时队列、重试队列 概念学习 JavaAPI实现(二)
25 2
|
25天前
|
消息中间件 NoSQL 大数据
大数据-77 Kafka 高级特性-稳定性-延时队列、重试队列 概念学习 JavaAPI实现(一)
大数据-77 Kafka 高级特性-稳定性-延时队列、重试队列 概念学习 JavaAPI实现(一)
31 1
|
29天前
|
消息中间件 Java 大数据
Kafka ISR机制详解!
本文详细解析了Kafka的ISR(In-Sync Replicas)机制,阐述其工作原理及如何确保消息的高可靠性和高可用性。ISR动态维护与Leader同步的副本集,通过不同ACK确认机制(如acks=0、acks=1、acks=all),平衡可靠性和性能。此外,ISR机制支持故障转移,当Leader失效时,可从ISR中选取新的Leader。文章还包括实例分析,展示了ISR在不同场景下的变化,并讨论了其优缺点,帮助读者更好地理解和应用ISR机制。
32 0
Kafka ISR机制详解!
|
25天前
|
消息中间件 NoSQL Kafka
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
96 0
|
3月前
|
消息中间件 存储 Kafka
kafka基础概念二
【8月更文挑战第11天】
38 6