微服务架构
精通预计深耕 6 个月+星团 后端
岗位需求
0 核心 · 0 加分
在职岗位将其列为技能要求
核心岗位薪资带
—
核心要求岗位的月薪区间
需求趋势
上升 0稳定 0收缩 0
核心要求岗位的趋势分布
面试题库
高频真题 · 参考答案随题展开1. 微服务与单体如何取舍?服务怎么拆分?
单体开发部署简单、调用进程内完成、事务天然一致,适合早期与中小规模;痛点是代码耦合互相拖累、团队协作冲突、单模块故障全站重启、技术栈锁死。微服务换来独立部署与扩缩、团队自治、故障隔离与技术异构,代价是分布式复杂性:网络不可靠、分布式事务、链路排障、运维成本翻倍。判断:业务与团队规模没到(康威定律)别拆。拆分原则:按业务能力与领域限界上下文(DDD)拆,而不是按技术层拆;数据先分(每服务独立库)再拆代码,共享库是耦合的开始;服务要高内聚低同步依赖,宁可异步事件解耦;从「拆出来收益最大且边界清晰」的模块试点(如计费),配齐 CI、监控、服务治理再渐进。能提康威定律与数据库先行两点即显经验。
2. 微服务之间同步与异步通信如何选型?
同步调用(REST、gRPC)实时拿结果、语义直观,适合需要立即反馈的核心链路(下单扣库存、鉴权);风险是级联故障(下游慢拖死上游)与可用性相乘(三个 99.9% 串起来只剩 99.7%),必须配超时、熔断、舱壁隔离与降级。异步消息(Kafka、RabbitMQ、RocketMQ)解耦与削峰,生产者不关心谁消费,天然支持多下游与流量缓冲,适合状态变更通知、审计、批处理与非核心路径;代价是最终一致、消息重复乱序要处理、排查链路更长。选型判据:需要立即结果与强一致走同步;可以事后完成、多订阅方、流量削峰走异步;常混合使用(下单接口同步扣库存,异步发积分与通知)。再加一对一与一对多的对照,以及 outbox 模式保证业务与消息原子性,即可满分。
3. 服务注册与发现的工作原理是什么?
模式三角色:服务提供者启动时把实例地址(IP 加端口加元数据)注册到注册中心,定时续约并发心跳;消费者从注册中心订阅目标服务实例列表并本地缓存,调用时按负载均衡策略选一个直连;实例下线主动注销或心跳超时被动摘除,注册中心推送变更(watch、长轮询)让消费者刷新。关键设计点:健康检查要区分存活与就绪(就绪不过不接流量);注册信息缓存在客户端,注册中心短暂不可用不影响已有调用(自愈能力);优雅上下线——先改就绪状态摘流量、等在途请求排空再停进程,配合注销避免调用打到半死实例;多数据中心与故障时的一致性(CP 如 etcd、Consul,AP 如 Eureka 的取舍)。Kubernetes 里 Service 加 DNS 加 Endpoints 就是内置实现。能讲心跳、缓存、优雅下线三点即完整。
4. 熔断、降级、限流分别解决什么问题?
三者都是服务自我保护与故障隔离手段但层次不同。限流是入口侧的过载保护:限制单位时间请求量(计数器、滑动窗口、漏桶、令牌桶),超限快速拒绝或排队,防止流量打垮自身,常按接口、用户与租户维度,分布式场景用 Redis 加 Lua 或中间件统一计数。熔断是调用侧的故障隔离:统计下游错误率或慢调用比例,超过阈值进入打开状态直接失败不再发起调用(快速失败保护上游线程不被拖死),半开状态放试探请求决定恢复,实现如 Sentinel、Resilience4j、Hystrix,状态机是必考点。降级是有损服务的预案:故障或过载时返回兜底数据(缓存快照、默认值、简化流程、友好提示),保核心弃边缘(推荐停了给热门榜)。组合语义:限流防外部洪峰,熔断防内部级联,降级保用户体验,配监控告警闭环。
5. 分布式事务有哪些方案?如何选型?
2PC 与 XA:协调者先 prepare 再 commit,强一致但同步阻塞、协调者单点、吞吐低,适合数据库间强一致短事务。TCC:业务层 try 确认加取消三段,锁粒度细、性能好,但每个参与方要写三个接口且要幂等与空回滚、悬挂处理,成本最高,资金类核心场景用。Saga:长流程拆本地事务加补偿,正向失败逐个执行补偿回滚,适合跨服务长流程(订单、出行),要处理补偿失败与隔离级别(全局锁或业务允许脏读)。本地消息表加 MQ(最终一致):业务与待发消息同库写入,任务轮询或 binlog 投递,消费方幂等,实现简单最常用。还有事务消息(RocketMQ 半消息)与基于事件溯源的方案。选型主线:能最终一致就不用强一致,跨库短事务才 2PC,资金敏感上 TCC,流程长用 Saga 加补偿,普通业务消息表即可。
官方文档
1 条Chris Richardson 的微服务模式百科,拆分到部署全景
推荐教程
2 条定义微服务的奠基文章,理解动机与边界的第一手资料
数十个任务导向的官方上手教程,Java 微服务生态
推荐课程
1 条配置、注册发现、网关与弹性组件的官方文档入口
上手实践
1 条海量 Java 与 Spring 可运行示例,微服务模块齐全
难度档决定星等与难度分权重(入门 1 / 进阶 2 / 精通 3);学习资源由编辑部遴选并持续维护, 经验心得欢迎在上方「知识分享」区署名分享。

