Spring Cloud 入门教程 - 熔断器 -Hystrix,字节跳动 Java 面试凉凉经
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
在启动类 EurekaClientRibbonApplication 上添加 @EnableHystrix 注解
@EnableHystrix
@EnableEurekaClient
@SpringBootApplication
@ComponentScan("com.springcloud.demo.eurekaclientribbon")
public class EurekaClientRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientRibbonApplication.class, args);
}
}
修改 RibbonService 在 main()方法上添加 @HystrixCommand
@Service
public class RibbonService {
@Autowired
RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "errorFallbackMsg")
public int main(){
return restTemplate.getForObject("http://eureka-client/main",Integer.class);
}
public int errorFallbackMsg(){
return -2;
}
}
fallbackMethod 参数是在熔断器打开时,即远程服务调用失败时执行的方法名。
启动 eureka-client-ribbon ,关闭两个 eureka-client 实例,请求http://localhost:8795/main
返回-2,熔断器生效。
在 Feign 上使用熔断器
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
在老版本中 由于 feign 中使用了 hytrix,因此不需要加入依赖,但是新版本中会报错找不到类
Caused by: java.lang.ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect
添加配置
eign.hystrix.enabled=true
开启 Hytrix 功能。
修改 FeignService,添加参数 fallback。
@FeignClient(value = "eureka-client", configuration = FeignConfig.class,fallback = MainHystrixError.class)
public interface FeignService {
@GetMapping("main")
int main();
}
创建熔断器逻辑处理类 MainHystrixError,当请求远程服务失败时执行。
最后
为什么我不完全主张自学?①平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。
除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。
我个人建议线上比线下的性价比更高,线下培训价格基本上没 2W 是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:①价格:线上的价格基本上是线下的一半;②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;④课程:从课程内容来说,确实要比线下讲的更加深入。
应该学哪些技术才能达到企业的要求?(下图总结)


评论