系列文章:


总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 邀约

3 介绍

4 路由策略

5 样例说明


1 前言

        如果你对博客有任何疑问,请告诉我。第二十三章 九析带你轻松完爆 Istio - destination rule 介绍_第1张图片


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:第二十三章 九析带你轻松完爆 Istio - destination rule 介绍_第2张图片


3 介绍

        上章展示了 destination rule 一个实例。

        destination rules 是 Istio 流量路由的关键功能,它不能独自使用,必须跟 Virtual Service 共同发挥作用。当 destination rules 跟 virtual service 共同使用的时候,virtual service 决定将流量路由到逻辑地址,而 destination rules 则决定流量路由到物理地址。

        virtual service 跟 destination rules 路由关系就像变量到内存的地址映射一样,destination 代表内存实际地址,而 virtual service 作用就像程序的指针。

        destination rules 通常用在微服务的版本分组上(例如可以通过 version 标签将微服务进行分组)。通过 destination rules 的分组规则可以实现将流量路由到服务的不同版本中,进而实现类似灰度、金丝雀、蓝绿等版本分流的策略。

        destination rules 不仅可以决定把流量路由到何处,还可以制定如何路由流量(比如是轮询路由流量,还是随机路由流量等等)。有关 destination rules 选项可以参考 Destination Rule 指南


4 路由策略

        默认情况下,Istio 使用轮询的负载均衡路由策略(round-robin),也就是说服务所有实例按顺序接收请求。当然 Istio 也支持如下的模型,这些模型都可以通过在 destination rule 中进行指定:

Random:请求被随机分配给服务的实例

Weighted:请求基于权重被分配给服务的实例

Least requests:请求被分配给服务最少被访问的实例


5 样例说明

        Istio 官方给出的 destination rule 样例如下:第二十三章 九析带你轻松完爆 Istio - destination rule 介绍_第3张图片

        上例 destination rule 中指定了 subsets,子集是根据 version 来定义。注意,这里 labels 内容可以自由定义,不一定非要是 version。其中的 trafficPolicy 就是流量路由到服务所有实例的策略(比如随机、轮询、按权重、最少访问等)。此外针对 v2 这个 subsets,它的路由策略比较特殊,它覆盖了默认的 RANDOM 方式,而是直接采用了 ROUND_ROBIN 方式。