java熔断机制 breaker_Spring Cloud熔断机制 -- 断路器
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 }
java熔断机制 breaker_Spring Cloud熔断机制 -- 断路器相关推荐
- SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理...
2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理 一.大致 ...
- java服务降级与服务熔断区别_【原创】谈谈服务雪崩、降级与熔断
引言 首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文.当然,考虑到目前大多微服务的文章都是口水文,烟哥争取将实现方式讲透,点清楚,让大家有所收获! OK,我要先说明 ...
- java服务降级与服务熔断区别_服务降级和服务熔断
服务熔断 在微服务架构中,微服务之间的数据交互通过远程调用完成,微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,此时如果链路上某个微服务的调用响应时间过长或者不可用,那么对微服务 ...
- 【Java】反射( reflection)机制 详解
目录 1. 定义 2. 用途(了解即可) 3. 反射的基本信息 4. 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.2 Class类中的相关方法(方法的使用方法在后边的示例当中) ...
- java异常详细讲解_Java异常处理机制的详细讲解和使用技巧
一起学习 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 1.2 ...
- Java基础知识——类装载器与反射机制
类装载器ClassLoader 类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件. 类装载器把一个类装入JVM中,要经过三步: 1.装载:查找和导入Class文件: 2.链接:执行 ...
- 完成这个例子,说出java中针对异常的处理机制。
有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常.在客户端有一个类为TestC,有一个方 ...
- 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )
文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...
- 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )
文章目录 前言 一.线程池示例 二.newCachedThreadPool 线程池示例 三.newFixedThreadPool 线程池示例 三.newSingleThreadExecutor 线程池 ...
最新文章
- MySql忘记密码了咋办
- 什么是Python?主要运用哪些方面?
- C++实现字符串数组作为函数的参数的反序输出
- 和nptf螺纹一样吗_摩托车火花塞长短不同,对发动机有影响吗?
- vb编程软件_原创经验,如何安装vb编程软件
- 在二维数组中查找一个数
- js vue中得延时器_Vue.js实现时分秒倒计时
- 脚本在流程中的性能影响
- 菜单 java_java 菜单
- 教你玩转CSS Float(浮动)
- 香港计算机mphil申请成功案例,香港稀有CS MPhil录取:申请也有起死回生的惊喜...
- 二十四节气之大雪|PNG免扣素材,设计好素材
- 一些常用算法 练手的的代码
- putty的窗口关闭相关的可能需要注意的细节
- JavaScript return的作用
- POJ 3617 Best Cow Line
- PE+Dism++组合实现操作系统的备份恢复给力。
- 人脸检测MTCNN和人脸识别Facenet(附源码)
- android圆角glide,使用Glide加载圆角矩形图片、圆形图片
- 一文理解 JWT、JWS、JWE、JWA、JWK、JOSE