1、雪崩效应
2.服务雪崩的原因
(1)某几个机器故障:例如机器的硬驱动引起的错误,或者一些特定的机器上出现一些的bug(如,内存中断或者死锁)。
(2)服务器负载发生变化:某些时候服务会因为用户行为造成请求无法及时处理从而导致雪崩,例如阿里的双十一活动,若没有提前增加机器预估流量则会造服务器压力会骤然增大二挂掉。
(3)人为因素:比如代码中的路径在某个时候出现bug
3.解决或缓解服务雪崩的方案
4、搭建feign实现hystrix
pom.xml添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
application.yml
feign:
hystrix:
enabled: true #开启熔断器
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 4000 #默认4s超时
xxxFallback.java
package com.cloud.fegin.fallback;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Component;
import com.cloud.fegin.service.MemberFegin;
// 服务降级
@Component
public class MemberFallBack implements MemberFegin{
@Override
public List<String> getList() {
// 服务降级处理
List<String> list = new ArrayList<>();
list.add("服务发生异常。。。");
return list;
}
}
xxxFegin.java
package com.cloud.fegin.service;
import java.util.List;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import com.cloud.fegin.fallback.MemberFallBack;
// fallback=MemberFallBack.class 服务降级
@FeignClient(value = "service-member",fallback=MemberFallBack.class)
public interface MemberFegin {
@GetMapping("/getMemberAll")
public List<String> getList();
}
测试:
关闭服务提供端,浏览器访问销售端,执行结果显示:
“服务器发生异常。。。”