Hystrix服务熔断和Hystrix Dashboard仪表盘

本文详细介绍了如何在SpringCloud中使用Ribbon+Hystrix和Feign+Hystrix实现服务熔断,以提高微服务系统的稳定性和用户体验。通过添加相关依赖、启用熔断器和定义回退方法,当服务调用失败时,系统能够返回默认响应,避免服务雪崩。此外,还展示了如何利用Hystrix Dashboard进行实时监控。
摘要由CSDN通过智能技术生成

SpringCloud入门案例(Eureak,Ribbon,Feign)-使用教程
本篇博客项目基于上面博客搭建的项目,后面我会免费上传的。
对于微服务,来说,就是调用各种我们划分的服务,但如果有的服务没有运行起来,有的服务因为网络问题超时了,此时如果我们某个服务调用这些无法调用的服务时,会出现报错,会出现页面无法访问等等,这些我们是不希望看到的,因为这样体验不好,使用如果有一种手段可以当我们调用服务失败的时候,自动让服务返回一个默认的我们自己定义的本地方法来给用户展示,这样会好很多,所以也就是我们需要学习的服务熔断。我们之前的博客介绍了两种SpringColud的远程调用技术,使用使用服务熔断也有两种组合。

Ribbon+Hystrix的使用

  • 在consumer-user项目中引入依赖:
<!--  引入hystrix进行服务熔断 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>~
  • 在主运行函数上增加注解@EnableCircuitBreaker,开启短路保护功能。
  • 在使用远程访问调用的方法上增加注解@HystrixCommand(fallbackMethod = “buyMovieFallbackMethod”),这里的buyMovieFallbackMethod是我们自定义的一个方法,在控制器中定义即可,这里的方法的参数和返回值类型需要保持一致。
  • 这里当我们调用远程服务获取最新电影时,如果出现无法调用,就执行buyMovieFallbackMethod方法:
public Map buyMovieFallbackMethod(Integer id){
    Map map=new HashMap();
    User user = new User();
    user.setId(-1);
    user.setUserName("未知用户");
    map.put("user",user);
    Movie movie = new Movie();
    movie.setMovieName("未知电影");
    movie.setId(-1);
    map.put("movie", movie);
    return map;
}
  • 当我们运行项目时,就可以实现,当电影的服务停止后,不会出现之前调用不到显示无法访问的页面。

Feign+Hystrix的使用

  • 导入依赖,在项目consumer-user-feign中:
<!--  引入hystrix进行服务熔断 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>~
  • 修改application.yml文件配置,增加:
# 开启Feign的熔断功能
feign:
  hystrix:
    enabled: true
  • 在主方法中增加注解:@EnableCircuitBreaker,开启短路保护。
  • 修改MovieServiceFeign,Feign已经集成了Hystrix,使用起来非常简单@FeignClient(name=“provider-user”,fallback=“异常处理类”)
    在这里插入图片描述
  • 我们直接在接口MovieServiceFeign同包下新建一个异常处理类,这里是MovieFeignExceptionHandlerService类,这里需要使用@Compont注解
@Component
public class MovieFeignExceptionHandlerService implements MovieServiceFeign {
    @Override
    public Movie getNewMovie() {
        Movie movie = new Movie();
        movie.setId(-100);
        movie.setMovieName("无此电影呀...");
        return movie;
    }
}

Hystrix Dashhboard仪表盘

除了隔离依赖服务的调用以外,Hystrix还提供了近实时的监控Hystrix会实时、累加地记录所有关于HystrixCommand的执行信息,包括每秒执行多少请求,多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控

  • 我们在使用Feign的远程调用访问的项目中使用仪表盘
  • 增加依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
  • 修改application.yml配置,暴露数据监控流:
management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream #访问/actuator/hystrix.stream能看到不断更新的监控流~
  • 开启可视化监控功能,在主函数上增加注解:@EnableHystrixDashboard
    在这里插入图片描述
  • 访问http://localhost:7000/hystrix,出现如下界面:
    在这里插入图片描述
  • 将Hystrix的stream地址输入http://localhost:7000/actuator/hystrix.stream点击monitor按钮即可监控
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值