dubbo復習:(8)使用sentinel對服務進行降級

一、下載sentinel-dashboard控制臺應用并在8080端口啟動
二、項目添加springboot 和dubbo相關依賴(降級規則并未持久化,如果需要持久化,如果需要持久化降級規則,只需增加nacos相關依賴并在nacos中進行配置,然后配置application.properties或application.yml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>dubbo-service-provider2</artifactId><version>1.0-SNAPSHOT</version><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><dubbo.version>3.1.8</dubbo.version><spring-boot.version>2.7.10</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.10</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><type>pom</type></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-apache-dubbo-adapter</artifactId><version>1.8.7</version></dependency><dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>1.8.7</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-dependencies-zookeeper</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.1</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.0.1.0</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

三、配置文件

server:port: 9811
dubbo:application:name: dubbo-springboot-demo-providerprotocol:name: dubboport: 28095registry:address: zookeeper://xx.xx.xx.xx:2181

四、配置jvm參數

-Djava.net.perferIPv4Stack=true
-Dcsp.sentinel.api.port=8720
-Dcsp.sentinel.dashboard.server=localhost:8080
-Dproject.name=spring-cloud-sentinel-dubbo-provider

在這里插入圖片描述
五、定義服務接口、服務實現(其中服務實現中故意制造出了除零異常用來測試降級,handleException方法是降級時被調用的方法)

package cn.edu.tju.service;public interface DemoService {String sayHello(String name);
}
package cn.edu.tju.service;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.google.gson.JsonObject;
import org.apache.dubbo.config.annotation.DubboService;import java.util.Date;@DubboService(loadbalance = "")
public class DemoServiceImpl implements DemoService {@SentinelResource(value = "sayHello", fallback = "handleException")public String sayHello(String name) {int t = 1/0;return "Hay " + name;}public String handleException(String name,Throwable ex) {String className = ex.getClass().getName();if(className.equals("com.alibaba.csp.sentinel.slots.block.degrade.DegradeException")){JsonObject jsonObject=new JsonObject();jsonObject.addProperty("code",500);jsonObject.addProperty("message","降級原因:"+ex.getMessage()+" "+ex.getClass().getName());return jsonObject.toString();}else {JsonObject jsonObject=new JsonObject();jsonObject.addProperty("code",500);jsonObject.addProperty("message","異常原因:"+ex.getMessage()+" "+ex.getClass().getName());return jsonObject.toString();}}}

六、在sentinel-dashboard控制臺配置降級規則
在這里插入圖片描述
其中資源名要和接口實現中方法上@SentinelResource注解上的value值相同
七、客戶端調用dubbo服務sayHello接口,滿足降級的條件后,將從接口獲取到類似如下的響應(其中getDubbo這個接口調用了上面的sayHello接口)
在這里插入圖片描述
可見降級規則起作用了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15336.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15336.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15336.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

會話機制:Session

1、什么是會話&#xff1a; 會話對應的英語單詞&#xff1a;session 用戶打開瀏覽器&#xff0c;進行一系列操作&#xff0c;然后最終將瀏覽器關閉&#xff0c;這個整個過程叫做&#xff1a;一次會話。會話在服務器端也有一個對應的java對象&#xff0c;這個java對象叫做&…

使用Python Tkinter創建GUI應用程序

大家好&#xff0c;當我們談及使用Python Tkinter創建GUI應用程序時&#xff0c;我們涉及的不僅是技術和代碼&#xff0c;更是關于創造力和用戶體驗的故事。Tkinter作為Python標準庫中最常用的GUI工具包&#xff0c;提供了豐富的功能和靈活的接口&#xff0c;讓開發者能夠輕松地…

每日一題(4)——String連接,替換,比較,查找等

主要是一些字符串的連接&#xff0c; 替換&#xff0c;比較&#xff0c;去首尾空格&#xff0c;查找等操作&#xff1b; class ZiFu{public static void main(String []args){String s1"hello world";String s2new String("hello,world");s2" "…

Vue3判斷變量和對象不為null和undefined

Vue3判斷變量和對象不為null和undefined 一、判斷變量二、判斷對象 一、判斷變量 在 Vue 3 中&#xff0c;你可以使用 JavaScript 提供的常規方式來檢查變量是否不為 null 和不為 undefined。你可以分別使用嚴格不等運算符 ! 來比較變量是否不為 null 和不為 undefined。以下是…

【基于springboot+vue的房屋租賃系統】

介紹 本系統是基于springbootvue的房屋租賃系統&#xff0c;數據庫為mysql&#xff0c;可用于日常學習和畢設&#xff0c;系統分為管理員、房東、用戶&#xff0c;部分截圖如下所示&#xff1a; 部分界面截圖 用戶 管理員 聯系我 微信&#xff1a;Zzllh_

打開服務器遠程桌面連接不上,可能的原因及相應的解決策略

在解決遠程桌面連接不上服務器的問題時&#xff0c;我們首先需要從專業的角度對可能的原因進行深入分析&#xff0c;并據此提出針對性的解決方案。以下是一些可能的原因及相應的解決策略&#xff1a; 一、網絡連接問題 遠程桌面連接需要穩定的網絡支持&#xff0c;如果網絡連接…

金融業務及其他學習資料相關

目錄 金融業務相關學習資料 道路交通安全考試科一學習資料(2023年版) 英語學習資料

ArcGIS提取含有計曲線的等高線

喜歡就關注我們吧&#xff01; 今天我么來看看&#xff0c;如何利用DEM提取含有計曲線的等高線&#xff01; 常規的話我們利用DEM提取的等高線都是不帶計曲線的&#xff0c;無法把計曲線標注出來&#xff0c;今天我們就來看下&#xff0c;如何處理一下哦&#xff01;提取帶有計…

springboot打包目錄解析

一、引言 Java開發中我們使用最多的便是spring框架&#xff0c;比如springboot應用。微服務模式下&#xff0c;每個服務都是一個springboot應用&#xff0c;都會被打包成一個可執行jar包。那么我們有多少人嘗試去了解過這個可執行jar到底是什么&#xff1f;它的結構是什么樣的…

2730. 找到最長的半重復子字符串(c++,滑動窗口)

給你一個下標從 0 開始的字符串 s &#xff0c;這個字符串只包含 0 到 9 的數字字符。 如果一個字符串 t 中至多有一對相鄰字符是相等的&#xff0c;那么稱這個字符串 t 是 半重復的 。例如&#xff0c;0010 、002020 、0123 、2002 和 54944 是半重復字符串&#xff0c;而 00…

Homebrew安裝、 Mac上pyenv的安裝與使用,復制黏貼搞定,網上教程看得眼花繚亂的來看看,簡單明了一步到胃!!

安裝 Homebrew /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"安裝pyenv brew install pyenv添加到終端使用的配置文件.zshrc、.bashrc 避免不必要的麻煩兩個終端的配置文件都進行添加&#xff0c;文件在當前用戶目…

第四十天 | 509.斐波那契數 70.爬樓梯 746.用最小花費爬樓梯

題目&#xff1a;509.斐波那契數 思路&#xff1a; 1.確定dp[i]含義&#xff1a;第i個斐波拉契數值為dp[i] 2.確定遞推公式&#xff1a;dp[i] dp[i - 1] dp[i - 2] 3.dp數組如何初始化&#xff1a;d[0] 1, dp[1] 1 4.遍歷順序&#xff1a;從前向后 5.打印dp class Soluti…

C語言代碼文件開頭需要的代碼

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>

淚目!網絡連接中斷的原因,終于找到了!

朋友們&#xff0c;出大事了&#xff01; 不知道多少朋友玩過 DNF 這個游戲&#xff0c;這個我從小學玩到大學的 “破” 游戲&#xff0c;昨天竟然出手游了&#xff01; 我都忘了自己曾幾何時預約過這個手游通知&#xff0c;昨天給我發了條通知信息說游戲已開服。 老玩家直接…

Gitee好用的瀏覽器插件【GiteeTree】

使用gitee的時候&#xff0c;可能拉到別人的項目后&#xff0c;只是想看下某些文件的代碼&#xff0c;但是不得不全部都拉下來&#xff0c;每次點又很麻煩。這個插件【GiteeTree】就很好用了&#xff0c;只需要搜索GiteeTree&#xff0c;然后把插件下載下來

git revert 和 git reset

文章目錄 工作區 暫存區 本地倉庫 遠程倉庫需求&#xff1a;已推送到遠程倉庫&#xff0c;想要撤銷操作git revert &#xff08;添加新的提交來“反做”之前的更改&#xff0c;云端會殘留上次的提交記錄&#xff09;git reset&#xff08;相當于覆蓋上次的提交&#xff09;1.--…

中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制

公眾號&#xff1a;生信漫談&#xff0c;獲取最新科研信息&#xff01; 中國科學院植物研究所宋獻軍課題組揭示不同的翻譯后修飾協作調控水稻種子大小的新機制https://mp.weixin.qq.com/s/ycNgYzACwkYZbo6k0Zqtcw 未來20年&#xff0c;我國將決戰全面建成社會主義現代化國家&…

MySQL筆記第三天(從小白到入門)

文章目錄 MySQL筆記SQL語言介紹數據庫系統關系型數據庫非關系型數據庫SQL和數據庫系統的關系數據庫系統架構 MySQL的介紹概念MySQL的版本 MySQL的DDL操作-重點基本數據庫操作基本表操作 MySQL的DML操作-重點insert-插入數據update-更新數據delete-刪除數據 MySQL的約束-了解概述…

工廠生產管理系統

為應對一些國內驗廠&#xff0c;如大疆等&#xff0c;他們需要客戶有自己的生產管理系統的&#xff0c;但實際很多公司是沒有引入ERP這類的系統的&#xff0c;從而想開發一套簡單的生產管理系統。 參考了網上一個比較古老的StorageMange項目&#xff0c;此項目用到DevExpress的…

數字簽名:確保信息完整性和身份驗證的關鍵技術

在數字時代&#xff0c;信息的安全性和真實性變得至關重要。數字簽名作為一種電子形式的簽名&#xff0c;提供了一種驗證信息來源和確保信息完整性的方法。本文將深入探討數字簽名的概念、工作原理、應用場景以及它如何幫助提高網絡安全性。 數字簽名的概念 數字簽名是一種加密…