springcloud 限流 之 微服務之間的呼叫

2021-10-11 09:11:00 字數 1329 閱讀 3844

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可以使用...