Spring Cloud系列三 之 Hystrix断路器

举报
西魏陶渊明 发表于 2022/09/25 04:23:19 2022/09/25
【摘要】 声明本篇文章部分内容参考自 程序猿DD Spring Cloud系列书籍 断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚...

声明本篇文章部分内容参考自 程序猿DD Spring Cloud系列书籍


u=3823523995,2168010791&fm=23&gp=0.jpg

断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器”本身是一种开关装置,用于在电路上保护线路过载,当线路中有电器发生短路时,“断路器”能够及时的切断故障电路,防止发生过载、发热、甚至起火等严重后果。

在分布式架构中,断路器模式的作用就像是生活中家庭用电,一旦发生短路,就立马断电,不让灾难蔓延。

Netflix Hystrix

在Spring Cloud中使用了Hystrix 来实现断路器的功能。Hystrix是Netflix开源的微服务框架套件之一,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能。

在Spring Cloud中使用Hystrix组件,是非常容易的,只需要两个注解

  • 准备工作

首先启动(eureka-server)服务注册中心,两个Service服务

  • 添加Hystrix断路器组件

只需要引入Hystrix依赖,在Ribbon负载均衡应用启动类添加@EnableCircuitBreaker


  
  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. @EnableCircuitBreaker
  4. public class RibbonApplication {
  5. @Bean
  6. @LoadBalanced
  7. RestTemplate restTemplate() {
  8. return new RestTemplate();
  9. }
  10. public static void main(String[] args) {
  11. SpringApplication.run(RibbonApplication.class, args);
  12. }
  13. }

改造原来的服务消费方式,新增ComputeService类,在使用ribbon消费服务的函数上增加@HystrixCommand注解来指定回调方法。


  
  1. @Service
  2. public class ComputeService {
  3. @Autowired
  4. RestTemplate restTemplate;
  5. @HystrixCommand(fallbackMethod = "addServiceFallback")//回调方法
  6. public String addService() {
  7. return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
  8. }
  9. public String addServiceFallback() { //回调方法
  10. return "error";
  11. }
  12. }

本文标题:Dekel Tankel 谈 Cloud Foundry 与 Spring 前景
本文地址:https://www.oschina.net/news/68979/cloudfundry-meetup

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/102425295

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。