Istio非侵入的流量治理
Istio流量治理原理
istio流量治理主要有以下流程
控制面:
- 管理员通过命令行或者api创建流量规则
- Pilot将流量规则转换为Envoy的标准格式
- Pilot将规则下发给Envoy
数据面:
- Envoy拦截Pod上本地容器Inbound和Outbound的流量
- 在流量经过Envoy时,执行对应的流量规则,进行流量治理
负载均衡
主要用户服务间访问。通过它可以在多个服务实例找到一个合适的后端把请求转发过去。
Pilot维护服务发现数据,下发给Envoy,Envoy根据负载均衡策略选择一个实例转发请求。
服务熔断
istio的熔断控制无需侵入代码,有别与hystrix。
常见的熔断器状态流转
序号 | 初始状态 | 条件 | 迁移状态 |
---|---|---|---|
1 | 熔断关闭 | 请求成功 | 熔断关闭 |
2 | 熔断关闭 | 请求失败,调用失败次数自增,不超过阀值 | 熔断关闭 |
3 | 熔断关闭 | 请求失败,调用失败次数自增,超过阀值 | 熔断开启 |
4 | 熔断开启 | 熔断器维护计时器,计时未到 | 熔断开启 |
5 | 熔断开启 | 熔断器维护计时器,计时到了 | 熔断半开启 |
6 | 熔断半开启 | 访问成功 | 熔断关闭 |
7 | 熔断半开启 | 访问失败 | 熔断开启 |
故障注入
有些故障是不会经常触发的,以前模拟故障通常需要修改代码来模拟。而Istio也提供了这个能力。
灰度发布
- 蓝绿发布
类似热发布。先部署新版本,等新版可用后,全流量切换过去。 - AB测试
部署对等的两个版本A和B,分流一部分去a,一部分去b,然后根据运营收集数据,根据反馈选择使用哪个版本。 - 金丝雀发布/灰度发布
你叫像AB测试发布,先让小部分用户尝试新版本。观察一段时间后决定使用哪个版本。