转载

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

前情提要:

ServiceMesh究竟解决什么问题?

《 Istio究竟是什么? 》

《 Istio分层架构设计? 》

Istio 架构体系中,流控 (Traffic Management) 虽然是数据平面的 Envoy Proxy 实施的,但整个架构的核心其实在于控制平面的 Pilot

灰度发布的过程在《Istio,灰度发布》一文中已经有过描述,今天重点说说 Pilot Envoy 的交互流程与内部结构。

一、通用交互流程

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

图示:

  • 灰色圆形,为业务服务

  • 紫色六边形,为 Envoy 代理

二者相生相伴。

起初,上游调用方 ServiceA 访问下游服务提供方 ServiceB 的V1版本,在 ServiceB 的V2版本部署好之后,调用方如何知道“ SvcA 切分1%的流量至 SvcB 的V2版本”这个指令的呢?

整个过程主要分为 三大步骤

(1)用户在控制平面的后台,通过 Pilot 的API,修改A到B的路由策略 (标号1)

(2) Pilot 将路由策略固化存储,以便未来新注册的调用方A能够知道当前最新的路由策略;对于已经存在的调用方A, Pilot 则通过主动通知的方式告之调用方A对应的 Envoy (标号2)

(3) Envoy 作为数据平面,实施最新的路由策略 (标号3) ,在本例中,即将1%的流量导给灰度版本Bv2;

二、服务发现与负载均衡

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

讲了通用的流控策略实施通用流程 ,而服务发现与负载均衡,只是一个种策略实施的特例:

(1)提供服务的 SvcB 新增一个 Pod (标号1)

(2)在 Pilot 后台修改 SvcB 的集群配置 (标号2)

(3) Pilot SvcB 的最新信息同步给该配置的订阅方 (标号3) ,即 SvcB 的调用方 SvcA 对应的 Proxy

(4) SvcA 对应的 Proxy 增加到 SvcB 的链接 (标号4) ,并实施负载均衡;

画外音:实际是链接到 SvcB 对应的 Proxy

整个过程,与使用配置中心来实施服务发现基本类似。

三、请求的入口及出口

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

ServiceMesh 的核心,是 技术基础设施与业务服务的解耦 ,服务A调用服务B,再次强调:

  • 一个容器 Pod 内的一个服务, 服务进程( SrvA/SrvB )和边车进程( Proxy 是相生相伴的,他们之间的交互是 本地交互 (标号1)

  • 跨容器 Pod 之间的 远程调用 ,必须 通过 Proxy 进行 (标号2)

言下之意,服务A调用服务B,请求的流程是:

SvcA -> SvcA Proxy -> SvcB Proxy -> SvcB

响应的流程则反过来:

SvcB -> SvcB Proxy -> SvcA Proxy -> SvcA

跨网之间调用, 请求的入口和出口,都是 Proxy

四、Pilot内部结构

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

Pilot 它的内部结构并不复杂:

(1) Pilot 的核心,是各种流控策略的维护, Abstract Model

(2)必然, Pilot 需要提供接口给用户,增删查改这些策略, Rules API

(3)一方面, Pilot 需要保持各类底层基础设施的兼容性, Platform Adapter

(4)另一方面, Pilot 又需要保持不同 Proxy 实接口的兼容性, Envoy API

这么设计的好处是:

  • Istio 设计时已经考虑了异构的基础设施,不管底层是 K8s 还是其他体系,都可以兼容

  • 任何第三方可以实现自己的 proxy ,只要符合相关的API标准,都可以和 Pilot 集成

Pilot Envoy 的配合,是 Istio 的核心,如此一来:

  • 服务发现 (discovery)

  • 负载均衡 (load balancing)

  • 故障恢复 (failure recovery)

  • 服务度量 (metrics)

  • 服务监控 (monitoring)

  • A/B测试 (A/B testing)

  • 灰度发布 (canary rollouts)

  • 限流限速 (rate limiting)

等很多能力都可以实现了。

MerviceMesh 并没有大家想的复杂。

思路 比结论重要。

Istio流控,服务发现,负载均衡,核心流程是如何实现的?

架构师之路 -分享技术思路

相关文章:

《 ServiceMesh究竟解决什么问题? 》

《 Istio究竟是什么? 》

《 Istio分层架构设计? 》

《 Istio,灰度发布 》

原文  http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651962343&idx=1&sn=27fdb9cefa6aef5c5203047380af07c7
正文到此结束
Loading...