当前位置: 首页 > news >正文

kafka 副本集设置和理解

  最近在做集群高可用验证的时候,遇到了一个kafka 副本集高可用的问题,在这里分析总结一下。

  当前的部署情况是kafka集群有三个节点;在做集群高可用验证的时候,先shutdown一个服务器实例之后,再验证服务相关的高可用,当shutdown一个实例之后,发现kafka 有的topic可以正常发送和接收消息,而有的topic 却不能。

  报错的关键日志:

org.apache.kafka.common.errors.TimeoutException: Expiring 53 record(s) for TWAMP_LINK_TOPIC-0: 120000 ms has passed since batch creation

  再经过层层排查之后,通过以下命令,找到了关键点。

kafka-run-class kafka.admin.TopicCommand --describe --topic TUNNEL_STATE_TOPIC --bootstrap-server kafka2:9092

  注意将 --topic 之后的topic 换成不同的topic进行查看,具体显示如下:

image

根据提供的两个Topic的描述信息,可以得出以下结论:

再切换了之后,发现有的topic 存在正常的leader、 而有的topic 却不存在leader。 而kafka 发送消息是通过leader去发送的,没有leader就会异常。

输出结果详解:

第一行:Topic 级别的概要信息
Topic: TWAMP_LINK_TOPIC TopicId: iw-DWE9jSBKsxT7NJwQBzQ PartitionCount: 1 ReplicationFactor: 1 Configs:

第二行:分区级别的详细信息
Topic: TWAMP_LINK_TOPIC Partition: 0 Leader: none Replicas: 3 Isr: 3

此处需要注意两个配置容易误解:

1、ReplicationFactor: 1 (副本因子:1)

  • 这是最重要的配置!它意味着Kafka只会为这个分区的数据创建1个副本。这是数据的冗余度,决定了容错能力。

  • 1 表示 “没有冗余”。就像只把文件打印了一份。

2、Replicas: 3 (副本所在Broker ID:3)

  • 这个字段只是告诉你:那唯一的一个副本,被放置在了Broker ID 为 3 的服务器上。

  • 它不是说有三个副本。这里的 3 是一个Broker编号,不是数量。

  • 如果把 Replicas: 3 换成 Replicas: 1,意思就是那唯一的一个副本在Broker 1上。

 解决方法:

  重新创建topic,并设置topic的副本因子的数量大于1;从而保证高可用

kafka-topics.sh --create --topic TWAMP_LINK_TOPIC \
--partitions 1 \
--replication-factor 3 \  # 关键!必须设置为 3,为每个分区创建3个副本
--bootstrap-server kafka1:9092

  将副本因子设置为2 之后再查看配置如下:  

image

第一行:Topic 概要

第二行:分区详情

文章转载自:香吧香

原文链接:kafka 副本集设置和理解 - 香吧香 - 博客园

体验地址:JNPF快速开发平台

http://www.dtcms.com/a/350050.html

相关文章:

  • 《Spring Boot 进阶:从零到一打造自定义 @Transactional》 ——支持多数据源、动态传播行为、可插拔回滚策略
  • AI系列 - Claude 与 Qwen 模型自动补全对比:谁更胜一筹?
  • 电力系统稳定性的挑战与智能控制新范式
  • 网络与信息安全有哪些岗位:(8)安全审计员
  • C 语言:第 20 天笔记:typedef(类型重命名规则、应用场景与实战案例)
  • 黑客窃取 EDR 检测未检测到的 Windows 机密和凭证
  • 讲解计网中OSI模型及各层作用
  • 网闸和防火墙各有什么长处?
  • ValueTask 实战指南:解锁 .NET 异步编程的性能秘密
  • maui中配置安卓手机在测试环境连接网络
  • 创建Java集成开发环境
  • 车载诊断架构 --- 基于以太网做software download的疑问汇总
  • [QMT量化交易小白入门]-八十四、LSTM模型对期货市场的秒级Tick数据进行预测
  • 14.examples\01-Micropython-Basics\demo_yield.py 加强版
  • 深入浅出 ArrayList:从基础用法到底层原理的全面解析(中)
  • 深度剖析 Grok2 开源:技术原理与创新洞察
  • 奶茶品牌ESG实践:从绿色供应链到可持续竞争力
  • 离线可用的网络急救方案
  • [RK3568][Android11] Android->默认显示设置->系统->开发者选项(不用连续点击版本号)
  • FunASR基础语音识别工具包
  • 学习Python第13天
  • .NET表格控件Spread .NET v18.0——支持富文本、增强PDF导出
  • 【Linux基础知识系列】第一百零七篇 - 使用crontab设置定期任务
  • 【文献阅读】SparseGPT: Massive Language Models Can be Accurately Pruned in One-Shot
  • 【保姆级】AutoCAD 2026安装包下载及详细图文安装教程!
  • Mysql杂志(一)
  • 大模型中常用的提示词框架
  • Python爬虫第五课:selenium自动化爬虫实战
  • ICCV 2025|TRACE:无需标注,用3D高斯直接学习物理参数,从视频“预知”未来!
  • 从2D序列帧到3D体积感:我用AE+UE5 Niagara构建次世代风格化VFX工作流