Hystrix 中線程池隔離與信號量隔離區別


Hystrix的隔離策略有兩種:分別是線程隔離和信號量隔離。

THREAD(線程隔離):使用該方式,HystrixCommand將會在單獨的線程上執行,並發請求受線程池中線程數量的限制。
SEMAPHORE(信號量隔離):使用該方式,HystrixCommand將會在調用線程上執行,開銷相對較小,並發請求受信號量的個數的限制。

配置:hystrix.command.default.execution.isolation.strategy 隔離策略,默認是Thread, 可選Thread|Semaphore

(1) 什么是線程池隔離?

為每一個服務接口單獨開辟一個線程池,保持與其他服務接口線程的隔離,提高該服務接口的獨立性和高可用。

(2) 線程池隔離的優點是什么?

(3) 線程池隔離的缺點是什么?

 

線程池隔離和信號量隔離的區別

(1) 線程池隔離與信號量隔離有什么區別?

 (2) 什么情況下使用線程池隔離?

(3) 什么情況下使用信號量隔離?

 

hystrixCommand線程
   線程池隔離:
      1、調用線程和hystrixCommand線程不是同一個線程,並發請求數受到線程池(不是容器tomcat的線程池,而是hystrixCommand所屬於線程組的線程池)中的線程數限制,默認是10。
      2、這個是默認的隔離機制
      3、hystrixCommand線程無法獲取到調用線程中的ThreadLocal中的值
   信號量隔離:
      1、調用線程和hystrixCommand線程是同一個線程,默認最大並發請求數是10
      2、調用數度快,開銷小,由於和調用線程是處於同一個線程,所以必須確保調用的微服務可用性足夠高並且返回快才用

注意:如果發生找不到上下文的運行時異常,可考慮將隔離策略設置為SEMAPHONE。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM