sentinel流量卫兵组件学习
官網(wǎng)地址:https://sentinelguard.io/
筆記對(duì)應(yīng)demo:https://gitee.com/panlsp/springcloud_alibaba_parent
一、使用 sentinel dashboard
1、下載
下載地址:https://github.com/alibaba/Sentinel/tags
2、啟動(dòng)
啟動(dòng)時(shí)修改web端口為9191(默認(rèn)為8080)
java -jar -D.server.port=9191 sentinel-dashboard-1.8.3.jar3、訪問(wèn)
賬號(hào)密碼都為:sentinel
二、sentinel 項(xiàng)目
1、導(dǎo)入依賴
<!-- sentinel 依賴 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>二、配置信息
server:port: 8989 spring:application:name: SENTINELcloud:# sentinel配置sentinel:# 開(kāi)啟狀態(tài)(默認(rèn))enabled: true# 立即初始化eager: truetransport:# web 地址dashboard: localhost:9191# 通信地址(默認(rèn))port: 87193、書寫測(cè)試的demo(controller)
@RestController public class DemoController {@GetMapping("demo")public String demo(){return "demo ok !!!";}}4、訪問(wèn)測(cè)試
多次訪問(wèn)測(cè)試的controller,觀看sentinel dashboard 的服務(wù)狀態(tài)
三、規(guī)則限制
1、流量控制
流量控制(FlowController)
定義:其原理是監(jiān)控應(yīng)用流量的 QPS 或 并發(fā)線程數(shù) 指標(biāo),當(dāng)達(dá)到指定的閾值時(shí)對(duì)流量進(jìn)行控制,以避免被瞬時(shí)的流量高峰沖垮,從而保障應(yīng)用的高可用性。
**QPS:**每秒請(qǐng)求數(shù)
當(dāng)每秒請(qǐng)求數(shù)超過(guò)指定閾值之后對(duì)當(dāng)前請(qǐng)求進(jìn)行限流
**并發(fā)線程數(shù):**當(dāng)服務(wù)器中創(chuàng)建的線程數(shù)超過(guò)指定閾值之后對(duì)當(dāng)前請(qǐng)求進(jìn)行限流
1.1、流控模式
- 直接模式:直接流控模式是最簡(jiǎn)單的模式,當(dāng)指定的接口達(dá)到限流條件時(shí)開(kāi)啟限流。
- 關(guān)聯(lián)模式:關(guān)聯(lián)流控模式指的是,當(dāng)指定接口關(guān)聯(lián)的接口達(dá)到限流條件時(shí),開(kāi)啟對(duì)指定接口開(kāi)啟限流。
- 鏈路模式:當(dāng)從某個(gè)接口過(guò)來(lái)的資源達(dá)到限流條件時(shí),開(kāi)啟限流。它的功能有點(diǎn)類似于針對(duì)來(lái)源配置項(xiàng),區(qū)別在于:針對(duì)來(lái)源是針對(duì)上級(jí)微服務(wù),而鏈路流控是針對(duì)上級(jí)接口,也就是說(shuō)它的粒度更細(xì)。
1.2、流控效果(只適用于QPS限流)
- 快速失敗:直接拒絕請(qǐng)求,并拋出相應(yīng)異常
- Warm Up:(冷啟動(dòng),預(yù)熱)
- 排隊(duì)等待:(始終勻速通過(guò))
2、熔斷降級(jí)
除了流量控制以外,對(duì)調(diào)用鏈路中不穩(wěn)定的資源進(jìn)行熔斷降級(jí)也是保障高可用的重要措施之一。一個(gè)服務(wù)常常會(huì)調(diào)用別的模塊,可能是另外的一個(gè)遠(yuǎn)程服務(wù)、數(shù)據(jù)庫(kù),或者第三方 API 等。例如,支付的時(shí)候,可能需要遠(yuǎn)程調(diào)用銀聯(lián)提供的 API;查詢某個(gè)商品的價(jià)格,可能需要進(jìn)行數(shù)據(jù)庫(kù)查詢。然而,這個(gè)被依賴服務(wù)的穩(wěn)定性是不能保證的。如果依賴的服務(wù)出現(xiàn)了不穩(wěn)定的情況,請(qǐng)求的響應(yīng)時(shí)間變長(zhǎng),那么調(diào)用服務(wù)的方法的響應(yīng)時(shí)間也會(huì)變長(zhǎng),線程會(huì)產(chǎn)生堆積,最終可能耗盡業(yè)務(wù)自身的線程池,服務(wù)本身也變得不可用。
- 慢調(diào)用比例 (SLOW_REQUEST_RATIO):選擇以慢調(diào)用比例作為閾值,需要設(shè)置允許的慢調(diào)用 RT(即最大的響應(yīng)時(shí)間),請(qǐng)求的響應(yīng)時(shí)間大于該值則統(tǒng)計(jì)為慢調(diào)用。當(dāng)單位統(tǒng)計(jì)時(shí)長(zhǎng)(statIntervalMs)內(nèi)請(qǐng)求數(shù)目大于設(shè)置的最小請(qǐng)求數(shù)目,并且慢調(diào)用的比例大于閾值,則接下來(lái)的熔斷時(shí)長(zhǎng)內(nèi)請(qǐng)求會(huì)自動(dòng)被熔斷。經(jīng)過(guò)熔斷時(shí)長(zhǎng)后熔斷器會(huì)進(jìn)入探測(cè)恢復(fù)狀態(tài)(HALF-OPEN 狀態(tài)),若接下來(lái)的一個(gè)請(qǐng)求響應(yīng)時(shí)間小于設(shè)置的慢調(diào)用 RT 則結(jié)束熔斷,若大于設(shè)置的慢調(diào)用 RT 則會(huì)再次被熔斷。
- 異常比例 (ERROR_RATIO):當(dāng)單位統(tǒng)計(jì)時(shí)長(zhǎng)(statIntervalMs)內(nèi)請(qǐng)求數(shù)目大于設(shè)置的最小請(qǐng)求數(shù)目,并且異常的比例大于閾值,則接下來(lái)的熔斷時(shí)長(zhǎng)內(nèi)請(qǐng)求會(huì)自動(dòng)被熔斷。經(jīng)過(guò)熔斷時(shí)長(zhǎng)后熔斷器會(huì)進(jìn)入探測(cè)恢復(fù)狀態(tài)(HALF-OPEN 狀態(tài)),若接下來(lái)的一個(gè)請(qǐng)求成功完成(沒(méi)有錯(cuò)誤)則結(jié)束熔斷,否則會(huì)再次被熔斷。異常比率的閾值范圍是 [0.0, 1.0],代表 0% - 100%。
- 異常數(shù) (ERROR_COUNT):當(dāng)單位統(tǒng)計(jì)時(shí)長(zhǎng)內(nèi)的異常數(shù)目超過(guò)閾值之后會(huì)自動(dòng)進(jìn)行熔斷。經(jīng)過(guò)熔斷時(shí)長(zhǎng)后熔斷器會(huì)進(jìn)入探測(cè)恢復(fù)狀態(tài)(HALF-OPEN 狀態(tài)),若接下來(lái)的一個(gè)請(qǐng)求成功完成(沒(méi)有錯(cuò)誤)則結(jié)束熔斷,否則會(huì)再次被熔斷。
3、熱點(diǎn)參數(shù)限流
何為熱點(diǎn)?熱點(diǎn)即經(jīng)常訪問(wèn)的數(shù)據(jù)。很多時(shí)候我們希望統(tǒng)計(jì)某個(gè)熱點(diǎn)數(shù)據(jù)中訪問(wèn)頻次最高的 Top K 數(shù)據(jù),并對(duì)其訪問(wèn)進(jìn)行限制。比如:
- 商品 ID 為參數(shù),統(tǒng)計(jì)一段時(shí)間內(nèi)最常購(gòu)買的商品 ID 并進(jìn)行限制
- 用戶 ID 為參數(shù),針對(duì)一段時(shí)間內(nèi)頻繁訪問(wèn)的用戶 ID 進(jìn)行限制
熱點(diǎn)參數(shù)限流會(huì)統(tǒng)計(jì)傳入?yún)?shù)中的熱點(diǎn)參數(shù),并根據(jù)配置的限流閾值與模式,對(duì)包含熱點(diǎn)參數(shù)的資源調(diào)用進(jìn)行限流。熱點(diǎn)參數(shù)限流可以看做是一種特殊的流量控制,僅對(duì)包含熱點(diǎn)參數(shù)的資源調(diào)用生效。
ID 并進(jìn)行限制
- 用戶 ID 為參數(shù),針對(duì)一段時(shí)間內(nèi)頻繁訪問(wèn)的用戶 ID 進(jìn)行限制
熱點(diǎn)參數(shù)限流會(huì)統(tǒng)計(jì)傳入?yún)?shù)中的熱點(diǎn)參數(shù),并根據(jù)配置的限流閾值與模式,對(duì)包含熱點(diǎn)參數(shù)的資源調(diào)用進(jìn)行限流。熱點(diǎn)參數(shù)限流可以看做是一種特殊的流量控制,僅對(duì)包含熱點(diǎn)參數(shù)的資源調(diào)用生效。
總結(jié)
以上是生活随笔為你收集整理的sentinel流量卫兵组件学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 离散元后处理,将PFC数据写出并导入到m
- 下一篇: jquery 报错提示Uncaught