Jboot v2.0-rc.8 釋出,新增限流模組
Jboot 是一個基於 JFinal、JFinal-Undertow、Dubbo 等開發的微服務框架,幫助開發者降低微服務開發門檻。Jboot v2.0-rc.8 主要是優化細節,並新增限流模組。
以下是限流的使用
使用方案1:通過配置來實現
在jboot.properties
檔案中定義如下:
jboot.limit.enable = true jboot.limit.rule = /user*:tb:1,io.jboot.aop*.get*(*):tb:1
-
jboot.limit.enable : 限流功能的開關
-
jboot.limit.rule : 限流規則
規則說明:
-
1、可以配置多個規則,每個規則用英文逗號隔開,以上配置了2個規則。
-
2、規則分為三個部分,用冒號(:)隔開,分別是:資源、限流型別、限流引數值
-
3、限流的型別有2種、分別是:tb 和 cc。tb:TOKEN BUCKET(令牌桶),cc:CONCURRENCY(併發量)
-
4、星號(*)匹配任意字元,也可以是空字元。
在以上配置中,配置了2個規則,分別是:
-
/user*:tb:1
-
io.jboot.aop*.get*(*):cc:1
第一個規則:匹配/user
開頭的所有url地址,每個 url 地址,1秒鐘之內只允許訪問1次。
第二個規則:匹配io.jboot.aop
開頭的所有包名,並且 get
開頭的所有任意引數的方法。併發量為 1。
使用方案2:通過註解 @EnableLimit
例如:
@RequestMapping("/") public class IndexController extends JbootController { @EnableLimit(rate = 1,fallback = "fallbackMethod") public void index() { renderText("index...." ); } public void fallbackMethod(){ renderText("fallback..."); } }
通過使用@EnableLimit(rate = 1,fallback = "fallbackMethod")
在方法 index()
方法配置後,當用戶訪問:http://127.0.0.1:8080
時,1秒鐘內只有一次訪問到 index()
方法,若有多次訪問後,自動呼叫降級放方法 fallbackMethod()
執行。
@EnableLimit
支援的配置如下:
-
resource : 資源名稱(不配置的時候預設為方法名,Controller 預設為對應的 url 對映)
-
type:限流的型別,預設為令牌桶。
-
rate:限流的數值,必須配置
-
fallback:降級方法,若配置,此方法必須在當前的類下定義。
Jboot v2.0-rc.8 更新內容如下:
-
新增:Limit限流模組,可以用於沒有運維的時候進行程式碼配置限流和降級
-
新增:WebSocketEndpoint 的配置支援 jboot.web.webSocketEndpoint
-
新增:undertow.unHotSwapClassPrefix 配置的支援,用於排除某些類在RPC下熱載入的問題
-
優化:統一 JbootAppListener 的方法名,詳情:https://gitee.com/fuhai/jboot/blob/v2.0/doc/docs/upgrade.md#%E4%BF%AE%E6%94%B9-jbootapplistener-%E7%9A%84%E6%96%B9%E6%B3%95%E5%90%8D
-
修復:修復由於升級 JFinal 到 v3.6 後,導致 sql 模板無法正常載入的問題
-
移除:ActionCache 模組,JFinal內部已經提供了類似功能
更多Jboot的功能,請移步:https://gitee.com/fuhai/jboot/