
Kafka 学习笔记基于 3 台云服务器集群实战整理7 课文中 IP 均为示例已脱敏版本3.6.2华为云镜像安装文档目录docs/kafka-学习笔记.md博客发布时拷贝docs/目录即可示例 IP 对照表节点公网 IP内网 IPbroker.idServer 1203.0.113.1110.0.1.111Server 2203.0.113.1210.0.1.122Server 3203.0.113.1310.0.1.133一、Kafka 是什么白话高吞吐的分布式消息队列 / 事件流平台——生产者发消息到 Topic消费者按组订阅处理。比喻Topic 快递分拣中心里的「货架区」Partition 货架上的「格子」并行处理靠它Offset 每个格子里的「取件序号」Consumer Group 取件小组组内分工、组间各拿一份与 Dubbo 对比KafkaDubbo通信模式异步消息同步RPC调用方发完即走不等处理结果等 Provider 返回解耦生产者不关心谁消费必须知道接口二、本集群环境2.1 三台 Broker名称公网 IP内网 IPbroker.idServer 1203.0.113.1110.0.1.111Server 2203.0.113.1210.0.1.122Server 3203.0.113.1310.0.1.1332.2 安装与路径项目路径程序/opt/kafka日志数据/var/lib/kafka/logs服务systemctl start/stop/status kafka2.3 Bootstrap 连接串10.0.1.11:9092,10.0.1.12:9092,10.0.1.13:90922.4 关键集群参数本集群参数值含义default.replication.factor2每条消息默认 2 副本min.insync.replicas1至少 1 副本写入成功即可 acklisteners/advertised.listeners内网 9092客户端连 advertised 地址三、七课知识地图课次主题核心要点第 1 课集群配置listeners、advertised.listeners、RF2第 2 课Topic / Partition / Offset消息存在哪、序号怎么算第 3 课Consumer Group组内分摊 Partition组间独立消费第 4 课Leader / ISR / 容错停一台 Broker副本顶上第 5 课acks / 至少一次 / 幂等可靠性 vs 性能第 6 课迷你订单系统order-events 多 Consumer Group综合与 Dubbo 组合见 Dubbo 第 5 课四、核心概念4.1 Topic 与 PartitionTopic逻辑分类如order-eventsPartition物理分片顺序写、并行读本集群示例 TopicTopic分区副本用途lesson1-hello默认2入门lesson2-demo32分区实验order-events32订单事件Kafka 第 6 课 Dubbo 第 5 课4.2 Offset每条消息在 Partition 内有递增 OffsetConsumer 通过 Offset 记录读到哪了可earliest从头或latest只读新消息4.3 Consumer GroupTopic order-events (3 partitions) │ ├── Group: notification-service → 消费全部 3 分区 ├── Group: inventory-service → 独立再消费 3 分区 └── Group: audit-service → 再消费 3 分区同 Group 内一个 Partition 同一时刻只给一个 Consumer不同 Group各自维护 Offset互不影响4.4 Leader 与 ISR每个 Partition 有 1 个Leader读写入口ISRIn-Sync Replicas与 Leader 同步的副本集合Leader 挂了 → ISR 里某副本选举为新 Leader第 4 课停 Broker 实验4.5 可靠性acks 与幂等acks含义可靠性0不等 Broker 确认最低1Leader 写入即成功中等allISR 全部确认最高本课 DubboKafka Producer 用allAt least once可能重复需幂等业务去重或 Kafka 幂等 ProducerExactly once端到端最难需事务或幂等 去重五、常用命令5.1 服务systemctl status kafka systemctl restart kafka5.2 Topic 管理# 列出 Topic/opt/kafka/bin/kafka-topics.sh\--bootstrap-server10.0.1.11:9092--list# 查看详情/opt/kafka/bin/kafka-topics.sh\--bootstrap-server10.0.1.11:9092\--describe--topicorder-events# 创建 Topic示例/opt/kafka/bin/kafka-topics.sh\--bootstrap-server10.0.1.11:9092\--create--topicmy-topic\--partitions3--replication-factor25.3 生产 / 消费消息# 控制台生产者/opt/kafka/bin/kafka-console-producer.sh\--bootstrap-server10.0.1.11:9092\--topicorder-events# 控制台消费者从头读/opt/kafka/bin/kafka-console-consumer.sh\--bootstrap-server10.0.1.11:9092\--topicorder-events\--from-beginning# 指定 Consumer Group/opt/kafka/bin/kafka-console-consumer.sh\--bootstrap-server10.0.1.11:9092\--topicorder-events\--groupmy-group5.4 查看 Consumer Group/opt/kafka/bin/kafka-consumer-groups.sh\--bootstrap-server10.0.1.11:9092\--list/opt/kafka/bin/kafka-consumer-groups.sh\--bootstrap-server10.0.1.11:9092\--describe--groupmy-group六、第 6 课order-events 迷你系统场景订单创建后发事件多个下游独立消费。Producer → order-events → Group: notification发短信 → Group: inventory扣库存 → Group: audit写日志消息示例Dubbo 第 5 课写入ORDER_CREATED|orderIdORD-xxx, productlesson5-product-1, amount99.0, provider10.0.1.11七、listeners 为什么要配 advertisedlistenersBroker绑定哪个地址/portadvertised.listeners告诉客户端应该连哪里云服务器常见坑Broker 绑内网若 advertised 配成 localhost 或错 IP外网/其他机器连不上。本集群统一用内网 IP 9092三台 ECS 内网互通。八、故障实验回顾第 4 课正常kafka-topics.sh --describe看 Leader 分布停一台 Broker如 Server 3再 describe部分 PartitionLeader 切到其他 BrokerProducer/Consumer仍可工作RF2 保证有副本恢复 Broker重新加入 ISR九、与 Dubbo 组合第 5 课用户请求 → Dubbo Consumer → Dubbo Provider同步创建订单、返回 orderId │ └── Kafka Producer → order-events │ 库存 / 短信 / 审计 ← Consumer GroupsDubbo同步、要结果Kafka异步、通知下游、易扩展十、运维要点磁盘日志目录/var/lib/kafka/logs要监控空间RF 与 Broker 数RF2 至少 2 台 Broker 存活才安全9092 一般内网访问公网需安全组 正确 advertised不要与独立 ZK 抢 2181本集群 ZK 与 Kafka 分离生产消息建议acksall 合理retries 幂等设计十一、一句话总结Kafka 分布式日志 / 消息流Topic 分类、Partition 并行、Consumer Group 分工适合异步、解耦、高吞吐与 Dubbo 组合时负责事件通知不负责同步返回业务结果。