- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
★ ServiceMesh系列 。
在复杂的生产场景中,经常会有同一个服务中,存在多个版本长期共存的需求。为了让不同的用户在不一样的版本中使用,就需要对用户的请求进行采样和染色,打上不同的标识。 这样的目的有几个:
使用Service Mesh的流量染色能力,可以在单个服务中根据特征值进行多元版本流量分发。特别是链路繁琐的巨型网格中,能够管理长达10个以上的链路分流调度,这个能力显得非常重要。常见的 Canary Release(金丝雀)、ABTesting、Diversified Version(多版本分流),都是基于此类算法实现。这边介绍在无侵入业务的情况下,Mesh如何实现流量染色.
1. Canary Release 。
2. Diversified Version 。
3. Diversified Version 。
Mesh如果想要实现流量染色,需要具备以下几个条件:
所以,Mesh的染色本质上是通过在流量中携带一些特征(如流量的请求的Header、Cookies、queryParams等),而Mesh会根据这些请求的特征进行路由匹配,转发到对应的带有某些特征的服务实例上。 未匹配成功的流量则走到默认版本中,从而实现多个版本和跟默认版本的业务隔离的目标.
即Istio支持的流量特征包括uri、scheme、method、headers、queryParams等条件,可以根据这些特征进行路由转发:
完整参考官方文档:https://istio.io/latest/docs/reference/config/networking/virtual-service/ 。
基于上述的策略模型,如果你想配置如下:请求的header 带有 username=brand 或者 dep=A1025 的时候,将流量转发到服务的v1版本,否着转发到default版本。 则策略代码如下:
# 说明:VirtualService 流量染色,根据不同的条件将流量发往不同特征的版本中,假设这边有default、v1、v2 版本
apiVersion: networking.istio.io/beta
kind: VirtualService
metadata:
name: router-test-vs
spec:
hosts:
- router-test-vs # 调度router-test服务的流量
exportTo:
- "."
http: # 加各种路由条件,比如匹配人员、所属部门进行路由
- match # 用户匹配 brand,部门匹配 A1025 时
- headers:
username:
exact: brand
- headers:
department:
exact: A1025
route:
destination:
# todo 匹配条件的流量路由到对应的服务上,比如ServiceA-V1
route:
destination:
# todo 不匹配条件的流量路由到其他服务上,比如ServiceA-V2
本文介绍了在Mesh场景下如何使用流量染色,来对不同特征的流量进行分发的实现过程。流量染色在我们实际的生产环境中可以有很多收益和价值:
最后此篇关于ServiceMesh4:实现流量染色和分级发布的文章就讲到这里了,如果你想了解更多关于ServiceMesh4:实现流量染色和分级发布的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!