traffic-tag 外掛程式允許根據權重或特定請求內容通過添加特定要求標頭的方式對請求流量進行染色。它支援複雜的邏輯來確定如何根據使用者定義的標準染色流量。
運行屬性
外掛程式執行階段:預設階段 外掛程式執行優先順序:400
配置欄位
此部分提供了配置欄位的詳細描述。
欄位名稱 | 類型 | 預設值 | 是否必填 | 描述 |
| array of object | - | 否 | 定義基於內容的標記條件組,詳細結構見條件組配置。 |
| array of object | - | 否 | 定義基於權重的標記條件組,詳細結構見權重組配置。 |
| string | - | 否 | 預設的標記鍵名,當未匹配到任何條件時使用。若且唯若同時配置了defaultTagVal時生效 |
| string | - | 否 | 預設的標記值,當未匹配到任何條件時使用。若且唯若同時配置了defaultTagKey時生效 |
條件組配置
conditionGroups 中每一項的配置欄位說明如下:
欄位名稱 | 類型 | 預設值 | 是否必填 | 描述 |
| string | - | 是 | 要添加或修改的 HTTP 頭名稱。 |
| string | - | 是 | HTTP 頭的值。 |
| string | - | 是 | 條件組中的邏輯關係,支援 |
| array of object | - | 是 | 描述具體的標記條件,詳細結構如下。 |
conditions 中每一項的配置欄位說明如下:
欄位名稱 | 類型 | 預設值 | 是否必填 | 描述 |
| string | - | 是 | 條件類型,支援 |
| string | - | 是 | 條件的關鍵字。 |
| string | - | 是 | 操作符,支援 |
| array of string | - | 是 | 條件的值,僅當操作符為 |
權重組配置
weightGroups 中每一項的配置欄位說明如下:
欄位名稱 | 類型 | 預設值 | 是否必填 | 描述 |
| string | - | 是 | 要添加或修改的 HTTP 頭名稱。 |
| string | - | 是 | HTTP 頭的值。 |
| integer | - | 是 | 流量權重百分比。 |
操作符說明
操作符 | 描述 |
| 精確匹配,值需要完全相等 |
| 不等匹配,值不相等時滿足條件 |
| 首碼匹配,指定值是實際值的首碼時滿足條件 |
| 包含匹配,實際值需要在指定的列表中 |
| 排除匹配,實際值不在指定的列表中時滿足條件 |
| Regex匹配,按照Regex規則匹配 |
| 百分比匹配,原理: |
關於percentage和weight的區別
percentage操作符:用於條件運算式中,基於指定的百分比和指定的索引值對來判斷是否執行某個操作。對於一個相同的索引值對,多次匹配的結果是等冪的,即這一次命中條件,下一次也會命中。weight欄位:用於定義不同處理路徑的流量權重。在基於權重的流量標記中,weight確定了某個路徑應接收的流量比例。與percentage不同的是,由於沒有指定固定的對比依據而是基於隨機權重分布,同一個請求的多次匹配可能匹配多個結果。
使用percentage進行條件匹配時,判斷每個請求是否滿足特定百分比條件;而weight則是靜態隨機分配整體流量的比例。
配置樣本
例1: 基於內容的匹配
按照下例的配置,滿足要求標頭role 的值是user、viewer、editor其中之一且存在查詢參數foo=bar的請求將被添加要求標頭x-mse-tag: gray。由於配置了defaultTagKey和defaultTagVal,當未匹配到任何條件時,請求將被添加要求標頭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