zoukankan      html  css  js  c++  java
  • springcloud熔断机制

    springcloud熔断机制

    1、为什么要有熔断机制

    由于网络原因或者自身服务的原因,导致服务可能会产生故障或者是不可用,如果此服务生产故障,就会导致请求此服务的线程阻塞,如果涉及大量的线程请求阻塞,就进一步导致容器产生瘫痪,也会导致其它服务不可用,就会产生“雪崩效应”。因此需要一种机制处理,此机制就是“断路器”

    2、什么雪崩效应

    在微服务架构中,可能因为某一个基础服务故障,而导致多个服务之间的调用,出现阻塞,无法调用,一环扣一环,导致所有服务不可用,我们称这效应为雪崩效应。

    3、什么是熔断

    服务熔断就是对该服务的调用执行熔断,对应后续请求,不在继续调用该目标服务,而是直接返回,从而可以快速释放资源,或者服务出现故障,会把故障信息返回给客户端

    4、触发熔断的条件

    • 当请求服务失败的次数超过一定的比例(默认50%),熔断就会生效
    • 熔断默认持续时间5秒,5秒之后它就会从(开路状态---》半开路状态)
    • 处于半开路状态,判断下一次请求,是否成功,如果成功,则切回到闭路状态

    5、降级服务

    当熔断机制启动,此服务不可用,直接返回失败,它会有一个响应机制处理:调用降级服务的响应方法实现

    6、熔断降级实现

    熔断降级机制作用在客户端,在服务消费端实现

    6.1、导入依赖

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

    6.2、定义应急方法

    业务层使用feign实现,不用写实现类,所以应急方法在控制器指定;如果使用RestTemplate实现,应急方法在业务层实现类指定

    package com.yl.controller;
    
    import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
    import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext;
    import com.yl.bean.User;
    import com.yl.service.IUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class UserController {
        @Autowired
        private IUserService userService;
    
        @RequestMapping("/testHyStrix01")
        @HystrixCommand(fallbackMethod = "testHyStrix01FallBack")//指定应急方法
        public String testHyStrix01(){
            return userService.testHyStrix01();
        }
    
        String testHyStrix01FallBack(){
            return "请求服务不可用了,不要再来了";
        }
    
    }
    

    配置了熔断降级启动类上要添加@EnableHystrix注解

    记得快乐
  • 相关阅读:
    CodeForces 347B Fixed Points (水题)
    CodeForces 347A Difference Row (水题)
    CodeForces 346A Alice and Bob (数学最大公约数)
    CodeForces 474C Captain Marmot (数学,旋转,暴力)
    CodeForces 474B Worms (水题,二分)
    CodeForces 474A Keyboard (水题)
    压力测试学习(一)
    算法学习(一)五个常用算法概念了解
    C#语言规范
    异常System.Threading.Thread.AbortInternal
  • 原文地址:https://www.cnblogs.com/Y-wee/p/14130693.html
Copyright © 2011-2022 走看看