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

    一个topic一般创建几个分区,几个副本数,只有三个broker的话又是怎么分布的

    在Kafka中,分区数(Partitions)和副本数(Replication Factor)的配置需结合业务需求、集群规模及容错要求综合设计。以下是具体建议及3个Broker时的分布逻辑:


    # 📊 一、分区数设置原则

    1. 核心公式(参考性能基准):

      • 分区数 = 目标吞吐量 / min(单分区生产吞吐量, 单分区消费吞吐量)
        • 例如:目标吞吐量100MB/s,单分区生产/消费能力20MB/s → 分区数=5。
      • 经验公式:分区数 ≈ 最大消费者实例数 × 2~3(冗余系数)。
    2. 场景化建议(参考通用实践):

      业务场景 推荐分区数 说明
      低吞吐(日志采集) 1~3 避免资源浪费
      中等负载(订单处理) 10~30 匹配10~20个消费者实例
      高吞吐(实时流处理) 按公式计算 单Broker分区数建议<3000
      需全局消息顺序 1 牺牲并发性保顺序性
    3. 注意事项:

      • 分区数只能增加不能减少(动态扩容时需评估Key哈希变化)。
      • 过多分区导致元数据膨胀、选举延迟增加(单Broker建议<200分区)。

    # 🔒 二、副本数设置原则

    1. 容错性与可靠性:

      • 生产环境:至少 3副本(可容忍1个Broker宕机)。
      • 关键业务:3~5副本(容忍2节点故障)。
      • 开发测试:1~2副本(节省资源)。
    2. 副本数限制:

      • 副本数 ≤ Broker数量(否则创建失败)。
        例如:3个Broker时,副本数最大为3。

    # ⚙️ 三、3个Broker时的分布逻辑

    当集群仅有3个Broker时,Kafka通过自动负载均衡策略分配分区与副本,确保高可用:

    1. 分区分布:

      • 分区会尽量均匀分布到所有Broker上。
        例如:3分区的Topic,每个Broker分配1个分区(Leader)。
    2. 副本分布:

      • 每个分区的副本分散在不同Broker(避免单点故障)。
        例如:3分区+3副本的Topic分布如下:
      分区 Leader副本 Follower副本
      Partition 0 Broker 1 Broker 2, Broker 3
      Partition 1 Broker 2 Broker 1, Broker 3
      Partition 2 Broker 3 Broker 1, Broker 2
    3. 故障恢复:

      • 若Broker 1宕机:
        • Partition 0的Leader自动切换到Broker 2或3(由ISR选举)。
        • 其他分区不受影响。

    # ⚠️ 四、生产环境配置示例

    1. 创建命令(3 Broker集群):
      kafka-topics.sh --create \
        --bootstrap-server localhost:9092 \
        --topic orders \
        --partitions 6 \          # 分区数=消费实例数×2(假设3消费者)
        --replication-factor 3    # 3副本容错
      
      1
      2
      3
      4
      5
    2. 配置建议:
      • 分区数:6(匹配消费者并发能力)。
      • 副本数:3(最大化容错能力)。

    # 💎 总结

    • 分区数:由吞吐量、消费者并发数决定,避免盲目扩增(优先基准测试)。
    • 副本数:生产环境固定为 3,3 Broker时副本均匀分布。
    • 3 Broker分布:每个分区及其副本分散在不同节点,Leader分散以均衡负载,Follower同步数据保障高可用。
    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    spring项目是事先创建topic还是代码里创建
    一共有3个broker,一个topic有10个分区,副本数最大为3?分区又是怎么分布在3个broker上的?用的什么算法

    ← spring项目是事先创建topic还是代码里创建 一共有3个broker,一个topic有10个分区,副本数最大为3?分区又是怎么分布在3个broker上的?用的什么算法→

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