在添加限流規則時,點擊高級選項,可以選擇三種流控模式:
1.直接:統計當前資源的請求,觸發閾值時對當前資源直接限流,也是默認的模式
2.關聯:統計與當前資源相關的另一個資源,觸發閾值時,對當前資源限流
3.鏈路:統計從指定鏈路訪問到本資源的請求,觸發閾值時,對指定鏈路限流
流控模式-關聯
關聯模式:統計與當前資源相關的另一個資源,觸發閾值時,對當前資源限流
使用場景:比如用戶支付時需要修改訂單狀態,同時用戶要查詢訂單。查詢和修改操作會爭搶數據庫鎖,產生競爭。業務需求是有限支付和更新訂單的業務,因此當修改訂單業務觸發閾值時,需要對查詢訂單業務限流。
/read和/write產生關聯,將來會統計關聯資源/write,當/write QPS達到觸發閾值時,對/read進行限流。
當/write資源訪問量觸發閾值時,就會對/read資源限流,避免影響/write資源。
案例:流控模式-關聯
需求:在OrderController新建兩個端點:/order/query和/order/update,無需實現業務;
配置流控規則,當/order/update資源被訪問的QPS超過5時,對/order/query請求限流;
限流生效時,/order/update 正常訪問,/order/query 觸發限流提示。
注意:給誰限流,就給誰添加流控規則
訪問/order/query、/order/update資源 http://localhost:8088/order/query ##觸發關聯限流
http://localhost:8088/order/update ##不會觸發關聯限流
總結
滿足下面條件可以使用關聯模式:
1.兩個有競爭關系的資源
2.一個優先級較高,一個優先級較低