作者:禅与计算机程序设计艺术

1.简介

什么是服务网格?
服务网格(Service Mesh)是用来解决微服务通信、流量控制和安全问题的基础设施层。它是一个用于处理服务间通信的基础设施,由一系列轻量级网络代理组成,这些代理可在应用程序部署中自动注入到流量路径中。Istio 是目前最流行的服务网格开源方案之一,通过提供一个完整的管控平面来管理服务网格,包括策略执行、遥测收集、配置和治理。它的架构如下图所示:

从图中可以看出,Istio 使用 Envoy 代理作为数据面的 sidecar,sidecar 将流量路由至本地应用,并劫持微服务之间的所有网络通信。其他服务都无需知道 Envoy 的存在,只需要关注业务逻辑实现即可。Envoy 可以和 Kubernetes 集成,使用 Kubernetes 中定义的各种资源(比如 Deployment、ConfigMap 等)来设置代理的配置和服务发现信息。
2.架构组件
2.1 数据面 (Data Plane)
Istio 服务网格中的数据面是由 Envoy 代理组成的,它负责终端用户请求的路由、负载均衡、服务间通信、监控指标收集等。其中,Istio 提供了丰富的可自定义化的流量管理功能,包括熔断器、超时重试、金丝雀发布等。
2.2 控制面 (Control Plane)
Istio 控制面是一个独立的组件,它接收配置生成环境的各种元数据,根据规则对数据面进行管理。控制面采用 Mixer 项目作为其数据面和控制面的交互接口,Mixer 会将运维人员指定的访问控制和使用限制规则下发给数据面,让数据面实施相应的策略,从而保障整个服务网格的运行质量。
3.核心概念及术语
服务:微服务架构