微服务组件选型面试题:REST、Dubbo、gRPC、MQ、Gateway与Mesh
详细矩阵、Demo与Runbook见组件选型主线。
| 问题 | 标准回答 | 原理页 |
|---|---|---|
| REST、Dubbo、gRPC、MQ怎么选 | 先看是否立即需要结果和是否要持久堆积;外部API偏REST,成熟Java体系可用Dubbo,多语言强IDL/流式偏gRPC,异步削峰和最终一致用MQ。 | 通信选型 |
| Gateway和Mesh区别 | Gateway主要治理南北向用户/API流量;Mesh治理东西向工作负载通信、mTLS和通用路由,两者可组合。 | Gateway与Mesh |
| 服务发现有哪几种 | 客户端发现由SDK选实例,ClusterIP由平台按连接选择,Headless把地址给Resolver,Mesh由代理维护EDS并选择。 | 发现与负载 |
| 为什么多层重试危险 | 每层次数相乘,2×2×3会形成12次Attempt;写请求还可能重复副作用。 | 重复治理 |
| mTLS能代替用户授权吗 | 不能。mTLS证明工作负载身份,用户认证和资源授权由Gateway与Provider安全框架完成。 | 能力Owner |
| 上Mesh后还需要业务幂等吗 | 需要。代理超时和重试不知道数据库是否提交,幂等、状态机、事务和补偿仍属于业务。 | 能力Owner |
| JDK 8老项目怎样迁移 | 先补契约、指标、Deadline和幂等,再逐项迁移Ribbon/Hystrix/Zuul/Sleuth,不能一次替换全部组件。 | 技术栈 |
| Boot 3新项目怎样选 | 使用匹配的Cloud BOM,按场景选择Nacos/Consul/K8s发现、现代HTTP客户端、Gateway、Sentinel/Resilience4j和Micrometer/OTel。 | 技术栈 |
项目回答模板
外部客户端走REST和Gateway,内部Java核心调用按团队体系选Dubbo或Feign,多语言流式采集用gRPC,支付后的积分、ES和通知通过Outbox+MQ。Kubernetes或客户端明确一个主要实例选择层,Mesh负责工作负载mTLS和通用遥测。Deadline从入口传播,重试集中一层且受预算控制,幂等和事务始终由Provider保证。
本章小结
选型回答必须同时讲业务语义、团队成本和能力所有权,不能只比较吞吐数字。
