Hystrix的线程隔离中,信号量隔离中信号量是一个java应用进程所有线程共享的吗?还是也有像线程池那样分开隔离,譬如拥有同一个commandKey属性的请求共享一个信号量?
另外,多个方法上用了@HystrixCommand注解,每个方法都有属性,譬如HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS这种,如果设置的值得不同,而因为这个值又是共享的,那么哪个起作用呢?
Hystrix的线程隔离中,信号量隔离中信号量是一个java应用进程所有线程共享的吗?还是也有像线程池那样分开隔离,譬如拥有同一个commandKey属性的请求共享一个信号量?
另外,多个方法上用了@HystrixCommand注解,每个方法都有属性,譬如HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS这种,如果设置的值得不同,而因为这个值又是共享的,那么哪个起作用呢?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
按key来的,对应spring cloud就是一个服务名一个信号量,当前java进程中所有请求该服务的请求,都会先经过信号量。
如果不使用
@HystrixCommand
,直接集成ribbon,一个服务名就是一个信号量。如果使用了@HystrixCommand
,那么会一个@HystrixCommand
对应一个信号量。具体你可以断点AbstractCommand#getExecutionSemaphore()