日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sentinel简单使用

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sentinel简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Sentinel使用

一、簡介

官網:https://github.com/alibaba/sentinel

中文文檔:https://github.com/alibaba/Sentinel/wiki/介紹

中文文檔也是從GitHub上點擊鏈接跳轉過來的,GitHub哪里有一個“中文文檔”這樣的字眼,直接點擊就可以跳轉到這里了。

1.1、下載和安裝

安裝需要注意:Sentinel是java寫的,所以需要JDK1.8以上的的版本。默認端口號為 8080,所以地址需要注意 8080端口號不能被占用。

  • 下載

  • 安裝

下載下來直接是一個jar包,啟動就和普通的jar啟動方式樣,不用過多介紹。

nohup java -jar xxxx.jar &

我在Windows上測試,所以我就直接使用 java -jar XXX.jar啟動了。

1.2、Sentinel 的主要特性

1.3、Sentinel生態

1.4、解決那些問題

  • 服務雪崩
  • 服務降級
  • 服務熔斷
  • 服務限流

二、創建后端工程

創建 spring-cloud-alibaba-sentinel工程。

2.1、引入依賴

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>

如果直接使用 sentinel,那么這個包就可以了。但是在sentinel里面的配置我們需要持久化,否則我們重新啟動自己的jar,sentinel里面的配置就沒有了。所以還需要引入一下這個依賴,將sentinel里面的配置同步到nacos中,nacos是可以將數據持久化到mysql數據庫的,所以就不用擔心數據丟失的問題。

<!-- 將sentinel的數據同步到nacos中 --> <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId> </dependency> 強調

如果還需要使用 openfeign怎么辦,還需要引入 openfeign的依賴嗎?

<!-- openfeign --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

spring-cloud-starter-alibaba-sentinel這個依賴中已經包含了常用的 spring-boot-starter-web、spring-cloud-starter-openfeign、spring-cloud-starter-netflix-ribbon。但是需要注意的是,里面的 <optoinal>true</optoinal>設置成了true,所以下面是不能被繼承的。



沒有直接引入版本號,因為父工程引入springcloudalibaba的包管理器了。

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba-dependencies.version}</version><type>pom</type><scope>import</scope> </dependency>

2.2、將程序注入sentinel中

直接在配置文件中配置一下就可以了,其他什么都不需要添加,包括啟動程序都不需要添加任何東西。

server:port: 8401spring:application:name: sentinel-service # 當前工程名稱cloud:sentinel:transport:dashboard: localhost:8080 # sentinel地址port: 8719 # Sentinel api端口 ,默認8719,假如被占用了會自動從8719開始依次+1掃描。直至找到未被占用的端口management:endpoints:web:exposure:include: '*' # springboot 監控 Actuator 的端點暴露,* 為暴露所有端點。

2.3、測試

首先啟動Sentinel,第一次啟動sentinel,在瀏覽器上訪問 IP:8080,你會發現什么都沒有,因為我們程序還沒有啟動。

在啟動我們程序,在刷新sentinel控制臺,依然沒有任何東西,因為我們要訪問接口了才有數據。啟動程序,訪問一次接口。

這樣就注入成功了。

三、流控規則

3.1、流控模式

直接

給/testA添加一個鏈路。

關聯

如果 /testA 關聯 /testB,這里只能通過一個QPS通過。那么如果當前 /testB每秒有 1一個以上的的請求在持續訪問,那么 /testA就不能訪問了。

  • 創建關聯控流

  • postman做連續發送請求

  • 測試

現在的配置意思是,/testB每秒超過 1個QPS,那么 /testA就不能訪問。

鏈路

3.2、流控效果

預熱

預熱時間計算:單機閾值 / 3 = 剛開始閾值。

  • 應用場景

秒殺系統,剛開始的時候,可能有很多數據在緩存哪里可能沒有,所以剛開始的時候放少量的QPS過來,過幾秒后沒問題了,緩存中說句豐富了。

排隊等待

勻速通過,不管來多少個,每次只能請求幾個。

四、降級規則

4.1、RT平均時長

上圖有誤,糾正

每秒中請求QPS大于 5 個,但是在200毫秒內沒有響應,那么就降級處理。1秒鐘后恢復。

4.2、異常比例(單位秒級)

4.3、異常數

五、熱點規則

5.1、普通配置

熱點規則,就是控制某個接口上的某個參數每秒中可以正常訪問多少個QPS。需要使用到 com.alibaba.csp.sentinel.annotation.SentinelResource注解。

配置好規則后,我執行以下請求

http://localhost:8401/ok?name=sadfa

每秒中只能請求一次。

http://localhost:8401/ok

隨便請求,不影響。

5.2、參數例外項

異常統一處理

目前我測試沒有效果

源碼地址:https://github.com/gl-stars/small-study-case/tree/master/nm-demo/SpringSecurityOAuth2-demo

總結

以上是生活随笔為你收集整理的Sentinel简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。