1.引入sentinel jar包:
com.alibaba.csp
sentinel-annotation-aspectj
1.4.1
流量控制(flow control),原理是監控應用流量的qps或併發執行緒數等指標,當達到指定閾值時對流量進行控制,避免系統被瞬時的流量高峰沖垮,保障應用高可用性。
2.定義所有限流規則的集合list,啟動時需要載入該令牌,並將規則增加到令牌桶
public void initflowqpsrule()
3.sentinel切面類配置:
@configuration
public class sentinelaspectconfiguration
}
4.
/**
* 訂單查詢介面, 使用sentinel註解實現限流
** @param orderid
* @return
*/@sentinelresource(value = "getorderinfo", blockhandler = "handleflowqp***ception",
fallback = "queryorderinfo2fallback")
public string queryorderinfo2(string orderid)
system.out.println("獲取訂單資訊:" + orderid);
return "return orderinfo :" + orderid;
}/**
* 訂單查詢介面丟擲限流或降級時的處理邏輯(阻塞時呼叫的方法)
** 注意: 方法引數、返回值要與原函式保持一致 ,引數一定要有blockexception,其它的引數和原引數一致
* @return
*/public string handleflowqp***ception(string orderid, blockexception e)
/*** 訂單查詢介面執行時丟擲的異常提供fallback處理
** 注意: 方法引數、返回值要與原函式保持一致
* @return
*/public string queryorderinfo2fallback(string orderid, throwable e)
一般value 的命名規則為類名.方法名
參考文章:
springcloud 7 服務限流
高併發系統中有三把利器用來保護系統 快取 降級和限流 限流的目的是為了保護系統不被大量的請求沖垮,通過限制請求的速度和次數來保護系統 在電商的描述活動中 例如 雙11 限流是必不可少的乙個環節 限流的方式也有很多種,可以在 nginx 層面限流,也可以在應用當中限流,比如在api閘道器中 令牌桶令牌...
Spring Cloud中的 熔斷 限流 降級
在分布式架構中,各個服務節點一定需要滿足高可用,所以對於服務本身來說,一方面是在有準備的前提下做好充足的擴容。另一方面,服務需要有熔斷 限流 降級的能力。當乙個服務呼叫另外乙個服務,可能因為網路原因 或者連線池滿等問題導致頻繁出現錯誤,需要有一種熔斷機制,來防止因為請求堆積導致整個應用雪崩。當發現整...
DRF之限流元件
可以對介面訪問的頻次進行限制,以減輕伺服器壓力。一般用於付費購買次數,投票等場景使用.可以在配置檔案中,使用default throttle classes和default throttle rates進行全域性配置,rest framework default throttle rates可以使用...