springcloud第4季 springcloud-alibaba之openfegin+sentinel整合案例

一  介绍说明

1.1 说明

1.1.1 消费者8081

1.1.2 openfegin接口

1.1.3 提供者9091

9091微服务满足:

1 openfegin 配置fallback逻辑,作为统一fallback服务降级处理。

2.sentinel访问触发了自定义的限流配置,在注解@sentinelResource里面配置blockhandler方法。

二 实操案例

2.1 consumer案例配置

2.1.1 pom配置

        <!--alibaba-sentinel--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 引入自己定义的api通用包 --><dependency><groupId>com.jurf.ms.api</groupId><artifactId>ms-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency>

2.1.2 业务代码

    @Resourceprivate PayFeignSentinelApi payFeignSentinelApi;
//    @Autowired
//   private OpenFeginApi openFeingApi;@GetMapping(value = "/consumer/pay/nacos/get/{orderNo}")public ResultData getPayByOrderNo(@PathVariable("orderNo") String orderNo){return payFeignSentinelApi.getPayByOrderNo(orderNo);//   return openFeingApi.getPayByOrderNo(orderNo);}

2.1.3 配置文件

2.1.4 启动配置

2.2 openfegin-api的配置

2.2.1 pom文件

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

2.2.2 业务代码

1.代码接口: 注意这里要配置成访问服务的服务名称,和nacos的服务名一致。

/*** @auther zzyy* @create 2024-01-05 13:05*/
@FeignClient(value = "ms-alibaba-provider9091",contextId = "ms-alibaba-provider9091-1",fallback = PayFeignSentinelApiFallBack.class)
public interface PayFeignSentinelApi
{@GetMapping(value = "/pay/nacos/get/{orderNo}")public ResultData getPayByOrderNo(@PathVariable("orderNo") String orderNo);
}

2.fallback实现类

@Component
public class PayFeignSentinelApiFallBack implements PayFeignSentinelApi
{@Overridepublic ResultData getPayByOrderNo(String orderNo){return ResultData.fail(ReturnCodeEnum.RC500.getCode(),"对方服务宕机或不可用,FallBack服务降级o(╥﹏╥)o");}
}

2.3  提供配置

2.3.1 pom配置

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

2.3.2 业务实现

    //openfeign+sentinel进行服务降级和流量监控的整合处理case@GetMapping(value = "/pay/nacos/get/{orderNo}")@SentinelResource(value = "getPayByOrderNo",blockHandler = "handlerBlockHandler")public ResultData getPayByOrderNo(@PathVariable("orderNo") String orderNo){//模拟从数据库查询出数据并赋值给DTOPayDTO payDTO = new PayDTO();payDTO.setId(1024);payDTO.setOrderNo(orderNo);payDTO.setAmount(BigDecimal.valueOf(9.9));payDTO.setPayNo("pay:"+ IdUtil.fastUUID());payDTO.setUserId(1);return ResultData.success("查询返回值:"+payDTO);}public ResultData handlerBlockHandler(@PathVariable("orderNo") String orderNo, BlockException exception){return ResultData.fail(ReturnCodeEnum.RC500.getCode(),"getPayByOrderNo服务不可用," +"触发sentinel流控配置规则"+"\t"+"o(╥﹏╥)o");}

2.3.3 配置

2.4  服务启动

1.nacos启动

2.sentinel启动

3.应用服务启动

2.5 验证访问

1.消费者: http://localhost:8081/consumer/pay/nacos/get/999

2.提供者:http://localhost:9091/pay/nacos/get/222

3.验证blockhandler

a) sentinel配置

b)频繁刷新访问: 提示sentinel流控规则访问

 4.验证fallback

关闭9091服务提供者

再次访问:提示fallback异常提示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/35962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的学生综合测评系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架 工具&#xff1a;MyEclipse、Tomcat 系统展示 首页 系统首页&#xff0c;提供综合…

After Effects 2024 mac/win版:创意视效,梦想起航

After Effects 2024是一款引领视效革命的专业软件&#xff0c;汇聚了创意与技术的精华。作为Adobe推出的全新版本&#xff0c;它以其强大的视频处理和动画创作能力&#xff0c;成为从事设计和视频特技的机构&#xff0c;如电视台、动画制作公司、个人后期制作工作室以及多媒体工…

求职产品运营的个人简历案例(精选篇)

在求职产品运营的道路上&#xff0c;一份出色的个人简历是迈向成功的第一步&#xff0c;但是简历怎么写才最好呢&#xff1f;下面是小编整理的求职产品运营的个人简历案例&#xff0c;同时&#xff0c;幻主简历网还提供精美简历模板下载和简历在线制作工具&#xff0c;欢迎大家…

Kivy tutorial 008: More kv language

Kivy tutorial 008: More kv language – Kivy Blog Central themes: Event binding and canvas instructions in kv language 中心主题: 事件绑定 和 kv语言里的画布结构 This tutorial directly follows on from the previous, so start by retrieving the previous code, …

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数

meizu M10 魅蓝 10 mblu10 root 解锁 安装LSPosed框架 紫光展锐改串 AT命令 一键新机 改机软件 硬改 改参数 ro.system.build.version.release11 ro.system.build.version.release_or_codename11 ro.system.build.version.sdk30 ro.system.custom.versionAndroid_M01 ro.prod…

python目录树生成器

代码如下&#xff1a; import os from colorama import Fore, Style, init from tkinter import Tk, Label, Entry, Button, Text, Scrollbar, RIGHT, Y, END# 初始化 colorama init(autoresetTrue)def print_directory_tree(root_dir, text_widget, indent, lastTrue):"…

