Service Mesh模式
背景:微服务模式下,线上往往存在很多微服务实例,不同的实例之间,通过http、rpc调用完成服务之间的调用问题。
在这种情况Service Mesh就把网络管控的一些功能,统一摘出来处理做成了基础设施层(Service的底座),通常以Sidecar的形式部署,用来处理服务和服务之间的通信。Sidecar 被称为边车模式,简单说就是三轮摩托车,在某些国外的文档中是这么介绍的,业务作为一个独轮车依赖于一辆摩托车,组合起来一起运行。
Service Mesh主要功能
- 流量控制:路由(蓝绿部署、灰度发布、A/B测试)、流量转移、超时重试、熔断、故障注入、流量镜像
- 策略:流量限制、黑白名单
- 网络安全:授权及身份认证
- 可观测性:指标收集和展示、日志收集、分布式追踪
Service Mesh的组成
Service Mesh是由两部分组成的数据平面和控制平面。如下图。
- 数据平面:所有的Sidecar的组合。
- 控制平面:用来进行总体的控制。
Service Mesh和Kubernetes的关系
Kubernetes:
- 解决容器编排与调度问题
- 本质上是管理应用生命周期(调度器)
- 给予Service Mesh支持和帮助,是Service Mesh的底层
Service Mesh:
- 解决服务间网络通信问题
- 本质上市管理服务通信(代理)
- 是对Kubernetes网络功能方面的延伸和扩展
Service Mesh和API网关的异同点
左图:Service Mesh中的Sidecar处理网络请求,本服务可以通过Sidecar调用到其他服务。
右图:API网关是附着在应用的边界,不侵入应用内部,API网关是对一些API的聚合和抽象,以方便外部调用。
异同点:
- 功能有重叠,但是角色不同。
- Service Mesh在应用内部,API网关在应用外边。