Hystrix学习


Spring Cloud Hystrix

在说hystrix之前先要了解什么是服务雪崩
本质:线程没有及时回收
不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩
雪崩的两种解决方法:
1.修改调用的超时时长(简单 但是不够灵活)
2.设置拦截器


提示:以下是本篇文章正文内容,下面案例可供参考

一、Spring Cloud Hystrix是什么?

熔断器,也叫断路器!用来保护微服务不雪崩的方法。能够阻止分布式系统中出现联动故障。
Hystrix 是通过隔离服务的访问点阻止联动故障的,并提供了故障的解决方案,从而提高了整个分布式系统的弹性。

二、使用步骤

1.在OpenFeign中使用Hystrix

1. 引入依赖

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

application.yml文件的配置

server:
  port: 8081 #端口号
spring:
  application:
    name: product-service #当前消费者的名称
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka  #eureka服务地址
feign:
  hystrix:
    enabled: true #开启熔断 一定要注意开启

2. Application上加注解
熔断是由消费者远程调用生产者的方法时开启的拦截器
故,@EnableHystrix注解加在消费者上
在这里插入图片描述
3. 写实现类
在这里插入图片描述
在这里插入图片描述

2.在Ribbon中使用Hystrix

启动eureka-server
启动provider-order-service
修改consumer-user-service

  1. 添加Hystrix的依赖,ribbon没有集成hystrix
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
  1. 修改启动类(同上)

  2. 修改controller

/**
 * 用户下单方法  ribbon的熔断
 *
 * @return
 * @HystrixCommand(fallbackMethod = "ribbonHystrix")
 * 指定熔断的方法
 */
@GetMapping("userDoOrderRibbon")
@HystrixCommand(fallbackMethod = "ribbonHystrix")
public String testRibbonHystrix(String serviceId) {
    String result = restTemplate.getForObject("http:" + serviceId + "/doOrder", String.class);
    System.out.println(result);
    return "成功";
}

//方法签名要和原来的方法一致
public String ribbonHystrix(String serviceId) {
    return "我是ribbon的备选方案";
}

2.熔断器(断路器说明)

  1. 熔断器的设计
    当一个时间窗口内,失败次数达到阈值,熔断器开启2.

2. 熔断器的状态说明及状态改变
关:服务正常调用 A------> B
开:在一段时间内,调用失败次数达到阈值(例如:5s内失败3次直接return
半开:断路器打开后,过一段时间,让少许流量尝试调用B服务,如果成功则断路器关闭,使服务正常调用,如果失败,则继续半开 (随机数)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值