概述

这篇文章是我在 2019 年 5 月份编撰的,但是一直没有写完,放在草稿箱里,今天突然被我翻出来了,所以顺手编辑了一下。其实没有写完的原因就是因为之前翻译了不少内容,觉得直接打着翻译的名号又辜负了自己的一些理解,所以就堆着了,后面就逐渐地加上了自己的体会和理解,今天顺便整理一下。

什么是 Service Mesh

Service Mesh 是一种工具,通过在平台层而不是应用层插入可观察性、安全性和可靠性功能来为应用程序添加这些功能。

Service Mesh 通常被实现为一组可扩展的网络代理,与应用程序代码一起部署(这种模式有时被称为 sidecar)。这些代理处理微服务之间的通信,同时也作为一个点,可以引入服务网状结构的功能。代理包括服务网状结构的数据平面,并作为一个整体由其控制平面控制。例如现在最为流行的 Service Mesh 框架之一 Istio,就是典型的这种架构,默认地,Istio 就在客户端和服务器之间各安插一个 Sidecar:Envoy,客户端和服务端的流量都走 Envoy,从而屏蔽了中间的平台细节,让客户端和服务器都感觉自己就是和对方直接连接。

服务网格特点

服务网格结构

现在(2021)的 Service Mesh(Isito 和 Linkerd,包括我们公司自己开发的)都由数据平面和控制平面组成:

图 1:旧版本 Istio 示意图
图 2:新版本 Istio 示意图

Istio 支持的特性

Reference