3

什么是 Service Mesh

 3 years ago
source link: https://liqiang.io/post/what-is-service-mesh-and-why-4be2ffad?lang=ZH_CN
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

什么是 Service Mesh

@SOLUTION· 2021-08-22 13:02 · 6 min read

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

什么是 Service Mesh

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

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

服务网格特点

  • 轻量级的网络代理
  • 应用无感知
  • 应用之间的流量由服务网格接管
  • 把服务间调用可能出现的超时/重试/监控/追踪等工作下沉到服务网格层处理

服务网格结构

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

  • 数据平面:应用数据真正的请求路径
    • 主要负责流量转发,策略实施和遥测数据上报;
    • 核心组件:Envoy,Linkerd-proxy
  • 控制平面:控制数据平面如何处理数据
    • 主要是将用户的配置转成具体的路由规则,并且交给数据平面(Envoy、Linkerd-Proxy),然后收集遥测数据用于指导控制策略
    • 核心组件:
      • 以前 Istio 有好几个:
        • Mixer:遥测管理
        • Pilot:流量管理
        • Citadel:认证管理
      • 现在 Istio 将这些都合并成一个了,这也是现在的一个趋势,尽量简化部署模型,能一个进程跑就不跑多个;
图 1:旧版本 Istio 示意图 f31f369351f4图 2:新版本 Istio 示意图 972039668934

Istio 支持的特性

  • Istio 支持不同协议流量的负载均衡:HTTP、gRPC、WebSocket 和 TCP;
  • 通过 Vritual Service 和 Destionation Rule 两个概念,提供丰富的路由规则、重试、故障转移和故障注入等流量行为的细粒度控制;
  • 提供可插入的策略层和配置 API,支持访问控制、速率限制和配额;
  • 通过 Ingress 和 Outgress 集群流量的入口和出口进行控制,跟踪和监控;
  • 通过基于身份的认证和授权,实现服务间的安全通信。

Reference


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK