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

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

前情提要:

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


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

查看所有标签

猜你喜欢:

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

C陷阱与缺陷

C陷阱与缺陷

凯尼格 / 高巍 / 人民邮电出版社 / 2008-2-1 / 30.00元

作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。.. 全书分为8章,分别从词法分析、语法语义、连接、库函数、预处理器、可移植性缺陷等几个方面分析了C编程中可能遇到的问题。最后,作者用一章的篇幅给出了若干具有实用价值的建议。.. 本书......一起来看看 《C陷阱与缺陷》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试