iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >hystrix服务降级方法使用介绍
  • 304
分享到

hystrix服务降级方法使用介绍

2024-04-02 19:04:59 304人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

当一个服务端的业务响应的时间过长的时候或者业务处理逻辑处理异常,不应该等待,应该给出一种处理方法 超时导致服务器变慢(转圈) --->超时不再等待 出错(宕机或程序运行出错)

当一个服务端的业务响应的时间过长的时候或者业务处理逻辑处理异常,不应该等待,应该给出一种处理方法

超时导致服务器变慢(转圈) --->超时不再等待

出错(宕机或程序运行出错) --->出错要有兜底

pom文件依赖 :

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

主启动类需要加注解:

@EnableHystrix

yml文件设置:

feign:
  hystrix:
    enabled: true

feign:hystrix:enabled: true的作用,官网解释“Feign将使用断路器包装所有方法”,也就是将@FeignClient标记的那个service接口下所有的方法进行了hystrix包装(类似于在这些方法上加了一个@HystrixCommand),这些方法会应用一个默认的超时时间为1s

情况1

  
    @HystrixCommand(fallbackMethod = "paymentInfo_TimeOutHandler",commandProperties = {
            @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="3000")
    })
    public String paymentInfo_TimeOut(Integer id)
    {
        int second = 5;
        try { TimeUnit.SECONDS.sleep(second); } catch (InterruptedException e) { e.printStackTrace(); }
        return "线程池:"+Thread.currentThread().getName()+"paymentInfo_TimeOut,id: "+id+"\t"+"O(∩_∩)O,耗费秒: "+second;
    }
    public String paymentInfo_TimeOutHandler(Integer id){
        return "/(ㄒoㄒ)/调用支付接口超时或异常:\t"+ "\t当前线程池名字" + Thread.currentThread().getName();
    }

@HystrixCommand(fallbackMethod = "paymentInfo_TimeOutHandler",

commandProperties ={@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",

value="3000")

})

@HystrixCommand:需要进行降级处理的业务处理方法的标注注解

fallbackMethod :发生时间过长的时候或运行错误的时候需要调用的方法

@HystrixProperty:相关参数设置,如上就是设置超时时间,超过了3s就调用方法

情况2:每个业务方法对应一个兜底的方法,代码膨胀,统一和自定义的分开

@RestController
@Slf4j
@DefaultProperties(defaultFallback = "payment_Global_FallbackMethod")
public class PaymentHystirxController
{
    @GetMapping("/consumer/payment/hystrix/timeout/{id}")
    @HystrixCommand //加了@DefaultProperties属性注解,并且没有写具体方法名字,就用统一全局的
    public String paymentInfo_TimeOut(@PathVariable("id") Integer id)
    {
        String result = paymentHystrixService.paymentInfo_TimeOut(id);
        return result;
    }
    public String paymentTimeOutFallbackMethod(@PathVariable("id") Integer id)
    {
        return "paymentTimeOutFallbackMethod,对方系统繁忙,请10秒钟后再次尝试/(ㄒoㄒ)/";
    }
    public String payment_Global_FallbackMethod()
    {
        return "Global异常处理信息,请稍后再试,/(ㄒoㄒ)/~~";
    }
}

@DefaultProperties(defaultFallback = "payment_Global_FallbackMethod")

defaultFallback :指定默认改控制类的所有标注了@HystrixCommand的控制方法降级处理都是名字为payment_Global_FallbackMethod

如果需要针对处理的,可以添加fallbackMethod 参数和情况1一样处理掉

情况3:和业务逻辑混一起???混乱

说明:当引发降级处理的时候,也可能是因为服务内部程序发生了错误或调用的服务宕机,这个时候就需要给客户处理的不再是“业务繁忙”而是“内部程序错误”

案列:现在有80服务调用8001端口的业务,但8001端口的服务突然出现宕机;80端口使用feign处理8001端口的调用

@Component
@FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT",
fallback = PaymentFallbackService.class)
public interface PaymentHystrixService
{
    @GetMapping("/payment/hystrix/ok/{id}")
    String paymentInfo_OK(@PathVariable("id") Integer id);
    @GetMapping("/payment/hystrix/timeout/{id}")
    String paymentInfo_TimeOut(@PathVariable("id") Integer id);
}

@FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT",

fallback = PaymentFallbackService.class)

value:是8001端口的服务名称

fallback :是该接口的实现类,也就是在80端口调用8001端口服务发生错误的时候需要进行的方法

@Component //必须加 //必须加 //必须加
public class PaymentFallbackService implements PaymentHystrixService
{
    @Override
    public String paymentInfo_OK(Integer id) {
        return "服务调用失败,提示来自:cloud-consumer-feign-order80";
    }
    @Override
    public String paymentInfo_TimeOut(Integer id) {
        return "服务调用失败,提示来自:cloud-consumer-feign-order80";
    }
}

补充 :

说明:现在有80端口控制类调用了8001端口业务处理类,但在8001端口这个服务也设置了服务降级,假设为5s超时处理,而80这边设置的服务降级为3s超时处理,现在业务响如果超过了3s,那么应该响应的是80端口这边的服务降级处理

到此这篇关于hystrix服务降级方法使用介绍的文章就介绍到这了,更多相关hystrix服务降级内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: hystrix服务降级方法使用介绍

