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

news2024/10/6 6:01:03

一  介绍说明

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 业务代码

    @Resource
    private 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
{
    @Override
    public 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)
    {
        //模拟从数据库查询出数据并赋值给DTO
        PayDTO 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.coloradmin.cn/o/1866605.html

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

相关文章

DVWA 靶场 SQL Injection 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

数学建模--Matlab求解线性规划问题两种类型实际应用

1.约束条件的符号一致 &#xff08;1&#xff09;约束条件的符号一致的意思就是指的是这个约束条件里面的&#xff0c;像这个下面的实例里面的三个约束条件&#xff0c;都是小于号&#xff0c;这个我称之为约束条件符号一致&#xff1b; &#xff08;2&#xff09;下面的就是上…

关于linux的图形界面

关于linux的图形界面 1. 概述1.1 X1.2 DM&#xff08;显示管理器/登录管理器&#xff09;1.3 WM&#xff08;窗口管理器&#xff09;1.4 GUI Toolkits1.5 Desktop Environment1.6 基本架构 2. 安装桌面2.1 Centos安装桌面2.2 Ubuntu安装桌面&#xff08;未实践&#xff09; 3. …

批量打造怀旧风情:视频批量剪辑将现代视频打造成怀旧经典老视频效果

在繁忙的现代生活中&#xff0c;我们时常怀念那些旧时光&#xff0c;那些充满岁月痕迹的老电影片段。它们不仅记录了一个时代的风貌&#xff0c;更承载了无数人的情感与记忆。你是否想过&#xff0c;将现代的视频素材打造成这种怀旧经典的老视频效果&#xff0c;让每一帧都充满…

Python将Word文档转换为图片(JPG、PNG、SVG等常见格式)

将Word文档以图片形式导出&#xff0c;既能方便信息的分享&#xff0c;也能保护数据安全&#xff0c;避免被二次编辑。文本将介绍如何使用 Spire.Doc for Python 库在Python程序中实现Word到图片的批量转换。 目录 Python 将Word文档转换为JPG、JPEG、PNG、BMP等图片格式 Py…

基于信息论的高动态范围图像评价算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于信息论的高动态范围图像评价算法matlab仿真&#xff0c;利用一种自然图像的概率模型对图像的熵与成像动态范围之间的关系进行了数值模拟,得到了具有普遍意义上…

YOLOv10改进 | 卷积模块 | 将Conv替换为轻量化的GSConv【轻量又涨点】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a;《YOLOv8改进有效…

Docker搭建ELK

docker安装ElasticSearch 创建网络 #这里先创建一个网络&#xff1a;因为我们还需要部署kibana容器、logstash容器&#xff0c;需要让这些容器互联。 docker network create elk-net#查看网络 docker network ls下载ES镜像 #搜索镜像 docker search elasticsearch #下载镜像…

使用ChatGPT提升编程效率:程序员的最佳实践分享

在这个信息技术飞速发展的时代&#xff0c;编程已经成为了越来越多人的必备技能。无论你是初学者&#xff0c;还是经验丰富的开发者&#xff0c;都可能会遇到编程中的各种问题和挑战。幸运的是&#xff0c;AI 技术的进步让我们有了新的解决工具——ChatGPT。作为一名科技博客博…

OAuth2.0 三方登录(Google登录)

一、OAuth2.0流程 &#xff08;A&#xff09;客户端向从资源所有者请求授权。&#xff08;B&#xff09;客户端收到授权许可&#xff0c;资源所有者给客户端颁发授权许可&#xff08;比如授权码code&#xff09;&#xff08;C&#xff09;客户端与授权服务器进行身份认证并出示…

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

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

吴恩达机器学习作业ex5:正则化线性回归和偏差VS方差(Python实现)详细注释

文章目录 1.正则化线性回归1.1 可视化数据集1.2 正则化线性回归成本函数1.3 正则化线性回归梯度1.4 拟合线性回归 2 偏差-方差2.1 学习曲线 3.多项式回归3.1 学习多项式回归3.2 正则化参数的调整3.3 使用交叉验证集选择 λ3.4 计算测试集误差 1.正则化线性回归 在练习的前半部…

RT-Thread 实时系统介绍

介绍 RT-Thread 是一款开源的实时操作系统&#xff0c;主要面向物联网设备。它支持多种芯片架构&#xff0c;具有安全、低功耗、智能、可伸缩的特性。RT-Thread 拥有超过16年的技术积累&#xff0c;广泛应用于各行业&#xff0c;装机量达数十亿台。它提供了包括设备虚拟文件系…

Python学习打卡:day15

day15 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day15110、数据分析案例步骤 1 —— 文件读取data_define_108.pyfile_define_108.py 111、数据分析案例步骤二——数据计算112、数据分析案例步骤…

医生出诊排班挂号微信小程序系统源码

便捷就医新选择 解决医院门诊快速管理病人资料的问题&#xff0c;微信里可以查看门诊科室和概况​ &#x1f3e5; 引言&#xff1a;就医新体验 在繁忙的都市生活中&#xff0c;看病就医常常成为我们生活中的一大难题。不过&#xff0c;随着科技的进步&#xff0c;医生出诊排班…

突然断供中国!OpenAI变CloseAI,用户连夜搬家

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 OpenAI&#xff0c;这把变成CloseAI了。 6月25日早上&#xff0c;有中国开发者表示收到了来自OpenAI的“警告信”&#xff1a;将采取额外措施停止其不支持的地区的API&#xff08;应用接口&#xff09…

LINKAI工作流的建立与调试,用到COW项目的微信机器人上

连接时需要把右边的号连到下一个框的输入&#xff0c;开始与结束是默认的。 可以单独调试模块 可以对模块进行个性化定义 最后进行总流程调试 将这里的code放到config.json文件中 接着又做了一个较复杂的工作流DgPz9wJaoh   QlCc34a8bP 原项目网址&#xff1a; https:/…

JUC 队列

常见的阻塞队列 Queue接口 public interface Queue<E> extends Collection<E> {//添加一个元素&#xff0c;添加成功返回true, 如果队列满了&#xff0c;就会抛出异常boolean add(E e);//添加一个元素&#xff0c;添加成功返回true, 如果队列满了&#xff0c;返回…

记录Gstreamer的uridecodebin可以自动选择硬解码器

记录&#xff1a; uridecodebin3 和uridecodebin优先硬解码 这两个插件&#xff0c;本来是负责动态选择合适的解码器来处理特定的媒体流&#xff0c;使用案例&#xff1a; gst-launch-1.0 uridecodebin urirtsp://192.168.1.120:8554/test ! glimagesink -v gst-launch-1.0 …

Flutter页面状态保留策略

目的: 防止每次点击底部按钮都进行一次页面渲染和网络请求 1. 使用IndexedStack 简单,只需要把被渲染的组件外部套一层IndexedStack即可 缺点: 在应用启动的时候,所有需要保存状态的页面都会直接被渲染,保存起来. 对性能有影响 2. 使用PageController 实现较为复杂,但是不用…