springcloud熔断机制
springcloud熔断机制
1、为什么要有熔断机制
由于⽹络原因或者⾃⾝服务的原因,导致服务可能会产⽣故障或者是不可⽤,如果此服务⽣产故障,就会导致请求此服务的线程阻塞,如果涉及⼤量的线程请求阻塞,就进⼀步导致容器产⽣瘫痪,也会导致其它服务不可⽤,就会产⽣“雪崩效应”。因此需要⼀种机制处理,此机制就是“断路器”
2、什么雪崩效应
在微服务架构中,可能因为某⼀个基础服务故障,⽽导致多个服务之间的调⽤,出现阻塞,⽆法调⽤,⼀环扣⼀环,导致所有服务不可⽤,我们称这效应为雪崩效应。
3、什么是熔断
服务熔断就是对该服务的调⽤执⾏熔断,对应后续请求,不在继续调⽤该⽬标服务,⽽是直接返回,从⽽可以快速释放资源,或者服务出现故障,会把故障信息返回给客户端
4、触发熔断的条件
当请求服务失败的次数超过⼀定的⽐例(默认50%),熔断就会⽣效
熔断默认持续时间5秒,5秒之后它就会从(开路状态---》半开路状态)
处于半开路状态,判断下⼀次请求,是否成功,如果成功,则切回到闭路状态
5、降级服务
当熔断机制启动,此服务不可⽤,直接返回失败,它会有⼀个响应机制处理:调⽤降级服务的响应⽅法实现
6、熔断降级实现
熔断降级机制作⽤在客户端,在服务消费端实现
springcloud怎么读音6.1、导⼊依赖
<!--⽀持hystrix组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
6.2、定义应急⽅法
业务层使⽤feign实现,不⽤写实现类,所以应急⽅法在控制器指定;如果使⽤RestTemplate实现,应急⽅法在业务层实现类指定
package ller;
import ib.javanica.annotation.HystrixCommand;
import comflix.urrency.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(){
stHyStrix01();
}
String testHyStrix01FallBack(){
return "请求服务不可⽤了,不要再来了";
}
}
配置了熔断降级启动类上要添加@EnableHystrix注解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论