摘要:以下是微服务相关的常见面试题汇总,涵盖基础概念、设计原则、技术实现、常见问题及解决方案等,适合准备面试或考察候选人:
以下是微服务相关的常见面试题汇总,涵盖基础概念、设计原则、技术实现、常见问题及解决方案等,适合准备面试或考察候选人:
一、基础概念
什么是微服务?与单体架构的区别是什么?Ø 考察点:微服务的定义、优缺点、适用场景。
微服务的主要优缺点是什么?Ø 优点:独立部署、技术异构、可扩展性。
Ø 缺点:分布式系统复杂性、数据一致性、运维成本。
什么是领域驱动设计(DDD)?如何应用于微服务拆分?Ø 考察点:领域模型、限界上下文(Bounded Context)、聚合根(Aggregate Root)等概念。
二、微服务设计原则
微服务拆分的原则有哪些?Ø 单一职责、高内聚低耦合、按业务能力或领域拆分。
如何避免微服务过度拆分导致的“分布式单体”问题?Ø 考察点:服务粒度、通信成本、事务边界。
什么是康威定律(Conway's Law)?如何影响微服务设计?Ø 答案:系统设计会反映组织架构,团队结构应与服务拆分对齐。
三、服务通信
微服务间常见的通信方式有哪些?Ø 同步(REST/gRPC)、异步(消息队列如Kafka/RabbitMQ)。
REST和gRPC的区别及适用场景是什么?Ø REST基于HTTP/JSON,适合公开API;gRPC基于HTTP/2和Protobuf,性能高,适合内部服务。
如何保证服务间通信的可靠性?Ø 重试机制、熔断(Circuit Breaker)、超时控制、异步确认等。
四、服务发现与注册
什么是服务发现?主流工具有哪些?Ø 答案:服务动态注册与发现的机制,如Netflix Eureka、Consul、Zookeeper、Nacos。
客户端负载均衡和服务端负载均衡的区别?Ø 客户端负载均衡(如Ribbon)由消费方决定请求分发;服务端负载均衡(如Nginx)由中间件处理。
五、配置管理与API网关
如何管理微服务的配置?Ø 答案:集中式配置中心(Spring Cloud Config、Apollo、Nacos),支持动态更新。
API网关的作用是什么?Ø 路由转发、鉴权、限流、日志监控、请求聚合等。
Zuul和Spring Cloud Gateway的区别?Ø Gateway基于Reactor模型,性能更高;Zuul 1.x基于Servlet阻塞模型。
六、容错与高可用
什么是熔断机制?Hystrix和Resilience4j的区别?Ø 熔断:在服务不可用时快速失败,防止雪崩。Hystrix功能全面但停更,Resilience4j轻量且支持响应式。
如何实现服务限流?常见算法有哪些?Ø 计数器、滑动窗口、漏桶(Leaky Bucket)、令牌桶(Token Bucket)。
什么是服务降级?举例说明场景。Ø 答案:核心服务不可用时提供兜底方案,如返回缓存数据或默认提示。
七、数据管理
微服务中如何保证数据一致性?Ø Saga模式(补偿事务)、事件溯源(Event Sourcing)、最终一致性。
什么是CQRS模式?解决了什么问题?Ø 命令查询职责分离,提升读写性能,适应复杂查询场景。
如何处理跨服务的分布式事务?Ø 2PC(两阶段提交,强一致性)、TCC(Try-Confirm-Cancel)、基于消息队列的最终一致性。
八、监控与日志
微服务监控需要关注哪些指标?Ø 服务可用性、延迟、错误率、吞吐量(如Prometheus + Grafana)。
什么是分布式链路追踪?如何实现?Ø 答案:通过Trace ID和Span ID跟踪请求链路,工具如Zipkin、SkyWalking、Jaeger。
九、安全
如何实现微服务间的安全认证?Ø OAuth2、JWT、API密钥、双向TLS(mTLS)。
什么是服务网格(Service Mesh)?Ø 答案:通过Sidecar代理(如Istio、Linkerd)管理服务通信,解耦业务逻辑与治理功能。
十、部署与CI/CD
如何部署微服务?Ø 容器化(Docker)+ 编排工具(Kubernetes)。
微服务如何实现灰度发布?Ø 答案:通过流量染色、金丝雀发布(Canary Release)、A/B测试。
十一、分布式系统问题
CAP定理是什么?如何权衡?Ø 一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者不可兼得。
如何解决微服务中的雪崩效应?Ø 熔断、限流、降级、超时控制、资源隔离(如舱壁模式)。
十二、设计题与场景题
设计一个电商系统的微服务架构(包含订单、支付、库存等服务)。Ø 考察点:服务拆分、通信方式、数据一致性、容错机制。
如果某个微服务响应变慢,如何排查问题?Ø 链路追踪、日志分析、监控指标(CPU/内存)、数据库慢查询、线程阻塞检查。
十三、进阶问题
什么是事件驱动架构(EDA)?如何与微服务结合?Ø 答案:通过事件(如Kafka消息)解耦服务,实现异步通信。
Serverless与微服务的区别是什么?Ø Serverless关注无服务器计算(如AWS Lambda),微服务关注服务拆分与治理。
以上问题可根据候选人经验调整深度,结合实际项目案例提问更能考察实战能力。
来源:老客数据一点号