【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 集群的高可用性、容错性和性能。

相关文章
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 01】消息队列介绍+Kafka架构及核心概念(图片来源于网络)
143 2
|
1月前
|
消息中间件 存储 设计模式
Kafka原理篇:图解kakfa架构原理
Kafka原理篇:图解kakfa架构原理
157 1
|
1月前
|
消息中间件 Kafka
Kafka【问题记录 01】kill -9 导致 Kakfa 重启失败问题处理(doesn‘t match stored clusterId xxx in meta.properties)
【2月更文挑战第20天】Kafka【问题记录 01】kill -9 导致 Kakfa 重启失败问题处理(doesn‘t match stored clusterId xxx in meta.properties)
40 0
|
1月前
|
消息中间件 存储 缓存
【Kakfa】Kafka 的Topic中 Partition 数据是怎么存储到磁盘的?
【4月更文挑战第13天】【Kakfa】Kafka 的Topic中 Partition 数据是怎么存储到磁盘的?
|
1月前
|
消息中间件 存储 Kafka
【Kafka】Replica、Leader 和 Follower 三者的概念分析
【4月更文挑战第11天】【Kafka】Replica、Leader 和 Follower 三者的概念分析
|
10月前
|
消息中间件 存储 Kafka
Kafka架构及基本概念
刚开始了解Kafka时对其中多个名词表示懵逼,broker是啥?咋还有分区?有没有跟和我一样有很多???本文就我对Kafka的理解梳理各个角色以及功能,欢迎大家一起来沟通交流
95 0
|
1月前
|
消息中间件 Kafka
Kafka - 深入了解Kafka基础架构:Kafka的基本概念
Kafka - 深入了解Kafka基础架构:Kafka的基本概念
38 0
|
1月前
|
消息中间件 存储 Java
Kafka基本概念与应用场景
Apache Kafka是一种分布式的、基于发布/订阅的消息系统,由Scala语言编写而成。它具备快速、可扩展、可持久化的特点。Kafka最初由LinkedIn开发,并于2011年初开源, 2012年10月从Apache孵化器毕业,成为Apache基金会的顶级项目。
|
8月前
|
消息中间件 Kafka vr&ar
Kafka - AR 、ISR、OSR,以及HW和LEO之间的关系
Kafka - AR 、ISR、OSR,以及HW和LEO之间的关系
76 0
|
10月前
|
消息中间件 存储 监控
深入浅出:理解Kafka的核心概念与架构
深入浅出:理解Kafka的核心概念与架构
355 0

热门文章

最新文章