服务网格

https://www.redhat.com/zh/topics/microservices/what-is-a-service-mesh

服务网格(例如开源项目 Istio)用于控制应用的不同部分之间如何共享数据。

微服务与服务网格

服务网格是如何运作的?

服务网格不会为应用的运行时环境加入新功能,任何架构中的应用还是需要相应的规则来指定请求如何从 A 点到达 B 点。但服务网格的不同之处在于,它从各个服务中提取逻辑管理的服务间通信,并将其抽象为一个基础架构层。

要这样做,服务网格会以网络代理阵列的形式内置到应用中。

在服务网格中,请求将通过所在基础架构层中的代理在微服务之间路由。正因如此,构成服务网格的各个代理有时也被称为”sidecar”(挎斗/边车),这是因为它们与每个服务并行运行,而非在内部运行。总之,这些”sidecar”代理(与每项服务分离)构成了网格式网络。
sidecar

sidecar 代理与微服务并肩协作,用于将请求路由给其他代理。这些 sidecar 共同构成了网格式网络。

Istio

Istio 是一个开源服务网格平台,它可以控制微服务之间数据的共享方式。其附带的 API 可以将 Istio 集成到任何日志记录平台、遥测或策略系统中。在设计上,Istio 可以在多种环境中运行:企业本地、云托管、Kubernetes容器,或虚拟机上运行的服务等。

Istio 的架构分为数据平面和控制平面两部分。
数据平面中,通过在环境中部署 sidecar 代理,即可为服务添加 Istio 支持。该 sidecar 代理与微服务并存,用于将请求路由给其他代理,或从其他代理那路由请求。这些代理共同构成了一个网格网络,可拦截微服务之间的网络通信。
控制平面则负责管理和配置代理来路由流量。此外,控制平面还可配置组件,以实施相关策略并收集遥测数据。