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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

sentinel 不显示项目_Sentinel+Nacos实现资源流控、降级、热点、授权

發布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sentinel 不显示项目_Sentinel+Nacos实现资源流控、降级、热点、授权 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文同名博客老炮說Java:https://www.laopaojava.com/,每天更新Spring/SpringMvc/SpringBoot/實戰項目等文章資料

Sentinel+Nacos 是微服務環境搭建必不可少的兩個組件,這里給大家推薦一套微服務教程:

SpringCloud微服務電商項目教程 - 老炮說Java-程序員編程資料和編程經驗分享平臺?www.laopaojava.com

教程主要包含下面內容:

Sentinel 可以簡單的分為 Sentinel 核心庫和 Dashboard。核心庫不依賴 Dashboard,但是結合 Dashboard 可以取得最好的效果。

這篇文章主要介紹 Sentinel 引入和規則配置等使用方法。 我們說的資源,可以是任何東西,服務,服務里的方法,甚至是一段代碼。

因為Sentinel控制臺配置的規則是在內存中的,所以我們需要Nacos來存儲規則實現持久化。

本文主要分為四個部分:

  • Sentinel代碼方式示例效果
  • Sentinel控制臺安裝
  • Springboot項目接入Sentinel控制臺配置規則
  • 使用Nacos存儲規則并實時更新

Sentinel代碼方式示例效果

在講解如何使用nacos存儲規則之前,我們先來看下直接代碼定義規則和資源的使用方式,這部分不是本文重點。

