面试题答案
一键面试监控指标选取
- CPU 使用率:通过监控 Kafka 节点的 CPU 使用率,了解集群处理能力是否达到瓶颈。若 CPU 长期处于高负载(如超过 80%),可能意味着需要扩容。
- 内存使用率:Kafka 运行依赖大量内存,监控内存使用率可确保有足够内存用于消息缓存和处理。当内存使用率持续高于一定阈值(如 70%),可能需要考虑扩容。
- 磁盘 I/O:Kafka 消息持久化到磁盘,磁盘 I/O 繁忙程度影响性能。监控磁盘读写速率,若读/写速率长时间超过设定阈值(如读速率 > 100MB/s,写速率 > 50MB/s),考虑扩容。
- 网络带宽:对于大规模数据传输,网络带宽是关键。监控 Kafka 节点的网络流入/流出带宽,当带宽利用率超过 80%,可能需扩容。
- 分区负载均衡:监控每个分区的消息堆积量和处理速度,若部分分区堆积严重,而其他分区空闲,可能需调整分区或扩容。
- 消息堆积量:监控每个 topic 的消息堆积数量,若堆积量持续增长且处理速度缓慢,可能需扩容。
触发扩容缩容的条件设定
- 扩容条件
- CPU 使用率连续 5 分钟超过 80%。
- 内存使用率连续 5 分钟超过 70%。
- 磁盘读速率连续 5 分钟超过 100MB/s 或写速率连续 5 分钟超过 50MB/s。
- 网络带宽利用率连续 5 分钟超过 80%。
- 某个 topic 的消息堆积量在 10 分钟内增长超过 10000 条且未减少。
- 部分分区的消息处理延迟超过 10 秒且持续 5 分钟。
- 缩容条件
- CPU 使用率连续 10 分钟低于 40%。
- 内存使用率连续 10 分钟低于 40%。
- 磁盘读速率连续 10 分钟低于 20MB/s 且写速率连续 10 分钟低于 10MB/s。
- 网络带宽利用率连续 10 分钟低于 30%。
- 某个 topic 的消息堆积量在 10 分钟内减少超过 5000 条且未再增长,且整体消息处理延迟小于 1 秒。
- 所有分区的负载均衡良好,且集群整体资源利用率持续处于较低水平。
与业务系统联动
- 业务系统注册:业务系统在接入 Kafka 集群时,向一个管理平台注册自身的业务类型、流量需求模式(如白天高流量、夜间低流量等)、关键监控指标的权重(如对于实时数据分析业务,消息处理延迟权重较高)等信息。
- 动态策略调整:根据业务系统注册信息,管理平台结合监控指标,动态调整扩容缩容策略。例如,对于实时数据分析业务,当消息处理延迟指标触发扩容条件时,优先扩容;对于日志收集业务,当消息堆积量指标触发扩容条件时,优先扩容。
- 通知与反馈:在扩容或缩容操作前,管理平台向相关业务系统发送通知,告知操作时间和预计影响。操作完成后,收集业务系统的反馈,若业务系统反馈性能未达到预期,管理平台重新评估并调整策略。
- 预测性联动:通过分析业务系统历史流量数据和业务活动计划(如促销活动、版本更新等),提前预测流量变化。在流量高峰来临前,提前扩容;在流量低谷前,提前缩容,实现资源的更高效利用。