25 问按治理生命周期组织:拆分与边界(限界上下文/康威定律/回退单体)、通信与发现(注册中心语义/重试预算)、运行时治理(熔断三态/舱壁/灰度)、数据架构(每库独立/CQRS/事件版本化)。
微服务面试的陷阱在于:背得出「拆分原则、注册发现、熔断限流」这些名词,却答不好「为什么这么拆、拆错了怎么办」。这份 25 问按治理生命周期组织——从拆分、通信,到运行时治理,最后到数据架构,每问给出答题骨架。
一、拆分与边界(6 问)
1. 微服务拆分的依据是什么?
围绕业务能力(限界上下文)拆,而不是按技术层拆。可操作的判据:独立的数据所有权、独立的变更节奏、独立的扩缩容需求。三者满足两条才值得拆。
2. 服务拆太细有什么代价?
分布式事务、网络开销、运维复杂度、排查难度全部上升。面试观点:先拆「粗粒度的服务」,等团队规模和变更节奏逼你再拆——过度拆分比单体更难回退。
3. 什么是康威定律对架构的影响?
系统结构会趋同于组织沟通结构。想拆出清晰的服务边界,先让团队边界清晰(一个服务一个 owner)。这问考察架构的社会学视角。
4. 什么情况下应该回退到单体?
团队小(< 10 人)、业务早期边界不明、运维能力不足。Modular Monolith(模块化单体)+ 后续按模块拆出,是更稳的路径。
5. 服务间怎么避免「隐式耦合」?
共享数据库是最大的反模式;契约先行(OpenAPI/protobuf);只通过接口交互,禁止绕过服务直连它的存储。
6. API 版本化策略?
向后兼容优先(加字段不删字段);破坏性变更走新版本(URL/Header 版本)+ 双跑期 + 下线公告。加分点:提到消费者驱动契约测试。

二、通信与发现(6 问)
7. 同步 RPC 与异步消息怎么选?
需要立即得到结果的读操作用 RPC;状态变更、事件广播、削峰用消息。原则:能用事件解耦的不要用同步调用串起来。
8. 服务注册与发现的完整流程?
服务启动注册(心跳续期)→ 注册中心(Nacos/Consul/ETCD)→ 消费方订阅推送变更 → 客户端负载均衡。加分点:说明注册中心挂了服务仍可靠本地缓存运行——注册中心是「最终一致的路由表」不是关键路径。
9. 负载均衡策略有哪些?怎么选?
轮询/加权轮询(静态均衡)、最少连接/最少 RT(动态)、一致性哈希(会话亲和)。有状态或缓存场景用哈希,普通服务用动态策略。
10. 重试的正确姿势?
只重试幂等操作;指数退避 + 抖动;重试预算(如重试不超过总请求 10%)防重试风暴;超时要逐层递减。
11. 网关在微服务架构里的位置与职责?
统一入口:鉴权、限流、路由、灰度、协议转换。原则是「薄网关」——业务逻辑下沉到服务,编排型 BFF 单独成层。
12. 消息丢失与重复怎么处理?
丢失:生产确认 + 持久化 + 消费手动 ack 三段保证;重复:消费端幂等(唯一键/状态机)。「至少一次投递 + 消费幂等」是标准组合拳。
三、运行时治理(7 问)
13. 配置中心解决什么问题?动态配置的边界?
环境隔离、版本回滚、灰度发布、动态调参(限流阈值/开关)。边界:敏感信息走密钥管理,不适合「明文塞配置中心」。
14. 熔断器的三态模型?
关闭(正常)→ 打开(错误率/慢调用超阈值,直接失败)→ 半开(放少量探测流量)→ 恢复关闭。加分点:熔断维度是「依赖 + 方法」级,不是服务级一刀切。
15. 舱壁隔离是什么?
把资源(线程池/信号量/连接池)按依赖隔离,一个下游挂掉不占光全局资源。它是雪崩传导的物理隔断。
16. 灰度发布的完整链路?
流量标记 → 网关按规则路由到灰度实例 → 数据兼容(新旧版本同库共存)→ 监控对比 → 全量。难点在数据结构变更的双写迁移。
17. 分布式链路追踪的关键设计?
TraceID 全链路透传、Span 记录父子关系与耗时、采样策略(头部采样保成本、尾部采样保问题请求)。OpenTelemetry 是当前事实标准。
18. 服务的健康检查怎么做才可靠?
存活探针(进程在不在)与就绪探针(能不能干活)分开;就绪检查要覆盖真实依赖(DB 连接池可用),否则流量会打到「活着但干不了活」的实例。
19. 服务优雅上下线怎么做?
上线:先注册后放流量(预热期低权重);下线:先摘流量 → 等在途请求完成 → 再停进程。MQ 消费者下线要等本地队列消费完。
四、数据架构(6 问)
20. 「每个服务自己的数据库」怎么落地?
物理上独立 schema/实例,跨服务数据获取走 API 或事件同步的本地副本(读模型)。禁止跨库 JOIN——需要 JOIN 说明边界拆错了。
21. 跨服务查询(列表页要聚合多服务数据)怎么办?
CQRS:事件驱动的读模型/物化视图,查询侧冗余聚合;或 BFF 编排聚合(实时但链路长)。高频查询场景选读模型。
22. 分布式事务在微服务里的默认选择?
事件驱动的最终一致(本地消息表/事务消息 + 消费幂等 + 对账兜底)。强一致只在资金核心链路用 TCC。参考分布式事务专篇的对比表。
23. 数据库变更怎么跨服务协调?
演进式设计:兼容式变更(加列不删列)→ 双写 → 切读 → 清理,每步可回滚。配合 Flyway/Liquibase 版本化管理 schema。
24. 事件设计的版本化怎么处理?
事件是长期契约:只加字段不改语义;大版本变更发新 topic 双跑迁移;消费方对未知字段必须容忍(向前兼容)。
25. 微服务架构下怎么做容量规划?
按链路模型推每层 QPS → 单服务压测拿单机水位 → 计算实例数与中间件配额 → 全链路压测验证。可展开讲影子库与预案演练,体现完整方法论。
#微服务#后端面试#服务治理#架构设计

