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

    kafka分主副节点吗

    Kafka 的分区确实采用了类似主从节点的设计机制,但其核心逻辑与传统的主从架构不同:主从关系是以分区为粒度,而非整个集群或 Broker 节点。以下是详细解析:

    # 📌 1. 主副节点的本质(Leader-Follower 模式)

    • 每个分区(Partition)独立选举 Leader
      Kafka 的 Topic 被划分为多个分区,每个分区有多个副本(Replica),副本分布在不同的 Broker 上。其中:
      • Leader 副本:负责处理该分区的所有读写请求(生产者的写入和消费者的读取)。
      • Follower 副本:仅从 Leader 同步数据,不对外提供服务。
    • Broker 节点角色动态变化
      同一 Broker 可能同时是某些分区的 Leader 和另一些分区的 Follower,例如:
      • Broker 1 是 Topic A 分区 1 的 Leader,但可能是 Topic B 分区 2 的 Follower。
      • 这种设计避免了传统主从架构中“主节点单点瓶颈”问题。

    # ⚡ 2. 主节点选举与故障切换

    • 选举范围:当 Leader 副本失效(如 Broker 宕机),会从该分区的 ISR(In-Sync Replicas) 列表中选择新的 Leader。
      • ISR 定义:与 Leader 数据同步延迟在阈值内(replica.lag.time.max.ms)的 Follower 副本。
    • 容错策略:
      • 若 ISR 为空(所有 Follower 均不同步),且配置 unclean.leader.election.enable=false,分区将不可用(避免数据丢失)。
      • 若配置为 true,则从非同步副本选举,可能丢失未同步的消息。

    # 🔄 3. 数据同步机制

    • Follower 拉取数据:Follower 定期从 Leader 拉取消息(类似消费者),写入本地日志。
    • 提交条件:生产者发送的消息需被 Leader 和所有 ISR 副本写入,才视为“已提交”(Committed),此时消费者可见。
    • HW(高水位):定义消费者可读取的最大偏移量(Offset),取 ISR 中副本的最小同步位置。

    # 💡 4. 设计优势

    • 负载均衡:读写压力分散到多个 Broker(不同分区的 Leader 分布不同)。
    • 高可用:单点故障仅影响部分分区,且可快速切换 Leader。
    • 扩展性:增加分区或 Broker 可横向提升吞吐量。

    # ⚠️ 注意事项

    • 配置建议:
      • 设置 replication.factor ≥ 3,确保每个分区有足够副本。
      • 关闭 unclean.leader.election.enable(默认值),优先保障数据一致性。
    • 监控 ISR:若 Follower 频繁被踢出 ISR,需检查网络或磁盘性能。

    ✅ 总结:Kafka 的“主副节点”实则是 分区级别的 Leader-Follower 副本关系,通过动态维护 ISR 和 Leader 选举,在保障高可用的同时实现分布式负载均衡。与传统主从架构不同,其设计更贴合分布式系统的弹性需求。

    编辑 (opens new window)
    上次更新: 2025/06/24, 00:41:57
    spring关于kafka的最全配置
    kafka的 topic, key , 分区的关系,以及数量对应关系,以及默认值

    ← spring关于kafka的最全配置 kafka的 topic, key , 分区的关系,以及数量对应关系,以及默认值→

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