Sentinel的使用步驟大致可以分為三步:

  • 引入依賴
  • 定義資源
  • 定義規則
  • 我們先來看下Sentinel文檔上的一段代碼。

    1.引入依賴

    <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-core</artifactId><version>1.8.0</version> </dependency>

    2.定義資源

    public static void main(String[] args) {// 配置規則.initFlowRules();while (true) {// 1.5.0 版本開始可以直接利用 try-with-resources 特性,自動 exit entrytry (Entry entry = SphU.entry("HelloWorld")) {// 被保護的邏輯System.out.println("hello world");} catch (BlockException ex) {// 處理被流控的邏輯System.out.println("blocked!");}} }

    在這里我們定義了一個“HelloWorld”的資源,不斷打印hello world。

    3.定義規則

    private static void initFlowRules(){List<FlowRule> rules = new ArrayList<>(); //定義規則列表FlowRule rule = new FlowRule(); //定義一個規則rule.setResource("HelloWorld"); //什么資源應用此規則rule.setGrade(RuleConstant.FLOW_GRADE_QPS);rule.setCount(20); //沒秒只能20次請求rules.add(rule);//加入該規則FlowRuleManager.loadRules(rules); //載入規則列表 }

    這里定義了資源“HelloWorld”每秒只能通過20個請求。

    運行該main方法,可以看到控制臺輸出以下內容。

    Sentinel代碼方式示例效果

    可以看到請求通過20次打印hello world后再請求會阻塞打印blocked!,等到下一秒才會繼續打印hello world。

    這是一個簡單的示例用于說明下Sentinel的作用,下面我們會介紹Sentinel控制臺的使用以及搭配Nacos存儲規則并實時更新規則。

    Sentinel控制臺安裝

    Sentinel控制臺提供web可視化頁面配置規則,我們需要下載官方提供的jar包安裝啟動該服務。

    1.jar包下載

    可以在官網github上下載:https://github.com/alibaba/Sentinel/releases

    拉到每個版本信息區塊的最下方有jar文件的下載地址。

    jar文件的下載地址

    2.啟動腳本:

    注意根據下載的jar包修改文件名

    java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar

    啟動Sentinel控制臺

    3.訪問Sentinel控制臺

    地址和賬號密碼 http://localhost:8080 賬號:sentinel 密碼:sentinel

    訪問Sentinel控制臺

    訪問Sentinel控制臺

    控制臺已經啟動完成,可以看到左邊首頁下面顯示了一個sentinel-dashboard的項目,項目包含了監控、鏈路、各種規則配置和機器列表等菜單可以管理該項目規則,如果有新項目連接到控制臺,這里會出現新的項目菜單。

    springboot項目接入Sentinel控制臺配置規則

    1.引入依賴

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

    注意我這里沒有寫版本,因為我在父項目的pom文件中指定了阿里巴巴的依賴版本,子項目的相關依賴會自動尋找版本。

    <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR8</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.3.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

    2.配置yml

    接下去我們可以在項目中連接到該控制臺,這樣項目里的資源就可以被控制臺管理了。

    spring:application:name: sentinelcloud:sentinel:transport:port: 8719dashboard: localhost:8080 #啟動本項目后需要請求一次才能向sentinel控制臺注冊

    注意:啟動項目后需要請求一次項目才能向sentinel控制臺注冊。

    啟動項目后我們請求一下項目隨便一個接口,然后在控制臺可以看到多了一個新項目的菜單了。

    新項目的菜單

    3.控制臺配置項目資源規則

    我在項目里寫了一個簡單的接口如下:

    @RequestMapping("/") public String test(){return "ok"; }

    可以在控制臺的簇點鏈路菜單看到這個接口資源。

    簇點鏈路菜單

    可以看到表格右邊有四個按鈕,可以對該資源進行流控、降級、熱點、授權的配置。

    • 流控 流量控制,可以在流控中設置主要三塊內容:閾值類型+閾值、流控模式、流控效果。

    流控

    閾值類型+閾值:可以設置QPS的閾值,代表每秒最多允許請求多少次資源;可以設置線程數,代表可以同時運行的線程數量。 流控模式:有直接、關聯、鏈路三種。 --直接:代表超過閾值直接限流 --關聯:代表關聯的資源達到閾值時也進行限流(比如支付接口不行了把下單接口也限流掉)。 --鏈路:代表當服務到達閾值時,所有使用該服務的服務也限流。 流控效果:有快速失敗、Warm Up、排隊等待三種。 --快速失敗:直接限流操作。 --Warm Up:冷啟動,需要配置預熱時長,意思是當突然有大量請求時慢慢的放一些請求通過,預熱時長過后恢復到正常限流狀態,達到閾值時再進行限流。 --排隊等待:讓限流的請求排隊等待系統空閑時再通過,需要配置超時時間,過了超時時間再拒絕請求。

    • 降級 降級有慢調用比例、異常比例、異常數三種熔斷策略。

    降級

    --慢調用比例:需要設置最大RT(最大的響應時間)和比例閾值(0.0至1.0之間),請求大于最大RT的判定為慢調用,當慢調用比例到達比例閾值時進行熔斷降級。 --異常比例:需要設置一個比例閾值,當異常比例達到該閾值時進行熔斷降級。 --異常數:需要設置一個異常數,達到該異常數時進行熔斷降級。 降級需要設置一個熔斷時長和最小請求數,代表熔斷持續的時間,當大于最小請求數時降級規則才生效。

    • 熱點 熱點即經常訪問的數據, 很多時候我們希望統計某個熱點數據中訪問頻次最高的 Top K 數據,并對其訪問進行限制。對請求中攜帶的參數進行判斷是否是熱點數據,是熱點數據則根據規則限流。需要設置參數所有和閾值,參數所有從0開始代表請求的第幾個參數是熱點參數。
    • 授權 授權其實就是黑白名單的設置,黑名單模式代表黑名單里的不允許訪問,白名單模式代表白名單里的才允許訪問。需要設置對應的應用名稱。

    4.示例配置

    我們以流控操作來做個示例,我們在根請求接口的資源上配置一個流控規則。

    示例配置

    設置閾值類型為QPS,閾值為1,代表每秒只能通過1個請求。我們來看看效果。

    瀏覽器請求接口,然后按F5不停刷新,可以看到每秒會出現一次返回一次正確信息,其他都會返回限流信息。

    返回正確信息

    返回限流信息

    項目接入控制臺部分就講到這了,需要注意的是這里的控制臺配置是存在內存中的,如果你的項目重新啟動配置的規則就沒了,所以我們需要一個可以持久化配置規則的地方,接下去我們介紹下Nacos來持久化存儲Sentinel配置規則。

    使用Nacos存儲規則并實時更新

    Sentinel提供了多種數據源的支持,包括Nacos、Zookeeper、文件數據源等。

    使用Nacos存儲需要先安裝Nacos,可以看我的另外一篇Nacos安裝教程文章。

    1.引入Nacos依賴

    <dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId> </dependency>

    2.配置Nacos數據源

    安裝完Nacos后我們首先在項目中配置Sentinel的數據源為Nacos。

    spring:application:name: sentinelcloud:sentinel:transport:port: 8719dashboard: localhost:8080 #啟動本項目后需要請求一次才能向sentinel控制臺注冊datasource: ds2:nacos: server-addr: 192.168.67.129:8848data-id: sentinelgroup-id: Sentinel:Demodata-type: jsonrule-type: flow

    ds2是數據源名稱,其他主要配置下:

    • Nacos的地址
    • data-id和group-id:等會需要在Nacos控制臺新增一個同樣的配置才能生效
    • data-type:配置規則數據類型
    • rule-type:flow代表流控類型

    3.在Nacos控制臺配置規則內容

    我們在Nacos控制臺的配置列表新增一個配置。

    新增一個配置

    新增一個配置

    配置內容部分如下:

    [{"resource": "/","limitApp": "default","grade": 1,"count": 2,"strategy": 0,"controlBehavior": 0,"clusterMode": false} ]

    resource:資源名,資源名是限流規則的作用對象

    count:限流閾值grade:限流閾值類型,QPS 模式(1)或并發線程數模式(0)

    limitApp:流控針對的調用來源

    strategy:調用關系限流策略:直接、鏈路、關聯

    controlBehavior:流控效果(直接拒絕/WarmUp/勻速+排隊等待),不支持按調用關系限流

    clusterMode:是否集群限流

    4.效果

    啟動項目,配置好Nacos后,我們可以直接在Sentinel控制臺看到nacos的配置已經同步到Sentinel控制臺了,并且規則已經生效了,以后該規則只需要在Naocs配置規則就能實時生效了。

    Nacos規則同步到Sentinel控制臺

    需要注意的是,目前只支持Nacos規則同步到Sentinel控制臺,不支持在Sentinel控制臺配置規則同步到Nacos。

    好了,今天的內容就講到這里了,希望本文對你有所幫助。

    來源:https://www.toutiao.com/i6893111350684287496
    作者:程序員柳大俠

    總結

    以上是生活随笔為你收集整理的sentinel 不显示项目_Sentinel+Nacos实现资源流控、降级、热点、授权的全部內容,希望文章能夠幫你解決所遇到的問題。

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