Hystrix服务熔断手把手搭建RestTemplate方式和Feign方式),同时开启可视化监控Hystrix Dashboard

7 篇文章 0 订阅
6 篇文章 0 订阅

服务熔断(简单描述)

  • 当链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息
  • 画了一个简单图:
  • 在这里插入图片描述
  • 简单来说就是当D服务频繁超时,熔断器会将其短路,快速返回兜底数据,也就是假数据,然后不在访问D这个点;如果不及时短路d点; 很大可能会造成雪崩
  • 同时还有原理:
  • 在这里插入图片描述
  • 我们可以指到熔断器被打开是有一定的阀值的

我们先搭建RestTemplate+Ribbon+Hystrix这种模式

  • 首先 我们得在pom.xml中引入hystrix
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
  • 然后在在需要熔断的服务方法标注注解==@HystrixCommand(fallbackMethod=“xxx”)来指定出错时调用xx方法== 这个注解的意思是当这个服务出错后指定xxx方法
  • 所以在本类编写xxx方法,方法的参数和原来一样即可
  • 在这里插入图片描述
  • 可以看到这个方法返回的就是兜底数据,然后关闭这个服务其中一太,因为Ribbon默认方式为轮询,当轮询到我们关闭的这一台,返回的就是我们这个指定方法返回的兜底数据
  • 简单吧
  • 但是如果我们悄悄在启动回来的画,其实通过轮询的记录,刚启动并不会马上加入进来,过会稳定后就会加入轮询。这就是原理图中半开成功后就会将这个服务的熔断器给关闭,如果开启开始服务频繁超时,就会由熔断器半开状态-》打开状态,也是访问不到;

使用Feign+Ribbon+Hystrix组合 (这种方式使我们的代码看起来优雅好许,推荐)

  • 同样 得引入hystrix服务
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
  • 主程序添加==@EnableCircuitBreaker == 开启短路保护功能,也就是熔断器功能
  • 在application中更改feign.hystrix.enabled:true 这个属性默认是false(关闭了hystrix熔断器)
feign:
  hystrix:
    enabled: true #默认false
  • 此时Feign就已经集成了Hystrix,使用起来非常方便:通过在远程接口类添加==@FeignClient(name=“服务的名称”,fallback=“异常处理类”)==,fallback指定的就是如果远程调用的这个服务出错了需要执行的方法handle;这个注解在使用Feign的时候就用过,等于就是说在我们之前使用的基础上,声明个fallback;同时指定的这个类需要实现这个远程调用的接口;看图吧 通过图能更快明白
  • 在这里插入图片描述
  • 如上图,这个是Feign的远程接口类,接口里面的方法要和远程服务的方法声明是一样的,可以看到我们声明的服务,和fallback:指定了这个接口的异常处理类,现在我们进入这个异常处理类
  • 在这里插入图片描述
  • 可以看到我们也是实现了这个远程接口的方法,不过实现的内容是返回兜底数据,所以这个方法在这个服务超时或者访问不上的时候会被执行
  • 最后测试 和上方式一样的结果,成功

Hystrix Dashboard、开启开启可视化监控

除了隔离依赖服务的调用以外,Hystrix还提供了近实时的监控,Hystrix会实时、累加地记录所有关于HystrixCommand的执行信息,包括每秒执行多少请求,多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控
  • 引入actuator
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 通过actuator 能查看项目的一线相关的健康信息监控服务;之中查看/health是不用配置的其他的好像都是需要相关的配置才能查看
  • 在这里插入图片描述
  • 接下来就是通过修改配置文件,暴露数据监控流
management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream 
  • 现在我们 /actuator/hystrix.stream能看到不断更新的监控流
  • 将这些监控流进行可视化的模块就是HystrixDashboard
  • 引入HystrixDashboard
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
  • 最后一部就是在主程序中添加==@EnableHystrixDashboard==注解;开启可视化监控功能
  • 然后访问当前项目/hystrix
  • 在这里插入图片描述
  • 将Hystrix的stream地址输入(http://localhost:7000/actuator/hystrix.stream ),点击monitor按钮即可监控
  • 在这里插入图片描述
  • 到这里大家就可以自行测试啦,没有视频很难讲清楚,大家注意那些数字的跳动和Circuit的状态

总结可视化可以很方便的让我们知道是否出问题,从而去排除解决

使用Feign的方式使代码更加优雅推荐

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值