Spring Cloud简介-Hystrix熔断机制和服务降级(5)

1.为什么会出现熔断?

这里有个名词叫雪崩效应,起源于密码学中,意思是任何一个明文的变化将引起密文的全部变化,也就是类似于雪崩,雪崩前很平静,一个点变化全部崩塌。在微服务当中,如果一个服务器在高并发的场景下即大量请求的情况下,就会出现阻塞,从而导致整个服务器不能提供服务的情况称为服务雪崩。

2.如何解决这种服务雪崩?

熔断机制是一种有效的解决方案,即指定时间窗口的请求失败率达到设定阈值时,系统通过熔断器直接断开请求,通常分两种类型:预熔断、即时熔断。Hytrix是熔断的一种实现方式,Hytrix跟Feigh本身没啥关系。

3.服务降级

服务降级是一种增强用户体验的方式,即发生问题时,不是直接抛出一些用户看不懂的东西,而是用户可接受的一种方式。一般来说,发生熔断必定会发生服务降级,但降级未必时发生了熔断。服务降级两种方式:

  • fallbackMethod服务降级:针对单个方法的降级处理
  • fallbackFactory服务降级:针对一个类的降级处理

4.fallbackMethod案例

1)添加依赖

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

2)controller中方法使用

@HystrixCommand(fallbackMethod = "getHyHandle")
@GetMapping("/get/{id}")
public Depart getHandle(@PathVariable("id") int id) {
  return service.getDepartById(id);
}

/**
 * 降级处理方法
*/
public Depart getHyHandle(@PathVariable("id") int id){
   Depart d=new Depart();
   d.setName("服务拥堵,请稍后");
   d.setId(id);
   return d;
}

3)启动类中开启熔断

//开启feign客户端指定接口所在包
//@EnableCircuitBreaker
@EnableFeignClients(basePackages = "com.test.zzy.service")
@SpringCloudApplication//包含@SpringBootApplication  @EnableCircuitBreaker
public class Application {

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

}

4)启动feign中熔断配置可用

5)启动eureka和两个提供者服务和消费者服务

上一节介绍Ribbon已建好得两个提供者,当前消费者及eureka

访问时每次会切换到不通得提供者上,当关掉一个提供者得时候,访问会出现如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

意向天开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值