《实战 Istio入门与实战》—1.3 Istio的架构设计
1.3 Istio的架构设计
Istio的架构设计在逻辑上分为数据平面和控制平面:
数据平面由一系列称为“边车”(sidecar)的智能代理组成,这些代理通过Mixer来控制所有微服务间的网络通信,Mixer是一个通用的策略和遥测中心。
控制平面负责管理和配置代理来路由流量,另外,控制平面通过配置Mixer来实施策略与遥测数据收集。
Istio的数据平面主要负责流量转发、策略实施与遥测数据上报;Istio的控制平面主要负责接收用户配置生成路由规则、分发路由规则到代理、分发策略与遥测数据收集。
图1-3展示了Istio的架构。
图1-3 Istio架构(图片来源:Istio官方网站)
用户通过控制平面提供的API提交路由配置规则、策略配置规则与遥测数据收集的配置规则。Pilot把用户提交的配置规则转换成智能代理需要的配置形式,推送给智能代理。智能代理根据用户的配置来执行服务路由、遥测数据收集与服务访问策略。智能代理拦截服务所有流量,并与其他智能代理通信。
1.3.1 数据平面
Istio在数据平面中使用一个Envoy代理的扩展版本。Envoy是使用C++语言开发的高性能代理,它能拦截服务网络中所有服务的入口和出口流量。Istio利用了众多Envoy内置的功能特性,例如:
动态服务发现
负载均衡
TLS终止
HTTP/2和gRPC代理
熔断器
健康检查
基于百分比流量分隔的灰度发布
故障注入
丰富的度量指标
Envoy作为一个边车与对应的服务部署在同一个Kubernetes Pod中。这种部署方式使得Istio能提取丰富的流量行为信号作为属性。Istio又可以反过来使用这些数据在Mixer中进行策略决策,并发送这些数据到监控系统中,提供整个网络中的行为信息。
采用边车部署方式,可以把Istio的功能添加到一个已经存在的部署中,并且不需要重新构建或者重新编写代码。
- 点赞
- 收藏
- 关注作者
评论(0)