首先,清楚两个概念
即什么是服务熔断, 什么是服务降级
服务熔断:
图中,有大量的客户请求请求a服务,同时a服务需要调用b服务,b服务又同时调用了c和d服务, 这种情况叫做扇出, 那么现在, 假设c服务 相应时间过久或者根本不可用了, 大量的客户请求还继续去请求a服务, 导致大量的服务器资源都被这部分服务所抢占, 可能还会危其他服务的运行, 轻者可能是导致其他服务也出现问题, 重则可能导致整个系统面临崩盘,也就是服务雪崩, 几乎所有的服务都变得不可用了, 这是最惨的情况.
那么, 为了防止这种情况的发生, 我们介入Hystrix的服务熔断机制, 可以理解为保险丝, 一旦这个电路网络出错, 那么我们就将出错的那个点下线, 同时给其上级的调用者返回一个备用的处理, 从而让继续进来的请求不至于全部卡死, 导致服务器资源紧张.
那么我们开始配置服务熔断.
首先给一个微服务提供者添加pom依赖:
<!-- 导入hystrix依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
然后为其Controller添加@HystrixCommand注解以便当服务不可用时去运行备选方案
实例:
package com.bai.springcloud.controller;
import com.bai.springcloud.pojo.Dept;
import com.bai.springcloud.service.DeptService;
import com.netflix.hystrix.contrib