Sentinel限流規則-流控模式之鏈路模式


鏈路模式:只針對從指定鏈路訪問到本資源的請求做統計,判斷是否超過閾值。

例如有兩條請求鏈路:

/test1      /common
/test2      /common

如果只希望統計從/test2進入到/common的請求,對/test2 進行限流,則可以這樣配置:

案例:流控模式-鏈路

需求:有查詢訂單和創建訂單業務,兩者都需要查詢商品。針對從查詢訂單進入到查詢商品的請求統計,並設置限流。

步驟:
1.在OrderService中添加一個queryGoods方法,不用實現業務
2.在OrderController中,改造/order/query端點,調用OrderService中的queryGoods方法(/order/query -> queryGoods)
3.在OrderController中添加一個/order/save的端點,調用OrderService的queryGoods方法(/order/save -> queryGoods)
4.給queryGoods設置限流規則,從/order/query進入queryGoods的方法限制QPS必須小於2(設置/order/query qqs<2)

Sentinel默認只標記Controller中的方法為資源,如果要標記其它方法,需要利用@SentinelResource注解,示例:

@SentinelResource("goods") public void queryGoods(){ System.err.println("查詢商品"); }

 

Sentinel默認會將Controller方法做context整合,導致鏈路模式的流控失效,需要修改application.yml,添加配置:

spring: cloud: sentinel: transport: dashboard: localhost:8080 # sentinel控制台地址 web-context-unify: false # 關閉context整合

 

訪問/order/query、/order/save資源
http://localhost:8088/order/query ##觸發鏈路限流
http://localhost:8088/order/save ##不會觸發鏈路限流

設置限流規則

 

 

流控模式有哪些?
1.直接:對當前資源限流
2.關聯:高優先級資源觸發閾值,對低優先級資源限流。
3.鏈路:閾值統計時,只統計從指定資源進入當前資源的請求,是對請求來源的限流


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM