學習記錄之Nacos及Sentinel
Sentinel也是Spring Cloud Alibaba的組件
Sentinel英文翻譯"哨兵\門衛(wèi)"
隨著微服務的流行,服務和服務之間的穩(wěn)定性變得越來越重要。Sentinel?以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務的穩(wěn)定性。
為什么需要Sentinel
豐富的應用場景
雙11,秒殺,12306搶火車票
完備的實時狀態(tài)監(jiān)控
可以支持顯示當前項目各個服務的運行和壓力狀態(tài),分析出每臺服務器處理的秒級別的數(shù)據(jù)
廣泛的開源生態(tài)
很多技術可以和Sentinel進行整合,SpringCloud,Dubbo,而且依賴少配置簡單
完善的SPI擴展
Sentinel支持程序設置各種自定義的規(guī)則
基本配置和限流效果
我們的限流針對的是控制器方法
我們找一個簡單的模塊來測試和觀察限流效果
在csmall-stock-webapi模塊中
添加sentinel的依賴
application-dev.yml文件添加配置
下面進行限流操作,在要限流的控制器方法前添加注解
代碼編寫完畢,打開瀏覽器http://localhost:8080/?會看到下面的界面

用戶名和密碼都是?sentinel?第一次運行控制器方法后,就可以在"簇點鏈路"中找到流控選項了!
自定義限流方法
對與被限流的請求,我們可以自定義限流的處理方法
默認情況下可能不能正確給用戶提示,一般情況下,對被限流的請求也要有"服務器忙請重試"或類似的提示
StockController類中@SentinelResource注解中,可以定義處理限流情況的方法
再次嘗試被限流,觀察被限流的提示
QPS與并發(fā)線程數(shù)
QPS:是每秒請求數(shù)
單純的限制在一秒內(nèi)有多少個請求訪問控制器方法
并發(fā)線程數(shù):是當前正在使用服務器資源請求線程的數(shù)量
限制的是使用當前服務器的線程數(shù)
自定義降級方法
所謂降級就是正常運行控制器方法的過程中
控制器方法發(fā)生了異常,Sentinel支持我們運行別的方法來處理異常,或運行別的業(yè)務流程處理
我們也學習過處理控制器異常的統(tǒng)一異常處理類,和我們的降級處理有類似的地方
但是Sentinel降級方法優(yōu)先級高,而且針對單一控制器方法編寫
StockController類中@SentinelResource注解中,可以定義處理降級情況的方法