Istio,灰度发布从未如此轻松!!!

简介: ServiceMesh解决什么问题?

三个问题,回顾前情提要。

ServiceMesh解决什么问题?
image.png

SM本质业务服务底层技术体系解耦

  • 一个进程实现业务逻辑(不管是调用方,还是服务提供方),biz,即上图白色方块

  • 一个进程实现底层技术体系,proxy,即上图蓝色方块

画外音:负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放到这一层实现。

 什么是Istio?

Istio是ServiceMesh的产品化落地。

 Istio的分层架构设计如何?
image.png

Istio采用实施与控制分离数据平面控制平面两层架构。

数据平面

  • envoy(proxy):负责高效转发与策略落地[核心]

控制平面

  • mixer:适配组件,数据平面与控制平面通过它交互

  • pilot:策略配置组件[核心]

  • citadel:安全组件

  • galley:底层平台(例如:K8S)解耦组件

 整个架构的核心是envoy与pilot。

 今天起,聊聊Istio的流控,典型如灰度发布。

 就如同ServiceMesh的设计初衷,是技术体系与业务服务解耦一样,Istio流控模型的本质,是流量控制与服务实例扩展解耦,更具体的:

  • 用户只需要通过控制平面中的Pilot设定期望流量要以什么规则进行路由

  • 不需要规定服务实例(service pods)如何接收

  • 数据平面Envoy将从Pilot中获取规则和命令,然后落地各类分流策略

    image.png

    如上图所示,最开始时,ServiceA访问旧版的ServiceB。

    画外音,业务与底层解耦:

    (1)灰色圆形为业务Svc服务;

    (2)紫色六边形为Envoy代理;

    (3)服务与代理之间都是本地访问;

    (4)跨网段之间都是Envoy代理交互(蓝色箭头);

    如何进行灰度发布呢?

    image.png

    如上图所示,服务A调用服务B,服务B要发布一个灰度版本,需要5%的流量打到服务B的新版本,只需要:

    (1)部署服务B的新版本;

    (2)控制平面Pilot上进行策略配置,策略同步到Envoy;

    (3)数据平面Envoy接收到策略配置,实时分流策略;

    画外音:图形上没有画出Pilot和Envoy的交互。

     搞定,这个过程业务服务与流量控制策略完全解耦,完美!

     除了基于按流量比例分流的灰度发布,基于应用层的灰度发布通过Istio也非常容易实现。
    image.png

    如上图所示,服务B要发布一个灰度版本,需要把iPhone的流量打到B的新版本,操作流程完全一样(部署服务,Pilot控制,Envoy实施),非常方便。

     

    如果Envoy原来只支持按照流量比例分流,不支持基于应用层协议分流,此时只需要:

    (1)升级Envoy的分流策略,以及策略控制端Pilot;

    (2)调用方服务A不需要升级;

    (3)服务方服务B也不需要升级;

     业务与底层基础设施完全解耦,完美!

    如果是用传统微服务框架的方式,需要框架升级,调用方与服务方均需要配合升级与重启。

    最近下班都比较晚,今天先写到这里。Pilot的分层架构如何,它又是如何与Envoy配合实现流控的,且听下回分解。

    思路比结论重要。

    本文转自“架构师之路”公众号,58沈剑提供。

目录
相关文章
|
测试技术 开发者
KubeVela 对接 Istio 实现应用灰度发布实践|学习笔记(二)
快速学习 KubeVela 对接 Istio 实现应用灰度发布实践
KubeVela 对接 Istio 实现应用灰度发布实践|学习笔记(二)
|
Prometheus 监控 Kubernetes
进阶:对接 Istio 实现应用灰度发布实践| 学习笔记
快速学习进阶:对接 Istio 实现应用灰度发布实践。
180 0
进阶:对接  Istio 实现应用灰度发布实践| 学习笔记
|
Kubernetes 监控 网络协议
Istio:灰度发布与技术实现
Istio:灰度发布与技术实现
747 0
Istio:灰度发布与技术实现
|
存储 Kubernetes Dubbo
基于 Istio 的全链路灰度方案探索和实践
本文介绍的基于“流量打标”和“按标路由” 能力是一个通用方案,基于此可以较好地解决测试环境治理、线上全链路灰度发布等相关问题,基于服务网格技术做到与开发语言无关。同时,该方案适应于不同的7层协议,当前已支持 HTTP/gRpc 和 Dubbo 协议。
基于 Istio 的全链路灰度方案探索和实践
|
存储 Kubernetes Dubbo
基于Istio 的全链路灰度方案探索和实践
# 背景 微服务软件架构下,业务新功能上线前搭建完整的一套测试系统进行验证是相当费人费时的事,随着所拆分出微服务数量的不断增大其难度也俞大。这一整套测试系统所需付出的机器成本往往也不低,为了保证应用新版本上线前的功能正确性验证效率这套系统还必须一直单独维护好。当业务变得庞大且复杂时,往往还得准备多套,这是整个行业共同面临且难解的成本和效率挑战。如果能在同一套生产系统中完成新版本上线前的功能验证的
911 1
基于Istio 的全链路灰度方案探索和实践
|
Kubernetes 前端开发 JavaScript
基于istio的灰度发布实验
灰度发布又叫A/B测试,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。 因为最近刚好有灰度发布的需求,我又学了一遍istio,记录了本次灰度发布的实施过程(只包括应用,不包括数据库升级)
5795 0
基于istio的灰度发布实验
|
Kubernetes 测试技术 微服务
Istio流量管理实践之(2): 通过Istio管理应用的灰度发布
Istio 服务网格提供了管理流量分配所需的基础控制,并完全独立于AutoScaler,从而允许简单而强大的方式来进行诸如金丝雀、蓝绿、AB测试和上线。
4207 0
|
12月前
|
Kubernetes 监控 Go
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
在Kubernetes上安装和配置Istio:逐步指南,展示如何在Kubernetes集群中安装和配置Istio服务网格
204 0
|
Kubernetes Cloud Native 开发者
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
15分钟在笔记本上搭建 Kubernetes + Istio开发环境-阿里云开发者社区
|
12月前
|
存储 Kubernetes 负载均衡
【Kubernetes的Service Mesh发展历程及Istio架构、存储供应使用NFS flexvolume CSI接口】
【Kubernetes的Service Mesh发展历程及Istio架构、存储供应使用NFS flexvolume CSI接口】
200 0
下一篇
无影云桌面