Plantre Plantre
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

plantre

一个后端开发者
首页
后端
技术
硬件
  • 前端文章

    • HTML
    • CSS
    • JavaScript
  • 技术

    • 技术文档
    • GitHub技巧
    • Nodejs
    • 博客搭建
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 设计模式

  • Java

  • Spring

  • SpringCloud

  • MySQL

  • Redis

  • 分布式

  • Zookeeper

  • Dubbo

  • Kafka

    • Kafka的架构
    • docker搭建Kafka集群
    • spring关于kafka的最全配置
    • kafka分主副节点吗
    • kafka的 topic, key , 分区的关系,以及数量对应关系,以及默认值
    • spring项目是事先创建topic还是代码里创建
    • 一个topic一般创建几个分区,几个副本数,只有三个broker的话又是怎么分布的
    • 一共有3个broker,一个topic有10个分区,副本数最大为3?分区又是怎么分布在3个broker上的?用的什么算法
    • 副本数和分区数什么区别
    • 我还是不明白副本数,请画出具体的分布图,3个broker,某个topic10个分区
      • Leader+​​Follower = 副本数?
      • ​​ISR(In-Sync Replicas)是什么,最多有多少个,这个数量怎么得来的
      • 在 Spring Kafka 中发送消息
      • 向kafka中发送重复的数据会怎么样
      • send消息时,key有什么用?
    • 数据结构

    • 算法

    • OJ

    • 从道家哲学看计算机?
    • 后端
    • Kafka
    plantre
    2025-06-23
    目录

    我还是不明白副本数,请画出具体的分布图,3个broker,某个topic10个分区

    以下是基于 3 个 Broker、某 Topic 包含 10 个分区且副本数=3 的具体分布图及分配逻辑详解(依据 Kafka 默认的 Round-Robin 副本分配算法):


    # 📊 一、分区与副本分布图

    分区 Leader 所在 Broker Follower1 所在 Broker Follower2 所在 Broker
    Partition 0 Broker 0 Broker 1 Broker 2
    Partition 1 Broker 1 Broker 2 Broker 0
    Partition 2 Broker 2 Broker 0 Broker 1
    Partition 3 Broker 0 Broker 1 Broker 2
    Partition 4 Broker 1 Broker 2 Broker 0
    Partition 5 Broker 2 Broker 0 Broker 1
    Partition 6 Broker 0 Broker 1 Broker 2
    Partition 7 Broker 1 Broker 2 Broker 0
    Partition 8 Broker 2 Broker 0 Broker 1
    Partition 9 Broker 0 Broker 1 Broker 2

    # 📌 二、分布示意图(按 Broker 视角)

    Broker 0:
      Partition 0 (Leader)
      Partition 1 (Follower2)
      Partition 2 (Follower1)
      Partition 3 (Leader)
      Partition 5 (Follower1)
      Partition 6 (Leader)
      Partition 8 (Follower2)
      Partition 9 (Leader)   → 共承载 4 Leader + 4 Follower
    
    Broker 1:
      Partition 0 (Follower1)
      Partition 1 (Leader)
      Partition 2 (Follower2)
      Partition 3 (Follower1)
      Partition 4 (Leader)
      Partition 6 (Follower1)
      Partition 7 (Leader)
      Partition 9 (Follower1) → 共承载 3 Leader + 5 Follower
    
    Broker 2:
      Partition 0 (Follower2)
      Partition 1 (Follower1)
      Partition 2 (Leader)
      Partition 4 (Follower2)
      Partition 5 (Leader)
      Partition 7 (Follower2)
      Partition 8 (Follower1)  → 共承载 3 Leader + 4 Follower
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    ✅ 负载均衡:Leader 均匀分散(Broker0:4个、Broker1:3个、Broker2:3个),避免单点压力。


    # ⚙️ 三、分配算法逻辑

    1. Leader 分配规则:
      第 i 个分区的 Leader 分配到 Broker (i mod 3)
      示例:

      • Partition 0 → 0 mod 3 = 0 → Broker 0
      • Partition 1 → 1 mod 3 = 1 → Broker 1
    2. Follower 分配规则:
      第 j 个副本(Follower)分配到 Broker (i + j) mod 3
      示例(Partition 0):

      • Follower1(j=1)→ (0 + 1) mod 3 = 1 → Broker 1
      • Follower2(j=2)→ (0 + 2) mod 3 = 2 → Broker 2

    # ⚠️ 四、容错能力说明

    • 副本分布原则:同一分区的 3 个副本绝不共存于同一 Broker(如 Partition 0 分布在 Broker0/1/2)。
    • 故障容忍:
      • 若任意 1 个 Broker 宕机(如 Broker0),剩余 Broker 仍包含所有分区的完整副本集。
      • 例如 Broker0 宕机时:
        • Partition 0 的新 Leader 可从 Broker1 或 Broker2 选举(原 Follower 升级为 Leader)。

    # 💎 总结

    • 副本数上限:3 个 Broker 时,副本数最大为 3(受限于 Broker 数量)。
    • 分区均匀性:10 分区无法整除 3,故 Broker 承载分区数存在差异(4/3/3),但 Leader 分布基本均衡。
    • 生产建议:
      • 副本数固定为 3(容忍单节点故障);
      • 使用命令验证分布:
        kafka-topics.sh --describe --topic your-topic --bootstrap-server localhost:9092
        
        1
    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    副本数和分区数什么区别
    Leader+​​Follower = 副本数?

    ← 副本数和分区数什么区别 Leader+​​Follower = 副本数?→

    最近更新
    01
    集成loki
    07-04
    02
    TCP的ESTABLISHED是什么意思
    06-24
    03
    安装1panel
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2025-2025 plantre | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式