1. 介绍
Service Mesh是基础设施层,用来处理服务与服务之间的通信。
- 本质:基础设施层
- 功能:对请求的分发
- 部署形式:网络代理
- 特点:完全和应用透明
归结一句话:Service Mesh是对请求进行转发的基础设施层,通常以SideCar(代理、编车)的形式部署,并且对应用透明
2. 产品形态是怎样的
一个Service Mesh实际上是由一组SideCar组成的一个网络
多加了一层控制平面,用来管理和控制整个Sidecar网络,这就是第二代Service Mesh技术
Service Mesh它的产品形态包括两部分:一部分是数据平面,一部分是控制平面,这两个平面组合在一起就形成了现在的Service Mesh技术形态。也可以这样来定义Service Mesh——“Service Mesh是SideCar的网络拓扑模式”
- 数据平面:所有的SideCar组合
-
3. 主要功能
流量控制(最重要的功能)
- 路由(实现蓝绿部署、灰度发布、AB测试等等)
- 流量转移、超时重试、熔断、限流等和系统弹性相关功能
- 方便调试引入了:故障注入、流量镜像功能
- 策略
- 进行流量策略
- 配置黑白名单
- 网络安全
- 授权
- 身份认证
可观测性(通过指标收集和展示、日志的手机、分布式追踪等来完整的观测系统的运行状态)
4. Service Mesh和kubernates的关系
Kubernates
- 主要解决容器的编排与调度的问题
- 本质上是管理应用的生命周期(可以简单的理解为他就是一个调度器)
- 对Service Mesh的部署提供了支持
Service Mesh
- 解决服务间网络通信问题
- 本质上是管理服务间通讯(可以理解为是一组Sidecar代理)
5. Service Mesh 和API 网关的异同点
现有的API网关已经提供了Service Mesh的相关功能,比如:负载均衡、服务发现、流量控制。具体他们有什么异同点呐?
Service Mesh的部署结构如下:
在代理,也就是Sidecar中,由Sidecar去完全接管发送到服务的请求,处理完成后再发送到另外的微服务。
Api网关的部署结构如下:
可以看到api网关实际上是部署在服务的边界的,他并没有侵入到服务的内部。他主要的功能实际上是对内部api进行聚合和抽象 来方便外部进行调用
结论如下:
- 功能有重叠,但角色不同
- Service Mesh 在应用内,API 网关在应用之上(边界)