spring cloud 通过Ribbon配置负载均衡 和Hystrix熔断器

2023-11-02

前言:

本篇博客是基于上一篇博客的再度扩展springcloud项目配置,Ribbon是用于实现负载均衡的,Hystrix是用于超时的方法返回一个兜底数据的。

Ribbon配置:

1. 在RestTemplate上加注解

@LoadBalanced

实现默认的负载均衡策略

2.实现RandomRule负载均衡策略

    /**
     * 创建RestTemplate交给容器
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }


    @Bean
    public IRule ribbonRule() {
        return new RandomRule();
    }

熔断器配置:

所需依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

yml配置:

#设置熔断器的等待时间
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 3000;
            #熔断器每个方法隔离采用的方式,线程池或者信号量 THREAD\SEMAPHORE
            strategy: THREAD;

 实例演示:

    @HystrixCommand(fallbackMethod ="getFallBackMethod")
    @GetMapping("order/{id}")
    public ResponseEntity<SysOrder> selectOne(@PathVariable Long id) {
        SysOrder order = orderService.getOrderById(id);
        return ResponseEntity.ok(order);
    }

在想要实现熔断器的方法上配置注解

@HystrixCommand(fallbackMethod ="熔断器方法名")

熔断器方法: 

    /**
     * 降级方法
     * 该方法调用时机为原有方法超时 参数必须与原有方法保持一致
     */
    public ResponseEntity<SysOrder> getFallBackMethod(Long id){
//        String s="你的请求太慢了";
//        System.out.println("你的请求太慢了");
//        return s;
        SysOrder order = new SysOrder();
        return ResponseEntity.ok(order);
    }

 该方法为熔断器方法,原有方法超时则会执行该方法返回一个兜底数据

注:熔断器方法的方法参数和返回值要与原来方法保持一致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring cloud 通过Ribbon配置负载均衡 和Hystrix熔断器 的相关文章

  • oracle 9i在线重定义功能应用于生产库

    今天 在客户生产库了用oracle 9i的在线重定义功能实现了由普通表转换为分区表的实施 总体实施过程还算 比较顺利 以下是测试过程 create test mid table create table test test mid ID N

随机推荐

  • python下使用libsvm:计算点到超平面的距离

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 最近在看的资料里涉及到计算 点到支持向量机分类超平面的距离 这一点内容 我使用的svm是libsvm 由于是新手 虽然看了一些资料 但中英转换误差等等原因导致经常出现理解错
  • Postman post请求返回错误状态码总结

    目录 Postman 踩坑总结 一 404 page not found 1 请求的参数不对 比如是POST请求但是参数却写的是GET 2 页面url写错或不存在 二 status 500 最近在使用Postman对接口进行测试 踩了几个坑
  • springboot2集成knife4j(swagger3)

    springboot2集成knife4j swagger3 springboot2集成knife4j swagger3 环境说明 集成knife4j 第一步 引入依赖 第二步 编写配置类 第三步 放行相关资源 保证启动了knife4j 第四
  • 数据库系统课程设计(高校成绩管理数据库系统的设计与实现)

    目录 1 需求分析 1 1 1 数据需求描述 1 1 2 系统功能需求 3 1 3 其他性能需求 4 2 概念结构设计 4 2 1 局部E R图 4 2 2 全局E R图 5 2 3 优化E R图 6 3 逻辑结构设计 6 3 1 关系模式
  • php 实现excel打包下载

    场景说明 举例说明 一个表单下面有多个提交的留言 导出这些留言 并且一个表单是一个excel 生成zip压缩包 msgList是数据 这里我将要导出的列表 列标题 名称都放在了一个变量中传递过来了 具体的数据结构如下 msgList for
  • java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter 验证码功能报此错误的解决办法

    利用kaptcha实现验证码功能时报以下错误 原因时缺少jar包 下载并添加jar包即可 缺少的jar包如下 java lang NoClassDefFoundError com jhlabs image RippleFilter com
  • 深度学习在CV领域的进展以及一些由深度学习演变的新技术

    CV领域 1 进展 如上图所述 当前CV领域主要包括两个大的方向 低层次的感知 和 高层次的认知 2 主要的应用领域 视频监控 人脸识别 医学图像分析 自动驾驶 机器人 AR VR 3 主要的技术 分类 目标检测 识别 分割 目标追踪 边缘
  • [转载]ubuntu编写shell文件基础

    https www cnblogs com tnxk archive 2012 08 09 2630195 html
  • C语言:二叉排序树的操作

    实现的功能 1 建立二叉排序树 2 输出中序遍历结果 3 查找数据 0 退出 代码 include
  • conda与pip

    通过conda info命令查看当前的镜像源 设置conda的镜像源 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda
  • 网络安全的不同角度

    扫盲 相关概念 DevSecOps FreeBuf咨询 快HVV了 聊聊攻防演练中安全产品的安全性 FreeBuf甲方群 https www freebuf com articles neopoints 266464 html FreeBu
  • gdb常用操作

    一 gdb功能介绍 程序调试工具 可以动态的改变程序的执行环境 二 gdb使用 1 运行 1 gdb 程序名 2 gdb 程序名 p 进程号 3 gdb运行 输入attach 进程号 2 查看变量 1 p 变量名 2 p 10x 变量名 3
  • JSON语法及JSON定义规范化

    一 前言 JSON JavaScript Object Notation JS对象标记 是一种轻量级的数据交换格式 它是基于 ECMAScript 的一个子集 采用完全独立于编程语言的文本格式来存储和表示数据 二 JSON 语法规则 在 J
  • Phoneme的相关概念以及Triphone

    Phoneme的相关概念以及Triphone 目录 Phoneme的相关概念以及Triphone 前言 可用来训练HMM的基本单位 1 词 words 3 单音 syllables 4 音素 phonemes 5 Triphone 中文 基
  • Android App完全退出方式

    第一种方式是创建一个MyApplication类 继承Application 在AndroidManifest xml的application标签配置android name 并在其中加入一个 List
  • 信捷 XD PLC 16位整数转换为双精度浮点数

    完成16位整数转换为双精度浮点数 信捷XD PLC需要两个指令 逐步转换 一个指令搞不定 具体的 第1步 int16 gt int32 第2步 int32 gt Double 例子 比如说将D0转换成浮点数放到D100 D103
  • 阿里云服务器开放宝塔面板8888端口配置安全组教程

    默认情况下 阿里云处于安全考虑 仅开放了80和3389端口 云吞铺子以开放8888端口为例 1 登录到云服务器ECS控制台 2 在实例列表中 点击 更多 网络和安全组 安全组配置 或者在这 3 手动添加安全组规则 云吞铺子以添加宝塔面板管理
  • ubuntu16.04安装opencv3.4.5时出错及解决方法

    ubuntu16 04安装opencv3 4 5时 参考这篇文章 运行 cmake D CMAKE BUILD TYPE Release D CMAKE INSTALL PREFIX usr local 出现了错误 CMake Error
  • Go语言基础(一)

    Go语言具有支持高并发 语法简洁等特点 变量 Go语言中变量的定义可以直接定义 不需要基本数据类型 这些会自动帮你定义 但是你也可以写出变量的类型 放在变量的后面 还有一种是直接使用 来定义变量 var a initial var b c
  • spring cloud 通过Ribbon配置负载均衡 和Hystrix熔断器

    前言 本篇博客是基于上一篇博客的再度扩展springcloud项目配置 Ribbon是用于实现负载均衡的 Hystrix是用于超时的方法返回一个兜底数据的 Ribbon配置 1 在RestTemplate上加注解 LoadBalanced