hystrix学习
hystrix是一个用于处理分布式系统延迟和容错的开源库,在系统中,如出现超时,异常等,hystrix能够保证三个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,提高了分布式的弹性。
加入依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency>
HystrixCommand(fallbackMethod = "失败后调用的方法")
@Autowired private TestClientService testServcie; @RequestMapping(value = "person/get/{id}",method = RequestMethod.GET) @HystrixCommand(fallbackMethod="error_get") public Person get(@PathVariable("id")Long id){ } public Person error_get(@PathVariable("id")Long id){ return "信息" }
启动类上要加@EnableCircuitBreaker //对hystrix熔断机制的支持
服务降级:
使用HystrixCommand有太多冗余,所以我们要在接口上实现
@Component public class TestClientServiceFallbackFactory implements FallbackFactory<TestClientService> { @Override public TestClientService create(Throwable throwable) { return new TestClientService() { @Override public Person get(Person person) { return "错误信息"; } }; } }
TestClientService:
@FeignClient(value = "MICROSERVICECLOUD",fallbackFactory = TestClientServiceFallbackFactory.class) public interface TestClientService { @RequestMapping(value = "/person/get/{id}") public Person get(@PathVariable("id") Long id); }
feign的项目里要加上
feign: hystrix: enabled: true
HystrixDashboard
添加注解
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency>
在启动类上加
@EnableHystrixDashboard
...