08 Hystrix学习

Hystrix解决的问题

在复杂的分布式系统中,存在多个服务相互依赖的情况,如果某个服务因为某些原因不可用,例如机房的不可靠性、网络服务商的不可靠性等,系统对外界提供的整个功能都将不可用。

 

在高并发的情况下,单个服务的延迟会导致整个请求都处于延迟状态,可能在几秒内就使得整个服务处于线程负载饱和的状态;

 

雪崩效应:某个服务的单点故障,导致用户的请求处于阻塞状态,最终结果是整个服务的线程资源消耗殆尽。由于服务的依赖性,会导致依赖于该故障服务的其他服务也处于线程阻塞状态,最终导致这些服务的线程资源消耗,服务不可用,从而导致整个微服务系统都不可用。

 

 

Hystrix的设计原则

  1. 防止单个服务的故障耗尽整个服务的Servlet容器的线程资源;
  2. 快速失败机制;
  3. 提供回退方案;
  4. 使用熔断机制,防止故障扩散到其他服务;
  5. 提供熔断器的监控组件HyStrix Dashboard,实时监控熔断器的状态

 

服务集成hystrix

添加jar包依赖

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

启动类添加注解@EnableHystrix 开启熔断器功能
如果已经集成feign的话,只需要配置接口实现类和绑定fallback操作

如果集成的是ribbon,则需要在方法上注解@HystrixCommand并指定fallback方法

集成hystrix dashboard

熔断器监控使用hystrix dashboar监控

添加jar包依赖

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-actuator</artifactId>

  </dependency>

  <dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>

  </dependency>
启动类添加注解@EnableHystrixDashboard

通过http://localhost:8764/hystrix进行访问

集成turbine

每个服务都集成Hystrix DashBoard不利于统一管理,使用turbine收集信息能够更好的管理服务的熔断器

 

引入jar包依赖

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-turbine</artifactId>

  </dependency>
<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-hystrix</artifactId>

  </dependency>

 

启动类添加注解@EnableTurbine

配置监控内容

08 Hystrix学习

动服务后访问任意服务的hystrix dashboard 监控turbine.stream流

08 Hystrix学习

 

《深入理解ng cloud与微服务构建》

 

上一篇:Springboot mybatis 环境搭建


下一篇:Spring Boot 多模块项目创建与配置 (转)