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
    目录

    副本数和分区数什么区别

    在 Kafka 中,分区数(Partitions) 和 副本数(Replication Factor) 是两个核心概念,分别承担不同的角色,共同保障系统的性能、可靠性与扩展性。以下是两者的详细区别及作用解析:


    # 🧩 一、核心定义

    维度 分区数(Partitions) 副本数(Replication Factor)
    本质 Topic 的物理分片单位,每个分区是一个有序队列 每个分区的数据冗余备份数量
    作用目标 解决 并行处理与负载均衡 问题 解决 数据高可用与容错 问题
    最小单位 1 个分区(默认值) 1 个副本(无冗余)

    # ⚙️ 二、功能作用对比

    # 1. 分区数(Partitions)

    • 扩展性与并行性
      分区将 Topic 数据拆分为多个子队列,允许:
      • 生产者并行写入不同分区;
      • 消费者组内多个消费者并发消费不同分区(一个分区仅由组内一个消费者消费)。
    • 负载均衡
      数据通过轮询或哈希策略分布到不同分区,避免单 Broker 成为瓶颈。
    • 顺序性保证
      分区内消息有序,分区间无序。需顺序处理的消息必须写入同一分区(如订单流水)。

    # 2. 副本数(Replication Factor)

    • 容错性与高可用
      每个分区的副本分布在多个 Broker 上:
      • Leader 副本:处理读写请求;
      • Follower 副本:异步/同步从 Leader 复制数据。
      • 故障转移:Leader 宕机时,从 Follower 副本选举新 Leader。
    • 数据可靠性
      副本数 N 可容忍 N-1 个 Broker 故障(例如 3 副本容忍 2 节点故障)。

    # 📊 三、配置与约束

    维度 分区数 副本数
    创建后修改 ✅ 可增加(kafka-topics.sh --alter),不可减少 ❌ 不可修改(需重建 Topic 或调整副本分布)
    数量限制 无硬性上限,但单 Broker 建议 ≤200 分区 ≤ Broker 数量(如 3 Broker 时副本数 ≤3)
    性能影响 过多分区导致元数据膨胀、选举延迟 副本越多,写入延迟越高(需同步更多节点)

    # ⚖️ 四、生产环境配置建议

    # 1. 分区数设置

    • 计算公式:
      分区数 = max(目标生产吞吐量 / 单分区吞吐, 目标消费吞吐量 / 单分区消费能力)
      (单分区吞吐参考值:生产 10MB/s,消费 10MB/s)
    • 场景示例:
      • 低吞吐日志:1~3 分区;
      • 订单系统:10~30 分区(匹配消费者实例数 ×2);
      • 流处理高吞吐:按公式动态扩展。

    # 2. 副本数设置

    • 推荐值:

      环境 副本数 容错能力
      开发/测试 1~2 无或弱容错
      生产环境 ≥3 容忍 1~2 节点故障
      金融级系统 3~5 容忍 2~4 节点故障
    • 关键参数:

      • min.insync.replicas:最小同步副本数(建议=2,配合 acks=all 使用);
      • unclean.leader.election.enable=false:禁止非同步副本成为 Leader。

    # 💎 总结:核心差异一句话

    分区是水平扩展的刀,切割数据以提升并发;副本是容错的盾,复制数据以抵御故障。

    • 分区数 → 定义 并行能力上限(消费者线程数 ≤ 分区数);
    • 副本数 → 定义 数据生存能力(副本数越高,数据越难丢失)。

    实际部署需结合集群规模(如 3 Broker 时副本数最大为 3)、业务吞吐及容灾需求综合设计,避免过度配置引发性能损耗。

    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    一共有3个broker,一个topic有10个分区,副本数最大为3?分区又是怎么分布在3个broker上的?用的什么算法
    我还是不明白副本数,请画出具体的分布图,3个broker,某个topic10个分区

    ← 一共有3个broker,一个topic有10个分区,副本数最大为3?分区又是怎么分布在3个broker上的?用的什么算法 我还是不明白副本数,请画出具体的分布图,3个broker,某个topic10个分区→

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