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熔断机制 -- 断路器相关推荐

  1. SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理...

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理 一.大致 ...

  2. java服务降级与服务熔断区别_【原创】谈谈服务雪崩、降级与熔断

    引言 首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文.当然,考虑到目前大多微服务的文章都是口水文,烟哥争取将实现方式讲透,点清楚,让大家有所收获! OK,我要先说明 ...

  3. java服务降级与服务熔断区别_服务降级和服务熔断

    服务熔断 在微服务架构中,微服务之间的数据交互通过远程调用完成,微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,此时如果链路上某个微服务的调用响应时间过长或者不可用,那么对微服务 ...

  4. 【Java】反射( reflection)机制 详解

    目录 1. 定义 2. 用途(了解即可) 3. 反射的基本信息 4. 反射相关的类(重要) 4.1 Class类(反射机制的起源 ) 4.2 Class类中的相关方法(方法的使用方法在后边的示例当中) ...

  5. java异常详细讲解_Java异常处理机制的详细讲解和使用技巧

    一起学习 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 1.2 ...

  6. Java基础知识——类装载器与反射机制

    类装载器ClassLoader 类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件. 类装载器把一个类装入JVM中,要经过三步: 1.装载:查找和导入Class文件: 2.链接:执行 ...

  7. 完成这个例子,说出java中针对异常的处理机制。

    有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常.在客户端有一个类为TestC,有一个方 ...

  8. 【Java 并发编程】线程池机制 ( ThreadPoolExecutor 线程池构造参数分析 | 核心线程数 | 最大线程数 | 非核心线程存活时间 | 任务阻塞队列 )

    文章目录 前言 一.ThreadPoolExecutor 构造参数 二.newCachedThreadPool 参数分析 三.newFixedThreadPool 参数分析 四.newSingleTh ...

  9. 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )

    文章目录 前言 一.线程池示例 二.newCachedThreadPool 线程池示例 三.newFixedThreadPool 线程池示例 三.newSingleThreadExecutor 线程池 ...

最新文章

  1. MySql忘记密码了咋办
  2. 什么是Python?主要运用哪些方面?
  3. C++实现字符串数组作为函数的参数的反序输出
  4. 和nptf螺纹一样吗_摩托车火花塞长短不同,对发动机有影响吗?
  5. vb编程软件_原创经验,如何安装vb编程软件
  6. 在二维数组中查找一个数
  7. js vue中得延时器_Vue.js实现时分秒倒计时
  8. 脚本在流程中的性能影响
  9. 菜单 java_java 菜单
  10. 教你玩转CSS Float(浮动)
  11. 香港计算机mphil申请成功案例,香港稀有CS MPhil录取:申请也有起死回生的惊喜...
  12. 二十四节气之大雪|PNG免扣素材,设计好素材
  13. 一些常用算法 练手的的代码
  14. putty的窗口关闭相关的可能需要注意的细节
  15. JavaScript return的作用
  16. POJ 3617 Best Cow Line
  17. PE+Dism++组合实现操作系统的备份恢复给力。
  18. 人脸检测MTCNN和人脸识别Facenet(附源码)
  19. android圆角glide,使用Glide加载圆角矩形图片、圆形图片
  20. 一文理解 JWT、JWS、JWE、JWA、JWK、JOSE

热门文章

  1. Linux缓冲区溢出攻击详解
  2. SQL的四种匹配模式
  3. 使用file-saver导出文件
  4. Python从入门到实践电子书,python编程入门到实践pdf
  5. Micron将推出OLC NAND,是否沦为只能读取的SSD?
  6. 增加tomcat的性能和稳定性
  7. MBP 常用 命令行
  8. the eleventh hour 最后时刻
  9. iPhone3开发基础教程中部分有用代码片段(1)
  10. HFSS学习笔记 14 边界条件(二)