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.mzph.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;提供了一种验证信息来源和确保信息完整性的方法。本文将深入探讨数字签名的概念、工作原理、应用场景以及它如何帮助提高网络安全性。 数字签名的概念 数字签名是一种加密…