大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
1. 熔断机制介绍
在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进。但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成。这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。
熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。
2、实战
1. 在maven工程(前面章节中介绍的Ribbon或者Feign工程)的pom.xml中添加hystrix库支持断路器
org.springframework.cloud
spring-cloud-starter-hystrix
2.在Ribbon应用中使用断路器
在Spring Boot启动类上添加@EnableCircuitBreaker注解
1 @SpringBootApplication
2 @EnableDiscoveryClient
3 @EnableCircuitBreaker
4 public class ServiceRibbonApplication {
5
6 public static void main(String[] args) {
7 SpringApplication.run(ServiceRibbonApplication.class, args);
8 }
。。。 。。。
3、 在Feign应用中使用断路器
1). Feign内部已经支持了断路器,所以不需要想Ribbon方式一样,在Spring Boot启动类上加额外注解
2). 用@FeignClient注解添加fallback类, 该类必须实现@FeignClient修饰的接口。
1 @FeignClient(name = “SERVICE-HELLOWORLD”, fallback = HelloWorldServiceFailure.class)
2 public interface HelloWorldService {
3 @RequestMapping(value = “/”, method = RequestMethod.GET)
4 public String sayHello();
5 }
3). 创建HelloWorldServiceFailure类, 必须实现被@FeignClient修饰的HelloWorldService接口。注意添加@Component或者@Service注解,在Spring容器中生成一个Bean
1 @Component
2 public class HelloWorldServiceFailure implements HelloWorldService {
3 @Override
4 public String sayHello() {
5 System.out.println(“hello world service is not available !”);
6 return “hello world service is not available !”;
7 }
8 }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/231721.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...