NISP国家信息安全水平考试

国家信息安全水平考试(NISP)是中国信息安全测评中心考试、发证&#xff0c;由国家网络空间安全人才培养基地运营管理&#xff0c;并授权网安世纪科技有限公司为NISP证书管理中心。 中国信息安全测评中心开展国家信息安全水平考试(NISP)考试项目&#xff0c;是为普及信息安全/网…

Sklearn 深入教程

Sklearn 深入教程 Scikit-learn&#xff08;sklearn&#xff09;是Python中功能强大且广泛使用的机器学习库。本教程将深入探讨sklearn中的高级主题&#xff0c;涵盖高级数据预处理、高级特征工程、复杂模型调参、高级集成学习、模型持久化与部署等内容。 目录 高级数据预处…

Python实例:faker生成数据集、文件

原文链接&#xff1a;http://www.juzicode.com/python-example-faker-create-data 本文的几个例子用faker生成数据并用openpyxl生成表格&#xff0c;或者生成csv、xml、图像文件。 A&#xff09;生成个人数据 #juzicode.com/VX公众号:juzicode from openpyxl import Workboo…

IOS Swift 从入门到精通:BlurEffect BlendMode stroke

文章目录 UIBlurEffectBlendModestroke基本用法:描边样式:与strokeBorder的区别:组合使用:自定义形状:UIBlurEffect 在Swift中,实现模糊效果通常是通过UIKit框架中的UIBlurEffect类来完成的,这通常被称作毛玻璃效果。 **创建UIBlurEffect实例:**选择一个模糊效果的样…

探索AudioLM的音频源识别能力:解锁声音的奥秘

&#x1f3b5; 探索AudioLM的音频源识别能力&#xff1a;解锁声音的奥秘 &#x1f50d; 在音频处理领域&#xff0c;识别不同的音频源是一项挑战性任务&#xff0c;涉及到音频信号处理、模式识别和机器学习等多个领域。AudioLM&#xff0c;作为一个假想的先进的音频处理模型&a…

docker 安装MySQL8以上

1.新建目录 mkdir -p /usr/local/src/mysql80 2.安装最新mysql # 拉取镜像 docker pull mysql 3.运行镜像创建容器&#xff0c;实现数据库和日志的持久化等命令 docker run \ -p 3380:3306 \ --name mysql80 \ --privilegedtrue \ --restartalways \ -v /usr/local/src/my…

Spring Boot如何实现跨域资源共享(CORS)?

&#x1f345; 作者简介&#xff1a;哪吒&#xff0c;CSDN2021博客之星亚军&#x1f3c6;、新星计划导师✌、博客专家&#x1f4aa; &#x1f345; 哪吒多年工作总结&#xff1a;Java学习路线总结&#xff0c;搬砖工逆袭Java架构师 &#x1f345; 技术交流&#xff1a;定期更新…

1.k8s:架构,组件,基础概念

目录 一、k8s了解 1.什么是k8s 2.为什么要k8s &#xff08;1&#xff09;部署方式演变 &#xff08;2&#xff09;k8s作用 &#xff08;3&#xff09;Mesos&#xff0c;Swarm&#xff0c;K8S三大平台对比 二、k8s架构、组件 1.k8s架构 2.k8s基础组件 3.k8s附加组件 …

5种算法简单介绍:贪心算法、分治法、回溯法、动态规划法、最大流算法

1. 贪心算法&#xff08;Greedy Algorithm&#xff09; 定义&#xff1a; 贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。贪心算法并不是对所有问题都能得到整体最优…

【STM32-存储器映射】

STM32-存储器映射 ■ STM32F1-4G地址空间分成8个块■ STM32F1-Block0■ STM32F1-Block1■ STM32F1-Block2■ STM32F1- ■ STM32F1-4G地址空间分成8个块 ■ STM32F1-Block0 有出厂 BootLoader 就可以使用串口下载程序。如Keil5图中IROM地址是0x8000000 开始 就是flash地址 ■ S…

使用方法——注意事项及好处

public class MethodDemo01 {public static void main(String[] args) {// 目标&#xff1a;掌握定义方法的完整性&#xff0c;清楚使用方法的好处。// 需求&#xff1a;假如现在有很多程序员都要进行2个整数求和的操作。//1、李工。int rs sun(10,20);System.out.println(&q…

低代码开发平台赋能智慧警务管理:创新引领下的安全新篇章

随着信息技术的飞速发展&#xff0c;智慧警务管理已经成为维护社会治安、保障人民安全的重要手段。在这一背景下&#xff0c;低代码开发平台以其高效、灵活、易用的特性&#xff0c;为智慧警务管理注入了新的活力。本文将探讨低代码开发平台在智慧警务管理中的应用&#xff0c;…

vue-codemirror的简单使用

功能 代码编辑器 安装 命令行&#xff1a;npm install codemirror vue-codemirror --save 单文件引入 import { Codemirror } from vue-codemirror 单文件展示 <codemirrorv-model"localCode"class"code-mirror":placeholder"placeholder&qu…

[vscode] 自定义log快捷生成代码

1、进入设置页面&#xff1a;文件>首选项>用户代码片段>选择设置的语言。 2. 关于代码段显示位置的调整设置 文件>首选项>设置&#xff0c;搜索代码段或snippetSuggestions&#xff0c;修改为”top”; 参考&#xff1a; vscode自定义log快捷生成代码