SRE运维面试题全解析:从理论到实践
情境与背景
作为一名SRE工程师,面试是职业发展的重要环节。面试官通常会从系统知识、工具使用、问题解决能力等多个维度考察候选人。本文基于真实面试场景,整理了高频面试题,并提供结构化的解析,帮助你快速掌握核心知识点,从容应对面试挑战。
核心面试题解析
121. Kafka消息积压的原因是什么,如何解决?
Why - 为什么这个问题重要?
Kafka是分布式消息队列的核心组件,消息积压直接影响系统的实时性和可靠性。超过65%的消息延迟问题与不当的消费者配置或再平衡策略直接相关。作为SRE工程师,快速定位积压原因并解决是保障业务连续性的关键能力。
How - 消息积压的核心原因分类
flowchart TB
A["消息积压"] --> B["生产者侧"]
A --> C["Broker侧"]
A --> D["消费者侧"]
B --> B1["消息突增/峰值"]
B --> B2["生产速度过快"]
C --> C1["分区数量不足"]
C --> C2["磁盘IO瓶颈"]
C --> C3["网络带宽限制"]
D --> D1["消费速度过慢"]
D --> D2["再平衡频繁"]
D --> D3["消费者故障"]
style B fill:#fff3e0
style C fill:#e3f2fd
style D fill:#c8e6c9
| 积压类型 | 核心原因 | 识别特征 |
|---|---|---|
| 生产者侧 | 消息突增、生产速度过快 |
UnderReplicatedPartitions 增加 |
| Broker侧 | 分区不足、磁盘IO瓶颈、网络受限 |
LeaderElection 频繁、磁盘使用率高 |
| 消费者侧 | 消费速度慢、再平衡频繁、故障 |
CurrentOffset 与 LogEndOffset 差距增大 |
What - 实战排查与解决
# 1. 查看消费者组状态(关键诊断)
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-consumer-group
# 重点关注: CURRENT-OFFSET vs LOG-END-OFFSET 的差距
# 2. 查看Topic分区分布
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic my-topic
# 3. 查看Broker磁盘状态
df -h
iostat -x 1 5
# 4. 查看消费者进程状态
ps aux | grep consumer
jstack <pid> | grep -i consumer
解决策略速查表
| 问题类型 | 解决方案 | 操作优先级 |
|---|---|---|
| 消费速度慢 | 增加消费者数量、调整 fetch.min.bytes、批量处理 |
⭐⭐⭐ |
| 再平衡频繁 | 增大 session.timeout.ms、使用静态成员、避免自动重平衡 |
⭐⭐⭐ |
| 分区不足 | 扩容分区数(需配合消费者扩容) | ⭐⭐ |
| 磁盘IO瓶颈 | 更换SSD、调整 log.dirs 到多块磁盘 |
⭐⭐ |
| 网络带宽限制 | 增加网卡带宽、优化压缩策略 | ⭐ |
记忆口诀:消速慢增消费数,再平衡调超时,分区少就扩容,磁盘慢换SSD
面试加分点:能说清消费者再平衡的三种策略(Range/RoundRobin/Sticky)区别,以及如何通过
max.poll.records、fetch.max.wait.ms等参数优化消费性能,证明你有大规模Kafka集群运维经验。
延伸阅读:想了解更多Kafka消息积压生产环境最佳实践?请参考 Kafka消息积压生产环境最佳实践:从诊断到优化。
122. Nacos怎么读入数据,怎么获取最新的变化,服务提供者分类?
Why - 为什么这个问题重要?
Nacos是Spring Cloud生态中最常用的配置中心和服务发现组件,掌握Nacos的数据读取、配置监听和服务分类是微服务架构的核心技能。配置热更新和服务动态发现是实现DevOps和持续交付的关键支撑。
How - Nacos核心机制解析
flowchart TB
subgraph 配置中心["配置中心"]
A["配置读取"] --> B["配置监听"]
B --> C["配置推送"]
end
subgraph 服务发现["服务发现"]
D["服务注册"] --> E["服务分类"]
E --> F["服务发现"]
end
style A fill:#e3f2fd
style D fill:#c8e6c9
What - 实战操作与代码示例
# 1. 查看Nacos配置
curl -X GET "http://localhost:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP"
# 2. 监听配置变化(Java代码)
ConfigService configService = NacosFactory.createConfigService(serverAddr);
configService.addListener(dataId, group, new Listener() {
@Override
public void receiveConfigInfo(String configInfo) {
System.out.println("配置变化: " + configInfo);
}
@Override
public Executor getExecutor() {
return null;
}
});
# 3. 服务提供者分类(配置示例)
# application.yml
spring:
cloud:
nacos:
discovery:
metadata:
version: v1
env: prod
weight: 100
服务提供者分类方式
| 分类维度 | 实现方式 | 适用场景 |
|---|---|---|
| 版本号 | metadata.version | 灰度发布、蓝绿部署 |
| 环境 | metadata.env | dev/test/prod隔离 |
| 权重 | metadata.weight | 流量分配、熔断降级 |
| 地域 | metadata.region | 多地域部署 |
记忆口诀:配置读取靠ConfigService,变化监听addListener,服务分类用metadata
面试加分点:能说清Nacos配置推送的长轮询机制(默认30秒),以及服务健康检查的两种模式(TCP/HTTP),证明你有Nacos生产环境实战经验。
延伸阅读:想了解更多Nacos生产环境最佳实践?请参考 Nacos生产环境最佳实践:从配置管理到服务发现。
文档信息
- 本文作者:soveran zhong
- 本文链接:https://blog.clockwingsoar.cn/2026/04/15/sre-interview-questions-part2/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)