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

栏目: 服务器 · 发布时间: 5年前

前情提要:

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,灰度发布


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Namo Webeditor5.5一看就懂.

Namo Webeditor5.5一看就懂.

吳聲毅 / 金禾資訊 / 20040214 / NT$ 169

一看就懂系列書全以初學者的角度切入,全書以STEP BY STEP方式撰寫,並以豐富的圖片搭配教學,在最後更加上日常生活實例運用講解,一路學來一氣呵成。為了增進學習的效率更採用高級紙品全彩印刷,這麼好的書,您還在等什麼,一看就懂系列書保證是您最佳入門學習好伙伴。 本書特色: 1、一看就懂:Step by Step操作詳盡說明、讓您一看就懂 2、精選範例:精彩實務範例生動活......一起来看看 《Namo Webeditor5.5一看就懂.》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具