Istio,灰度发布从未如此轻松!!!
三个问题,回顾前情提要。 ServiceMesh解决什么问题? SM本质是业务服务与底层技术体系的解耦:
画外音:负载均衡、监控告警、服务发现与治理、调用链…等诸多基础设施,都放到这一层实现。 什么是Istio? Istio是ServiceMesh的产品化落地。 Istio的分层架构设计如何? Istio采用实施与控制分离的数据平面与控制平面两层架构。 (1) 数据平面:
(2) 控制平面:
整个架构的核心是envoy与pilot。 今天起,聊聊Istio的流控,典型如灰度发布。 就如同ServiceMesh的设计初衷,是技术体系与业务服务解耦一样,Istio流控模型的本质,是流量控制与服务实例扩展的解耦,更具体的:
如上图所示,最开始时,ServiceA访问旧版的ServiceB。 画外音,业务与底层解耦:
如何进行灰度发布呢? 如上图所示,服务A调用服务B,服务B要发布一个灰度版本,需要5%的流量打到服务B的新版本,只需要:
画外音:图形上没有画出Pilot和Envoy的交互。 搞定,这个过程业务服务与流量控制策略完全解耦,完美! 除了基于按流量比例分流的灰度发布,基于应用层的灰度发布通过Istio也非常容易实现。 如上图所示,服务B要发布一个灰度版本,需要把iPhone的流量打到B的新版本,操作流程完全一样(部署服务,Pilot控制,Envoy实施),非常方便。 如果Envoy原来只支持按照流量比例分流,不支持基于应用层协议分流,此时只需要:
业务与底层基础设施完全解耦,完美! 画外音:这是Service Mesh的核心理念之一,详见《ServiceMesh究竟解决什么问题》。 如果是用传统微服务框架的方式,需要框架升级,调用方与服务方均需要配合升级与重启。 最近下班都比较晚,今天先写到这里。Pilot的分层架构如何,它又是如何与Envoy配合实现流控的,且听下回分解。 思路比结论重要。 【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】 戳这里,看该作者更多好文
(编辑:ASP站长网) |