Spring Cloud使用指南-Hystrix

服务容错-hystrix

Hystrix也是netflix家的产品、在与Feign整合Ribbon整合上有着天然的优势、所以本次会在上次整合Feign的基础上再次加以改进。

目录

1、Hystrix概述
2、服务降级
3、服务熔断
4、dashboard服务监控

1、Hystrix概述

Hystrix值得说道的主要有服务降级、服务熔断和服务限流、这里先讲降级和熔断。
Hystrix是提高系统服务容错性的东东、说白了就是抗风险抗异常能力、是电路中的保险丝、但他比保险丝更智能的一点是、Hystrix保障的服务如果发生服务熔断了、还会看情形试图自动恢复服务功能。

2、服务降级

服务熔断主要有三种方法配置。一般在消费模块配置。
第一是在消费者Controller方式实现上标注@HystrixCommand并指定异常通知方法、当该方法发生了异常时、将会执行指定的异常通知方法。
第二是在消费者Controller类上标注@DefaultProperties注解并指定全局的异常通知方法。
第三是单独编写一个Callback类、实现某个具体接口、来定制该接口的异常通知、因为我们做了Feign接口抽取、所以我们在接口模块配置。
第四是单独写一个FallbackFactory的实现类、泛型限定一个接口、然后重写其create方法、在实现内可以打印异常信息和指定每个方法的异常通知、较callback类灵活、推荐使用

最后、这些编写的额外类都需要注入到IOC容器内才可使用、同时在YML文件内开启对hystrix的支持:

feign:
  hystrix:
    enabled: true   #本模块要处理服务容错就开启

然后在启动类上配置@EnableHystrix

3、服务熔断

服务熔断配置在服务提供模块、当满足服务熔断配置要求后、后续的请求会直接调用服务降级指定的异常通知、当Hystrix判定可以继续提供服务时、才会重新放开请求、运行服务。

3.1、方法内配置

该配置可以配到服务提供模块的Controllr层、如果没有指定异常通知、将会调用callback指定的方法。

    //服务熔断
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),  //是否开启断路器
            @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "5"),   //请求次数
            @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),  //时间范围
            @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"), //失败率达到多少后跳闸
    })

4、dashboard服务监控

dashboard是hystrix集成的一个监控模块、可以监控模块服务的访问情况等很多信息、来调试和优化服务架构。
这里需要一个单独的模块cloud-hystrix-dashboard-9001为例

4.1、POM文件

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
4.2、YML文件
spring.application.name=hystrix-dashboard-9001
server.port=9001
4.3、启动类
@SpringBootApplication
@EnableHystrixDashboard
4.4、被监控模块

这样一个监控模块就搭建成功了、但是还需要被监控模块的配合、
这里被监控模块一般是服务提供模块、该模块需要满足2个条件、1是引入如下依赖

`<dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
   </dependency>`
 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2是在启动类上新增`@EnableHystrix 注解、同时在YML上

#hystrix监控配置
management:
  endpoints:
    web:
      exposure:
        include: "*"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值