第 14 / 19 篇

第 13 章 运维入门:先看什么,再改什么

四类基本信号

服务可用性:Broker、Controller、客户端是否健康,是否有频繁断连。数据安全:副本是否同步、是否存在不可用分区、低于最小同步副本的情况。资源:磁盘剩余与增长、网络、CPU、内存和 GC。业务进度:Lag、端到端延迟、错误率和死信数量。

“CPU 不高”并不表示系统没有瓶颈。一个热点分区、外部数据库慢查询或磁盘写入限制,都可能拖慢处理。

Lag 一直上涨的排查顺序

先确认输入速率是否增加,再看消费速率是否下降;观察是否只有某个分区落后;检查错误重试、下游数据库、第三方 API 和再均衡;最后才判断是否需要增加消费者、分区或 Broker。

如果只有某个大客户占了绝大部分流量,且 Key 是客户号,新增消费者也可能无法分担那个热点分区。修改 Key 又可能影响顺序,所以需要在顺序要求与负载分摊之间设计。

常见故障对照

现象 优先检查 可以采取的下一步
连接 localhost:9092 失败 Broker 是否启动、端口、终端环境 看 Broker 日志,确认地址是否同一台机器
bootstrap 能连,后续连接失败 advertised.listeners 是否可被客户端访问 修正通告地址,特别注意容器与远程访问
提示 topic 已存在 是否重复执行创建 先 describe,确认后继续
消费没有输出 主题名、组进度、是否有新数据 换全新练习组从头读取
持续重复处理 提交是否成功、业务是否异常 检查处理与提交顺序、幂等凭证
NOT_ENOUGH_REPLICAS ISR 与 min.insync.replicas 修复副本健康,别先降低可靠性目标
磁盘快速增长 流量、保留、失衡与副本恢复 测算增长,规划容量和策略

生产环境边界

本书的 PLAINTEXT 本机单节点没有加密认证,也没有机器故障容错。生产部署需要按业务要求规划多节点与故障域、KRaft 仲裁、安全访问、容量、监控告警、升级和恢复演练。

TLS 保护传输,SASL 或双向 TLS 等机制提供身份验证,ACL 限制谁能读写哪些资源。只开放端口并不等于权限管理。安全配置应以对应版本官方文档为准,凭证不要写进书籍示例或提交到代码仓库。