• 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注解

    记得快乐
  • 相关阅读:
    测试Hibernate的DAO方法
    MyBatis 一对一关系映射
    MyBatis 实现基本CRUD操作
    配置日志框架——Log4j
    MyBatis 基础配置
    Hibernate与 MyBatis的比较
    关于用JSON拼凑出来的DOM对象的操作以及EasyUI的提交方式
    Struts2 单例与多例
    SpringMVC rest风格的url
    SpringMVC 控制器之对ServletAPI的支持与对JSON的支持
  • 原文地址:https://www.cnblogs.com/Y-wee/p/14130693.html
Copyright © 2020-2023  润新知