全部產品
Search
文件中心

API Gateway:traffic-tag外掛程式

更新時間:Jan 10, 2025

traffic-tag 外掛程式允許根據權重或特定請求內容通過添加特定要求標頭的方式對請求流量進行染色。它支援複雜的邏輯來確定如何根據使用者定義的標準染色流量。

運行屬性

外掛程式執行階段:預設階段 外掛程式執行優先順序:400

配置欄位

此部分提供了配置欄位的詳細描述。

欄位名稱

類型

預設值

是否必填

描述

conditionGroups

array of object

-

定義基於內容的標記條件組,詳細結構見條件組配置。

weightGroups

array of object

-

定義基於權重的標記條件組,詳細結構見權重組配置。

defaultTagKey

string

-

預設的標記鍵名,當未匹配到任何條件時使用。若且唯若同時配置了defaultTagVal時生效

defaultTagVal

string

-

預設的標記值,當未匹配到任何條件時使用。若且唯若同時配置了defaultTagKey時生效

條件組配置

conditionGroups 中每一項的配置欄位說明如下:

欄位名稱

類型

預設值

是否必填

描述

headerName

string

-

要添加或修改的 HTTP 頭名稱。

headerValue

string

-

HTTP 頭的值。

logic

string

-

條件組中的邏輯關係,支援 andor,必須為小寫字母。

conditions

array of object

-

描述具體的標記條件,詳細結構如下。

conditions 中每一項的配置欄位說明如下:

欄位名稱

類型

預設值

是否必填

描述

conditionType

string

-

條件類型,支援 headerparametercookie

key

string

-

條件的關鍵字。

operator

string

-

操作符,支援 equalnot_equalprefixinnot_inregexpercentage

value

array of string

-

條件的值,僅當操作符為 in 和 not_in 時支援配置多個值。

說明

當 operator 為 regex 時,使用的Regex引擎是 RE2。詳情請參閱 RE2 官方文檔

權重組配置

weightGroups 中每一項的配置欄位說明如下:

欄位名稱

類型

預設值

是否必填

描述

headerName

string

-

要添加或修改的 HTTP 頭名稱。

headerValue

string

-

HTTP 頭的值。

weight

integer

-

流量權重百分比。

操作符說明

操作符

描述

equal

精確匹配,值需要完全相等

not_equal

不等匹配,值不相等時滿足條件

prefix

首碼匹配,指定值是實際值的首碼時滿足條件

in

包含匹配,實際值需要在指定的列表中

not_in

排除匹配,實際值不在指定的列表中時滿足條件

regex

Regex匹配,按照Regex規則匹配

percentage

百分比匹配,原理:hash(get(key)) % 100 < value 成立時滿足條件

說明

關於percentageweight的區別

  • percentage操作符:用於條件運算式中,基於指定的百分比和指定的索引值對來判斷是否執行某個操作。對於一個相同的索引值對,多次匹配的結果是等冪的,即這一次命中條件,下一次也會命中。

  • weight欄位:用於定義不同處理路徑的流量權重。在基於權重的流量標記中,weight確定了某個路徑應接收的流量比例。與percentage不同的是,由於沒有指定固定的對比依據而是基於隨機權重分布,同一個請求的多次匹配可能匹配多個結果。

使用percentage進行條件匹配時,判斷每個請求是否滿足特定百分比條件;而weight則是靜態隨機分配整體流量的比例。

配置樣本

例1: 基於內容的匹配

按照下例的配置,滿足要求標頭role 的值是userviewereditor其中之一且存在查詢參數foo=bar的請求將被添加要求標頭x-mse-tag: gray。由於配置了defaultTagKeydefaultTagVal,當未匹配到任何條件時,請求將被添加要求標頭x-mse-tag: base

defaultTagKey: x-mse-tag
defaultTagVal: base
conditionGroups:
  - headerName: x-mse-tag
    headerValue: gray
    logic: and
    conditions:
      - conditionType: header
        key: role
        operator: in
        value:
          - user
          - viewer
          - editor
      - conditionType: parameter
        key: foo
        operator: equal
        value:
        - bar

例2: 基於權重的匹配

按照下列配置,請求將有30%幾率被添加要求標頭x-mse-tag: gray,30%幾率被添加要求標頭x-mse-tag: blue,40%幾率不添加要求標頭。

# 權重總和為100,下例中未配置的40權重將不添加header
weightGroups:
  - headerName: x-mse-tag
    headerValue: gray
    weight: 30
  - headerName: x-mse-tag
    headerValue: blue
    weight: 30