1. 基础知识
1.1 服务隔离
说明:把每个依赖或调用的服务都隔离开来,防止级联失败引起整体服务不可用
Hystrix 隔离策略的区别如下:
1.2 熔断
说明:为了防止服务雪崩,类似家用电的保险丝,起到保护服务的作用
1.3 降级
概念:接口出错时的兜底方法,以下图的4、5、6步能导致降级发生
1.4 Hystrix 线程划分:
- 分组 commandGroup:代表某一个服务;如 order-server
- 命令名称 commandKey:代表服务的一个接口;如获取订单的接口
- 线程池划分:默认以分组划分,可以使线程池划分的提供粒度更小
总结:command group一般来说,可以是对应一个服务,多个command key对应这个服务的多个接口,多个接口的调用共享同一个线程池
1.5 注解:
@HystrixCommand
@HystrixProperty
例子:
@GetMapping("test")
@HystrixCommand(
groupKey = "ConsumerControllerGroup",
commandKey = "test",
commandProperties = {
@HystrixProperty(name = HystrixPropertiesManager.EXECUTION_TIMEOUT_ENABLED, value = "false"),
@HystrixProperty(name = HystrixPropertiesManager.REQUEST_CACHE_ENABLED, value = "false")
}/*, fallbackMethod = "fallBack"*/,
threadPoolProperties = {
@HystrixProperty(name = HystrixPropertiesManager.CORE_SIZE, value = "200")
})
public String test() throws InterruptedException {
System.out.println