java springcloud版b2b2c社交电商spring cloud分布式微服务 (四) 断路器(Hystrix)

一、断路器简介

Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六。Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合。 在微服务架构中,一个请求需要调用多个服务是非常常见的,java spring cloud版b2b2c社交电商spring cloud分布式微服务如下图:

image.png

较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开。

image.png

断路打开后,可用避免连锁故障,fallback方法可以直接返回一个固定值。

二、准备工作
这篇文章基于上一篇文章的工程,首先启动上一篇文章的工程,启动eureka-server 工程;启动service-hi工程,它的端口为8762。

三、在ribbon使用断路器
改造serice-ribbon 工程的代码,首先在pox.xml文件中加入spring-cloud-starter-hystrix的起步依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

在程序的启动类ServiceRibbonApplication 加@EnableHystrix注解开启Hystrix:

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
public class ServiceRibbonApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ServiceRibbonApplication.class, args);
    }
 
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
 
}

改造HelloService类,在hiService方法上加上@HystrixCommand注解。该注解对该方法创建了熔断器的功能,并指定了fallbackMethod熔断方法,熔断方法直接返回了一个字符串,字符串为”hi,”+name+”,sorry,error!”,代码如下:

@Service
public class HelloService {
 
    @Autowired
    RestTemplate restTemplate;
 
    @HystrixCommand(fallbackMethod = "hiError")
    public String hiService(String name) {
        return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);
    }
 
    public String hiError(String name) {
        return "hi,"+name+",sorry,error!";
    }
}

启动:service-ribbon 工程,当我们访问http://localhost:8764/hi?name=forezp,浏览器显示:

hi forezp,i am from port:8762

此时关闭 service-hi 工程,当我们再访问http://localhost:8764/hi?name=forezp,浏览器会显示:

hi ,forezp,orry,error!

这就说明当 service-hi 工程不可用的时候,service-ribbon调用 service-hi的API接口时,会执行快速失败,直接返回一组字符串,而不是等待响应超时,这很好的控制了容器的线程阻塞。Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 在前两篇《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》和《Spring ...
    程序猿DD阅读 4,949评论 0 4
  • 碧柔防晒蝉联多年Cosme大赏冠军,安耐晒的平价替代。这款是纯化学的防晒霜,防晒指数SPF50+ PA++++,阻...
    刘小胖吃货阅读 2,994评论 0 0
  • 唐都冷雨夜 觉者忆悠长 清明墓未扫 逝人莫忧伤 吾坐幽幽山 思心从未减 苍天照我身 大地证我意
    将觉者阅读 1,661评论 1 8
  • 猎场看到第二十集,才感觉这个剧有点意思了。没有怎么关注剧透。熊青春的出现,胡歌的一路逆袭,罗伊人靠山的倒...
    Maxwellhang阅读 2,990评论 1 0
  • 而我因为受道了陨石的冲击力,头撞道了门上昏迷了过去,当我醒来的时候已经在医院的病床上了,头上绑着厚厚的绷带,让我原...
    腹黑腹肌阅读 1,301评论 0 0

友情链接更多精彩内容