Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
546 views
in Technique[技术] by (71.8m points)

Hystrix的信号量隔离中信号量是进程所有线程共享的吗?

Hystrix的线程隔离中,信号量隔离中信号量是一个java应用进程所有线程共享的吗?还是也有像线程池那样分开隔离,譬如拥有同一个commandKey属性的请求共享一个信号量?

另外,多个方法上用了@HystrixCommand注解,每个方法都有属性,譬如HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS这种,如果设置的值得不同,而因为这个值又是共享的,那么哪个起作用呢?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

按key来的,对应spring cloud就是一个服务名一个信号量,当前java进程中所有请求该服务的请求,都会先经过信号量。

如果不使用@HystrixCommand,直接集成ribbon,一个服务名就是一个信号量。如果使用了@HystrixCommand,那么会一个@HystrixCommand 对应一个信号量。具体你可以断点 AbstractCommand#getExecutionSemaphore()


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...