是一款專門為springboot
專案設計的限流元件,利用redis
+lua
從而來實現高效能和分布式的能力。使用比較簡單。通過半嵌入式的開發即可使用分布式註解。引用使用redis
作為註冊中心,所以需要新增redis依賴
springboot2版本之後官方強烈建議以此來替換spring-boot-starter-redis
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-data-redisartifactid
>
dependency
>
為了有更好的使用者體驗,控制台的開發已經提上日常。當前專案只有本人維護,歡迎前端或者後端的同學一起來參與
com.github.lxchinesszz
easy-sentinel
1.0.1-snapshot
只用將需要限制的介面加上@easysentinel
即可實現限流能力
通過qps設定當前介面的qps
,fallback
指定限流後的備用方法 。
@restcontroller
public
class
webcontroller")
public string getuser
(@pathvariable
("name"
) string username)
public string mock
(string username)
}
前面只通過fallback
實現備用方法的執行,但是平時為了讓控制層的**盡量保證精簡,easysentinel
也支援通過工具類的方式來,指定blockhandlerclass
處理類的方法blockhandler
redis lua分布式限流
註解反思 我們專案有好幾個介面,呼叫公司中颱的介面,包括定時器的分片執行還有本人的多執行緒強行壓榨,哈哈。最後加上使用者的瘋狂請求,導致中颱的介面偶爾出現問題,主要是資料庫cpu達到100 昨晚專門做了個限流,那麼技術定型使用什麼呢?ratelimiter?這好像是單機才能玩,sentinel?這個...
分布式限流實戰
由於api介面無法控制呼叫方的行為,因此當遇到瞬時請求量激增時,會導致介面占用過多伺服器資源,使得其他請求響應速度降低或是超時,更有甚者可能導致伺服器宕機。限流 rate limiting 指對應用服務的請求進行限制,例如某一介面的請求限制為100個每秒,對超過限制的請求則進行快速失敗或丟棄。限流可...
分布式限流演算法
一 限流的作用 有高併發的系統中,由於api介面無法控制呼叫發的行為,因此如果遇到瞬時請求數量遞增,就會導致介面占用過多的伺服器子u,導致響應速度降低或者超時,甚至可能英雌導致伺服器宕機,尤其是資料庫伺服器。所以就有限流的思想,限制客戶端對伺服器端端的請求限制,如果在單位時間內超過該請求限制,就會執...