服务网格 Istio
微服务通信基础设施
🎯 面试重点
- 服务网格概念
- Istio 核心功能
📖 概念
/**
* 服务网格
*/
public class ServiceMesh {
// 定义
/*
* 专门处理服务间通信的基础设施层
*
* Sidecar 模式:
* - 每个服务旁边部署一个代理
* - 由代理处理流量、安全、监控
*/
}
📖 Istio 功能
/**
* Istio 功能
*/
public class IstioFeatures {
// 流量管理
/*
* 路由规则
* 负载均衡
* 故障注入
*/
// 安全
/*
* mTLS 加密
* 身份认证
*/
// 可观测性
/*
* 指标
* 日志
* 追踪
*/
}
📖 面试真题
Q1: 服务网格解决了什么问题?
答: 服务网格(Service Mesh)主要解决了微服务架构中以下四类核心问题:
1. 服务通信问题
- 服务发现:自动发现服务实例,无需硬编码 IP 和端口。
- 负载均衡:智能路由,支持轮询、最少连接、一致性哈希等策略。
- 重试与超时:自动处理网络波动,提高请求成功率。
- 熔断与降级:防止故障扩散,保障系统稳定性。
2. 流量管理问题
- 流量路由:支持金丝雀发布、蓝绿部署、A/B 测试等高级发布策略。
- 流量镜像:将生产流量复制到测试环境,验证新版本。
- 故障注入:模拟网络延迟、服务故障,测试系统容错能力。
- 限流:控制服务访问频率,防止过载。
3. 安全问题
- 服务间认证:基于 mTLS(双向 TLS)的强身份认证。
- 服务间授权:细粒度的访问控制策略。
- 加密通信:传输层自动加密,防止数据泄露。
- 证书管理:自动证书颁发和轮换,简化 TLS 配置。
4. 可观测性问题
- 指标收集:自动采集请求量、延迟、错误率等指标。
- 分布式追踪:跨服务调用链追踪,快速定位性能瓶颈。
- 日志聚合:统一收集和查询服务日志。
- 可视化监控:提供 Dashboard,实时展示服务状态。
与传统方案的对比:
- 传统方式:通信逻辑嵌入业务代码,代码臃肿,难以维护。
- 服务网格:通信逻辑下沉到基础设施层,业务代码专注业务逻辑,实现关注点分离。
主流实现:Istio(最流行)、Linkerd、Consul Connect 等。
适用场景:大规模微服务架构、多云环境、对可观测性和安全性要求高的场景。
⭐ 重点:Istio 是服务治理的未来