Spring Cloud Alibaba Sentinel

序言

在微服務(wù)時(shí)代中,有一個(gè)鳳凰架構(gòu)的概念。鳳凰特點(diǎn)是可重生,那么對于微服務(wù)而言,各部分服務(wù)就相當(dāng)于鳳凰身上的部位,我們在開發(fā)過程中針對于某部分服務(wù)不滿意需要進(jìn)行升級的時(shí)候必須保證升級前后整體服務(wù)的正常運(yùn)轉(zhuǎn)。也就是我們將鳳凰從毛翅膀變?yōu)闉殇撹F翅膀,鳳凰還是活的并且飛行功能一樣。這就類似社交網(wǎng)絡(luò)電源中扎克伯格升級服務(wù)器時(shí)沒通知愛得華多,在愛德華多凍結(jié)賬戶之后扎克伯格生氣的保證Facebook永不宕機(jī)一樣——這就引入了熔斷限流的概念

一、服務(wù)控制相關(guān)概念

1.1)服務(wù)雪崩

左圖比如服務(wù)C假死,進(jìn)程還在就是卡住沒反應(yīng)導(dǎo)致上游都卡死;右圖比如Service D負(fù)載壓到80%反應(yīng)慢導(dǎo)致多條鏈路上服務(wù)都卡死

1.2)服務(wù)限流

1.3)服務(wù)熔斷

保險(xiǎn)絲,在Open狀態(tài)自旋定時(shí)到HalfOpen檢測是否正常

1.4)服務(wù)降級

1.5)熔斷降級的幾種常見方案

二、常見的四種限流算法

2.1)計(jì)數(shù)器算法

第二張圖假設(shè)(0~2秒)(4~6秒)沒有請求,那么2秒進(jìn)入300個(gè)請求也能滿足指定周期內(nèi)不觸發(fā)熔斷器,所以計(jì)數(shù)器算法的指定周期無法解決臨界問題。優(yōu)點(diǎn)是實(shí)現(xiàn)簡單可以應(yīng)對勻速請求

2.2)滑動(dòng)窗口算法

滑動(dòng)窗口可以解決(2~3秒)和(3~4秒)分別進(jìn)入150個(gè)請求的問題,當(dāng)窗口滑動(dòng)到(1~4秒)的時(shí)候,會(huì)對(3~4秒)的150個(gè)請求進(jìn)行拒絕,(3~4秒)被拒絕所以歸零,之后(2~5秒)和(3~6秒)的滑動(dòng)窗口都不會(huì)觸發(fā)限流

2.3)令牌桶限流算法

以時(shí)間為X軸,請求量為Y軸;網(wǎng)絡(luò)流量整形指不會(huì)超過Y軸的某個(gè)點(diǎn);速率限制指不超過斜率的某個(gè)點(diǎn)

Ps:限制發(fā)令牌速度不限制取令牌速度

2.4)漏桶限流算法

平滑網(wǎng)絡(luò)上的突發(fā)流量指突然多出十幾個(gè)水龍頭也不怕,桶滿了就丟

Ps:限制了Consumer的速度,請求打到Consumer始終以恒定速率處理可防止Consumer崩潰

三、Sentinel簡介

官網(wǎng)

3.1)Sentinel概述

3.2)Sentinel的主要特征

綠色為核心庫

3.3)Sentinel的開源生態(tài)

3.4)部署Sentinel Dashboard

用戶優(yōu)先配置在啟動(dòng)之前指定參數(shù)可以改變properties文件中的配置

四、Sentinel實(shí)戰(zhàn)

4.1)使用SphU或SphO進(jìn)行限流

唯一區(qū)別是SphU直接拋異常,而SphO返回ture/false
setStrategy一般都是直接拒絕,關(guān)聯(lián)就是相關(guān)聯(lián)的請求也拒絕,鏈路是同一執(zhí)行鏈的拒絕
基本和Sentinel Board界面一致——WARN_UP是控制斜率,RATE_LIMIT控制Y軸最大值

SphO

有執(zhí)行業(yè)務(wù)方法的,也有執(zhí)行限流的
查看執(zhí)行結(jié)果
Windows日志地址:C:\Users\Administrator\logs\csp

SphU

4.2)使用@SentinelResource進(jìn)行限流

限流規(guī)則依然是QPS。一秒超過20次限流

五、Sentinel集成

5.1)集成SpringCloud

編碼方式

SPI機(jī)制
快速請求

Dashboard方式

請求過的接口才會(huì)Dashboard才會(huì)進(jìn)行管理

自定義URL限流異常

通過實(shí)現(xiàn)UrlBlockHandler接口,來重寫blocked方法

URL資源清洗

將開頭為urlCleaner/全部改為urlCleaner/*

5.2)集成Nacos

grade值為1代表使用QPS
Sentinel流控規(guī)則刷新,閾值也變?yōu)?0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容