Istio服务网格在逻辑上分为 控制平面 和 数据平面 两个部分。
其中 控制平面 Pilot 负责管理 和 配置代理 来路由流量,并配置 Mixer 以实施策略和收集遥测数据
数据平面由一组 Envoy 以sidecar的方式组成,这些代理可以调节和控制微服务及Mixer之间所有的网络通信。
- Pilot 用于管理流量,例如 熔断、超时、重试 和 金丝雀发布等
- Mixer 用于提供策略控制 和 遥测数据收集等功能,是一个独立于平台的组件,负责在网格上执行 访问控制 和 使用策略,并从Envoy代理和其他服务收集遥测数据。
- Citadel 用于提供安全功能,例如 身份验证TLS加密等
- Galley 用于验证用户编写的 Istio API 配置
Envoy 代理
进程外:Envoy是一个独立进程,Envoy 之间形成一个透明的通信网格,每个应用程序发送消息到本地主机或者从本地主机接收消息,无需关心网络拓扑
单进程多线程模型:Envoy使用了单进程多线程的架构模型。一个主线程管理各种琐碎的任务,而一些工作子线程负责执行监听、过滤 和 转发功能
下游(Downstream):连接到Envoy并发送请求,然后接收 response 的主机叫做下游
上游(Upstream):接收请求的主机叫上游
监听器:监听器是命名网络地址,包括 端口、unix domain socket 等,可以被下游主机连接。Envoy暴露一个或者多个监听器给下游主机连接。