服务治理与微服务

1. 服务注册与发现

1.1 注册中心作用

  • 服务注册:服务启动时注册到注册中心

  • 服务发现:客户端从注册中心获取服务列表

  • 健康检查:检测服务是否可用

  • 负载均衡:选择服务实例

1.2 常见注册中心

  • ZooKeeper

    • CP 系统,强一致性

    • 集群模式,ZAB 协议

    • 适合对一致性要求高的场景

  • Eureka

    • AP 系统,最终一致性

    • 自我保护机制

    • 适合云环境,容忍网络分区

  • Consul

    • CP/AP 可配置

    • 支持多数据中心

    • 内置健康检查和 KV 存储

  • Nacos

    • 阿里开源,支持配置管理

    • CP/AP 双模式

    • 动态配置更新

1.3 注册中心对比

特性
ZooKeeper
Eureka
Consul
Nacos

CAP

CP

AP

CP/AP

CP/AP

健康检查

心跳

心跳

多种

心跳/TCP

配置管理

支持

不支持

支持

支持

多数据中心

不支持

不支持

支持

支持

语言

Java

Java

Go

Java

1.4 服务注册流程

2. 服务间通信

2.1 RPC 框架

  • Dubbo

    • 阿里开源,成熟稳定

    • 支持多种协议和序列化

    • 服务治理功能丰富

  • gRPC

    • Google 开源,基于 HTTP/2

    • Protobuf 序列化

    • 跨语言支持好

2.2 负载均衡策略

  • 随机(Random)

  • 轮询(Round Robin)

  • 加权轮询(Weighted Round Robin)

  • 最少活跃调用(Least Active)

  • 一致性哈希(Consistent Hash)

2.3 负载均衡实现

3. 微服务架构核心问题 ⭐⭐⭐⭐⭐

3.1 服务拆分

  • 拆分原则

    • 单一职责

    • 业务边界清晰

    • 高内聚低耦合

  • 拆分粒度

    • 不宜过细(增加复杂度)

    • 不宜过粗(失去微服务优势)

3.2 分布式事务 ⭐⭐⭐⭐⭐

两阶段提交(2PC)

TCC(Try-Confirm-Cancel)

Saga 模式

本地消息表

分布式事务对比

方案
一致性
性能
复杂度
适用场景

2PC

强一致

数据库层事务

TCC

最终一致

金融业务

Saga

最终一致

长事务

本地消息表

最终一致

异步场景

3.3 服务熔断与降级 ⭐⭐⭐⭐⭐

熔断器原理

熔断器实现

降级策略

3.4 限流 ⭐⭐⭐⭐⭐

限流算法详解

固定窗口计数器

滑动窗口计数器

漏桶算法

令牌桶算法

算法对比

3.5 链路追踪

  • 核心概念

    • TraceID:全局唯一 ID

    • SpanID:单次调用 ID

    • 父子关系

  • 常见框架

    • Zipkin

    • SkyWalking

    • Jaeger

3.6 配置中心

  • 配置管理需求

    • 集中管理

    • 动态更新

    • 版本管理

    • 权限控制

  • 常见方案

    • Apollo(携程)

    • Nacos(阿里)

    • Spring Cloud Config

4. API 网关

4.1 网关职责

  • 路由转发

  • 统一认证鉴权

  • 限流熔断

  • 日志监控

  • 协议转换

4.2 常见网关

  • Nginx + Lua

    • 性能高

    • 配置灵活

  • Kong

    • 基于 OpenResty

    • 插件丰富

  • Spring Cloud Gateway

    • 异步非阻塞

    • 与 Spring 生态集成好

  • Zuul

    • Netflix 开源

    • 同步阻塞(Zuul 1.x)

5. 服务网格(Service Mesh)⭐⭐⭐⭐

5.1 Service Mesh 概念

5.2 Istio 架构

数据平面(Data Plane)

控制平面(Control Plane)

5.3 Service Mesh 功能

流量管理

弹性功能

安全功能

6. 面试要点总结

6.1 核心知识点

知识点
重要程度
考察频率

分布式事务

⭐⭐⭐⭐⭐

非常高

限流算法

⭐⭐⭐⭐⭐

熔断降级

⭐⭐⭐⭐⭐

服务注册发现

⭐⭐⭐⭐

Service Mesh

⭐⭐⭐⭐

负载均衡

⭐⭐⭐⭐

6.2 关键记忆点

7. 常见面试题

7.1 分布式事务

Q1:TCC 和 2PC 的区别?

Q2:如何保证本地消息表的可靠性?

7.2 限流

Q3:令牌桶和漏桶的区别?

Q4:如何实现分布式限流?

7.3 熔断降级

Q5:熔断器的三种状态及转换条件?

Q6:降级策略有哪些?

7.4 Service Mesh

Q7:Service Mesh 解决了什么问题?

Q8:Istio 的流量管理如何实现金丝雀发布?

Last updated