码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Hystrix熔断器整合 - 服务熔断和服务降级


    实战前需了解:https://blog.csdn.net/wanzijy/article/details/125041622
    Hystrix熔断器整合 - 搭建项目:https://blog.csdn.net/wanzijy/article/details/125496651
    Hystrix熔断器整合 - 请求缓存:https://blog.csdn.net/wanzijy/article/details/125512072
    Hystrix熔断器整合 - 请求合并:https://blog.csdn.net/wanzijy/article/details/125579664
    Hystrix熔断器整合 - 服务隔离之线程池隔离:https://blog.csdn.net/wanzijy/article/details/125630353
    Hystrix熔断器整合 - 服务隔离之信号量隔离:https://blog.csdn.net/wanzijy/article/details/125826690
    Hystrix熔断器整合 - 服务熔断和服务降级:https://blog.csdn.net/wanzijy/article/details/125826853
    Hystrix熔断器整合 - Feign实现服务容错:https://blog.csdn.net/wanzijy/article/details/125985304
    Hystrix熔断器整合 - 可视化界面三部曲:https://blog.csdn.net/wanzijy/article/details/126005452

    1. 服务熔断

    1.1 说明

    由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种防护措施,也成为过载保护

    以下操作均在 order-service-rest 模块中进行

    1.2 修改 ProductServiceImpl

    @HystrixCommand(commandProperties = {
    	//  当请求符合熔断条件触发 fallbackMethod ,默认 20个
    	@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "10"),
    
    	//  请求错误率大于 50% 就启动熔断器,然后 for 循环发起重试请求,当请求符合条件触发 fallbackMethod ,默认时 50%
    	@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "50"),
    
    	//  熔断多少秒后去重试,默认 5s
    	@HystrixProperty(name = HystrixPropertiesManager.CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "5000")
        }, fallbackMethod = "selectProductByIdFallback")  //  这里的方法名要和下面定义的回调方法的方法名相同
        public Product selectProductListById(Integer id) {
            System.out.println("------selectProductListById------" +
    LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
    	if (1 == id) {
    		throw new RuntimeException("查询主键为 1 的商品信息导致异常");
    	}
    	return restTemplate.getForObject("http://product-service/product/" + id, Product.class);
    }
    
    public Product selectProductByIdFallback(Integer id) {
    	return new Product(id, "托底数据", 1, 2666D);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    1.3 修改 OrderServiceImpl

    @Override
    public Order searchOrderById(Integer id) {
    	return new Order(id, "order-003", "中国", 2666D,
    Arrays.asList(productService.selectProductListById(1)));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.4 测试

    连续快速的访问:http://localhost:9090/order/1/product ,因为在注解中设置的次数是10次,所以在测试时要大于等于10次去访问该接口
    结果1
    在这里插入图片描述

    2. 服务降级

    其实上述所有的 fallbackMethod 都是降级

    以下操作均在 order-service-rest 模块中进行

    2.1 修改 ProductServiceImpl

    @HystrixCommand(fallbackMethod = "selectProductByIdFallback")
    public Product selectProductListById(Integer id) {
    	return restTemplate.getForObject("http://product-service/product/" + id, Product.class);
    }
    
    • 1
    • 2
    • 3
    • 4

    2.2 测试

    访问 http://localhost:9090/order/1/product

    在这里插入图片描述

    此时关掉 product-service 模块,再次访问
    在这里插入图片描述

  • 相关阅读:
    资金变动语音通知怎么实现?
    AD20软件学习
    iperf带宽探测工具
    一文带你GO语言入门
    代码随想录Day59 | 647. 回文子串 | 516. 最长回文子序列
    Android源码——SparseArray源码解析
    【毕业设计】深度学习YOLO图像视频足球和人体检测 - python opencv
    最新报错注入攻击和代码分析技术
    手把手带你学python—牛客网python基础第一期
    C++编程法则365天一天一条(323)main函数执行之前和之后的动作
  • 原文地址:https://blog.csdn.net/wanzijy/article/details/125826853
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号