服务网格(service mesh)
是一个专注于处理服务间通信的基础设施,负责在云原生应用组成的复杂服务拓扑中可靠的传递请求。
介绍
服务网格的特点:
- 轻量级网络代理:代理应用间的所有流量
- 应用无感
- 解决的需求包括服务发现、负载均衡、故障恢复、度量和链路监视
- 处理服务间可能出现的超时、重试、监控、链路追踪等
- 可以解决:A/B测试、canary 部署、速率限制、访问控制、加密、端到端身份认证
常见的服务网格
- 服务网格最具代表性的是 Istio,服务网格 Istio 的实现:
控制平面(Service Mesh Contrtol Plane)
:- SideCar 的注入 Istio 自动完成,注入后,Pod 之间的流量均由注入的 SideCar 代理
数据平面:UDPA
- 通过定制的 Envoy (istio-proxy/sidecar)实现
- AppMesh:AWS 自研控制平面、基于 Envoy 开发的数据平面,主要支持流量控制和 AWS 产品的融合
- NginxMesh:nginx 开源的 mesh 方案,使用 nginx 代替 envoy 与 Istio 控制平面集成
- Linkerd:比 Istio 还早,数据平面和控制平面均自研
- Kuma:Kong 开发的,数据平面使用 envoy,控制平面自研
- Meshery:一种服务网格的控制平台,支持多种服务网格,如 Istio、Linkerd、Consul 等
- SofaMesh:蚂蚁金服自研,使用 golang 开发的 sidecar MOSN 代替 envoy,对 Mixer、Pilot、Citadel 均有优化