1. 介绍

Service Mesh是基础设施层,用来处理服务与服务之间的通信。

  • 本质:基础设施层
  • 功能:对请求的分发
  • 部署形式:网络代理
  • 特点:完全和应用透明

归结一句话:Service Mesh是对请求进行转发的基础设施层,通常以SideCar(代理、编车)的形式部署,并且对应用透明

2. 产品形态是怎样的

一个Service Mesh实际上是由一组SideCar组成的一个网络
image.png
多加了一层控制平面,用来管理和控制整个Sidecar网络,这就是第二代Service Mesh技术
image.png
Service Mesh它的产品形态包括两部分:一部分是数据平面,一部分是控制平面,这两个平面组合在一起就形成了现在的Service Mesh技术形态。也可以这样来定义Service Mesh——“Service Mesh是SideCar的网络拓扑模式”

  • 数据平面:所有的SideCar组合
  • 控制平面:用来进行总体的控制

    3. 主要功能

  • 流量控制(最重要的功能)

    • 路由(实现蓝绿部署、灰度发布、AB测试等等)
    • 流量转移、超时重试、熔断、限流等和系统弹性相关功能
    • 方便调试引入了:故障注入、流量镜像功能
  • 策略
    • 进行流量策略
    • 配置黑白名单
  • 网络安全
    • 授权
    • 身份认证
  • 可观测性(通过指标收集和展示、日志的手机、分布式追踪等来完整的观测系统的运行状态)

    4. Service Mesh和kubernates的关系

  • Kubernates

    1. 主要解决容器的编排与调度的问题
    2. 本质上是管理应用的生命周期(可以简单的理解为他就是一个调度器)
    3. 对Service Mesh的部署提供了支持
  • Service Mesh

    1. 解决服务间网络通信问题
    2. 本质上是管理服务间通讯(可以理解为是一组Sidecar代理)

image.png

5. Service Mesh 和API 网关的异同点

现有的API网关已经提供了Service Mesh的相关功能,比如:负载均衡、服务发现、流量控制。具体他们有什么异同点呐?

Service Mesh的部署结构如下:
在代理,也就是Sidecar中,由Sidecar去完全接管发送到服务的请求,处理完成后再发送到另外的微服务。
image.png

Api网关的部署结构如下:
可以看到api网关实际上是部署在服务的边界的,他并没有侵入到服务的内部。他主要的功能实际上是对内部api进行聚合和抽象 来方便外部进行调用
image.png
结论如下:

  • 功能有重叠,但角色不同
  • Service Mesh 在应用内,API 网关在应用之上(边界)