Hystrix组件

Hystrix是什么

Hystrix是SpringCloud内置提供的熔断组件。熔断机制主要用于程序的容错处理,让程序在出现异常时,不用出现雪崩的状态。

Hystrix工作流程图


如图所示,分布式程序中。如果发现某个服务调用失败,不是雪崩,而是返回熔断处理结果。
当浏览器访问服务b时,服务b已经宕机了,就是机器死掉了,在他死掉后,如果没有做处理,则浏览器会报异常,现在熔断组件是这样,浏览器发现访问的服务调不起来,就返回fallback处理的情况,这样做,就不会报错。 保证服务死掉,程序还能正常运行。

入门配置

说明

需求:对调用方出现,远程调用异常,返回容错数据。

分两部分完成该示例:

第一部分:复制《Gateway示例》创建项目(不一定需要gateway项目)
第二部分:修改调用方(客户端)实例支持Hystrix机制。

第一部分:修改Gateway示例代码

将Gateway示例复制,创建一个新项目

第二部分:修改调用方(客户端)

第一步:加入依赖

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

第二步:修改入口类

注意事项:@SpringCloudApplication注解等同同时加上@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker这三个注解的功能。详情可以查看@SpringCloudApplication的声明代码理解
//@SpringBootApplication
//@EnableDiscoveryClient //启动发现服务支持
//@EnableCircuitBreaker //启动Hystrix支持,必须包含该注解
@EnableFeignClients //启动Feign支持
@SpringCloudApplication //一个注解等同注释的三个注解
public class InstanceClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(InstanceClientApplication.class, args);
    }
}

第三步:修改配置文件

--必须打开Feign支持Hysterix组件
##端口
server:
  port: 8081
##应用名
spring:
  application:
    name: instance-client
##启动Feign支持熔断
feign:
  hystrix:
    enabled: true
##Eureka注册中心
eureka:
  client:
    service-url:
      defaultZone: http://localhost:5121/eureka
##日志支持
logging:
  level:
    org.zhu.instance.client: debug

第四步:增加熔断处理类

@Component
@Slf4j
public class UserServiceApiFallback implements UserSeviceApi {
    @Override
    public String findUsernameById(Long id) {
        log.debug("-调用远程方法findUsernameById失败");
        return "Error username";
    }
}

第五步:修改远程调用接口

@FeignClient(value = "instance-server",fallback= UserServiceApiFallback.class)
public interface UserSeviceApi {

    @GetMapping(value = "/findUsernameById/{id}")
    String findUsernameById(@PathVariable Long id);
}

第六步:测试

分别启动Eureka注册中心、Getaway网关、调用方实例以及不启动服务方实例。 使用postman发送调用方请求,查看当调用方无法连接服务方时的情况。

--我们发现,果然如果服务方法不同,程序会返回处理结果

仪器表显示

需求:我们通过一个网页的方式显示Hystrix的错误情况。如何实现?
答:Hystrix提供一个仪器表的功能,用于显示实时错误。

注意:以下都是在client(客户端)模块中操作

第一步:导入包

<!--spring cloud实时数据监控组件-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

第二步:配置支持仪器表

@SpringCloudApplication //该注解包括了,上面注释的三个注解。
@EnableFeignClients
@EnableHystrixDashboard //启动熔断仪器表
public class InstanceClientApplication {

//配置仪器表的监控路径
    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }

    public static void main(String[] args) {
        SpringApplication.run(InstanceClientApplication.class, args);
    }
}

第三步:测试显示

--在浏览器输入:http://localhost:8081/client/hystrix 该uri的client是网关的前缀。请注意。
当不启动网关模块时,uri: http://localhost:8081/hystrix

--在第一个输入框输入监控路径:http://localhost:8081/client/hystrix.stream

--查看结果

第四步:通过Postman发送请求

通过Postman发送请求,查看对应方法的请求查看数据 --postman发送数据

--查看数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值