本文链接: https://www.lsjlt.com/news/166609.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • hystrix服务降级方法使用介绍
    当一个服务端的业务响应的时间过长的时候或者业务处理逻辑处理异常,不应该等待,应该给出一种处理方法 超时导致服务器变慢(转圈) --->超时不再等待 出错(宕机或程序运行出错) ...
    99+
    2024-04-02
  • SpringCloud hystrix断路器与局部降级全面介绍
    目录服务降级一、Hystrix的服务使用前的问题1、ProductController 中方法异常和超时2、访问查看效果3、问题分析二、 商品服务 Hystrix的 局部降级1、降级...
    99+
    2022-11-13
    SpringCloud hystrix断路器 SpringCloud hystrix服务降级
  • SpringCloud降级规则使用介绍
    目录官网基本介绍降级策略实战异常比例异常数官网 https://github.com/alibaba/Sentinel/wiki/%E7%86%94%E6%96%AD%E9%99%8...
    99+
    2024-04-02
  • SpringCloudhystrix服务降级概念介绍
    目录Hystrix初识HystrixHystrix三大概念服务降级(fallback)fallback是什么服务提供方实现服务降级服务调用方实现服务降级服务降级优化服务熔断(brea...
    99+
    2024-04-02
  • Spring Cloud中Hystrix服务降级与异常处理的方法是什么
    本篇内容主要讲解“Spring Cloud中Hystrix服务降级与异常处理的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud中Hystrix服务降级与异常处理的...
    99+
    2023-06-19
  • JavaScriptreduce方法使用方法介绍
    目录1. reduce方法的使用2. reduce数组的使用场景2.1 扁平化数组2.2 数组去重2.3 计算数组最大/最小值2.4 数组求和2.5 计算数组中元素的出现次数3. 操...
    99+
    2022-11-13
    JavaScript reduce JS reduce
  • String.format()方法的使用介绍
    String.format() 方法中的 % 符号用作占位符,用于将值插入字符串中。它用于使用特定值(例如整数、浮点数或字符串)格式化字符串。% 符号后面跟着一个字母,指定要插入的值的类型,例如 %d 表示整数,%s 表示字符串。要插入的...
    99+
    2023-09-07
    java 开发语言 spring servlet
  • mysqldump的使用方法介绍
    这篇文章主要介绍了mysqldump的使用方法介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1、说明mysqldump在库被删除的情况下,无法直接从文件恢复,需要手动新建同名库,才能从文件恢复数据。2、语法shell...
    99+
    2023-06-15
  • AndroidLeakCanary的使用方法介绍
    目录1.LeakCanary 如何自动初始化2.LeakCanary如何检测内存泄漏2.1LeakCanary初始化时做了什么2.2LeakCanary如何触发检测2.3LeakCa...
    99+
    2024-04-02
  • Kotlin ContentProvider使用方法介绍
    目录1、注册ContentProvider2、内容URI内容URI的标准格式通配符3、创建自己的ContentProvider4、访问其他程序中的数据1、注册ContentProvi...
    99+
    2024-04-02
  • k8sseries初级calico使用介绍
    目录calico简介calico是什么calico优点calico安装calico组件calico简介 calico是什么 Calico 是一个开源网络和网络安全解决方案,适用于容...
    99+
    2024-04-02
  • ReactHooks使用方法全方位介绍
    目录hooks介绍useState(保存组件状态)useEffect()useCallback(记忆函数)useMemo(记忆组件)useRef(保存引用值)useReducerus...
    99+
    2023-03-19
    React Hooks React Hooks方法
  • Win8.1 Update1更新升级方法介绍
    根据最新获悉的确切消息,Win8.1即将迎来一次“Update 1”更新升级,简单地说这相当于一个增强版的SP,包含了此前发布的所有更新补丁,还会加入一些新的功能特性,比如新型开始菜单,个人觉得还...
    99+
    2023-06-03
    Win8.1 Update1 更新升级 更新 升级 方法
  • pythonos.path模块使用方法介绍
    os.path模块是os模块根据系统类型从另一个模块导入的,并非由os模块实现 1、os.path.abspath(相对路径)-----返回对应路径的绝对路径 os.path.abs...
    99+
    2024-04-02
  • fastjson 使用方法详细介绍
    Fastjson介绍Fastjson是一个Java语言编写的JSON处理器。遵循http://json.org标准,为其官方网站收录的参考实现之一。功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、M...
    99+
    2023-05-30
    fastjson 使用
  • pythonos模块使用方法介绍
    os(operating system)模块是python中操作文件系统的模块,它是Python程序与操作系统进行交互的接口 os模块常用方法 1、os.chdir(path)修改当...
    99+
    2024-04-02
  • Androidshape标签使用方法介绍
    目录shape标签基本使用语法Shape标签生成GradientDrawable对象GradientDrawable获取shape子标签属性GradientDrawable进行sha...
    99+
    2024-04-02
  • GoLangcontext包的使用方法介绍
    目录背景简介主要方法获得顶级上下文当前协程上下文的操作创建下级协程的Context场景示例背景 在父子协程协作过程中, 父协程需要给子协程传递信息, 子协程依据父协程传递的信息来决定...
    99+
    2023-03-15
    Go context Go context包 GoLang context
  • HTML5标签使用方法介绍
    这篇文章主要讲解了“HTML5标签使用方法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5标签使用方法介绍”吧!HTML 5 是一个新的网络标准...
    99+
    2024-04-02
  • pythonsys模块使用方法介绍
    Python中的sys模块主要用于程序与解释器的交互,提供一系列函数和变量来处理Python运行环境 1、sys.api_version -----获取当前python内部版本号 i...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作