javascript
feign 整合sentinel_SpringCloud实战五-Sentinel上
場景
微服務會劃分出多個模塊,模塊之間的調(diào)用頻率可能比較高,這時可能會存在服務雪崩(一個服務失敗,導致整條鏈路的服務都失敗的情形)的,如圖:
隨著時間的推移,從剛開始的C不可用變成了最終的系統(tǒng)不可用,此時,我們應該尋找容錯的辦法來避免雪崩效應。
容錯的措施
1.設置超時:設置訪問超時時間,超時后返回錯誤
2.限流:限制訪問的流量
3.艙壁模式:設置多個線程池來分散流量
4.斷路器模式:采用一個中間服務,如果A服務訪問某個服務失敗一定的次數(shù),中間服務就開啟,并停止A繼續(xù)訪問某服務,一段時間后中間服務關閉,A服務再次訪問某服務,如此往復。著重解釋斷路器的三態(tài)轉(zhuǎn)換,理解斷路器的優(yōu)勢
Sentinel
Sentinel 是面向分布式服務架構的流量控制組件,主要以流量為切入點,從流量控制、熔斷降級、系統(tǒng)自適應保護等多個維度來幫助您保障微服務的穩(wěn)定性
整合Sentinel
添加依賴(actuator用來便于演示)
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>搭建Sentinel控制臺
下載jar包:sentinel-dashboard-1.6.2.jar
運行java -jar sentinel-dashboard-1.6.2.jar
將應用整合到控制臺,添加配置
spring:cloud:sentinel:transport:dashboard: localhost:8080和Ribbon一樣Sentinel也是懶加載
我們訪問應用中Controller中一個方法
流控規(guī)則
訪問方法之后,我們在簇點鏈路中可以為剛才訪問的方法添加流控規(guī)則
QPS:訪問次數(shù)
線程數(shù):調(diào)用這個api的線程數(shù)
假設勾選了QPS,單機閾值是1
直接:當訪問超過1,就進行限流
關聯(lián):當設定的方法達到閾值,就限流自己,適用于如果一個讀方法,一個寫方法,我們可以控制優(yōu)先讀還是優(yōu)先寫。
鏈路:只記錄指定鏈路上的流量,適用于指定某個方法進行限流,比較細粒度。
Warm Up:可以讓允許通過的流量緩慢增加,可以設置預熱時長,即經(jīng)過某個時長后,達到閾值,比較適用于秒殺等大訪問量突增
排隊等待:只適用于QPS,設置時長后,將請求排隊等待,適用于流量突然增加,讓流量均勻的增加。
降級規(guī)則
RT:秒級,默認4900ms,簡單理解就是平均響應時間超出閾值并且在時間窗口內(nèi)的請求大于設定的值次數(shù)觸發(fā)降級,直到時間窗口設定的值結束,即
異常比例:秒級,QPS大于閾值,觸發(fā)降級
異常數(shù):分鐘級,異常數(shù)超過閾值,觸發(fā)降級
熱點規(guī)則
在統(tǒng)計窗口統(tǒng)計時間內(nèi),某個參數(shù)索引的位置訪問,超過閾值,就會被限流。可以對請求方法的參數(shù)進行限制,適用于某些參數(shù)訪問非常高,同時希望提升api可用性的場景。
參數(shù)索引所使用的類型只能是基本類型
總結
本文介紹了引用Sentinel的引入和基本規(guī)則的配置,后續(xù)將介紹系統(tǒng)規(guī)則和授權規(guī)則,還有整合Feign客戶端,持久化規(guī)則(推拉模式)以及部分源碼解讀。
后續(xù)會持續(xù)更新,可以關注公眾號: 阿清的日常
后臺留言,會細致解答。
總結
以上是生活随笔為你收集整理的feign 整合sentinel_SpringCloud实战五-Sentinel上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络管理的任务包括linux,网络管理员
- 下一篇: c# mysql代码中写事务_代码中添加