我注意到彈簧雲ZUUL強制執行隔離信號量,而不是線程默認值(如Netflix的推薦)。爲什麼ZUUL強制執行SEMAPHORE隔離來執行其Hystrix命令?
在org.springframework.cloud.netflix.zuul.filters.route.RibbonCommand
註釋說:
我們要默認信號量隔離,因爲這種包裝是已經跟帖隔離
2人的命令而我依然不明白這一點:-(什麼是這兩個其他命令?
配置這種方式,Zuul只能調度負載,但不允許超時,讓客戶走開。總之,即使Hystrix tim eout設置爲1000ms,客戶端只有在調用轉發給服務器的鏈接返回時纔會被釋放(或者由於ReadTimeout等原因超時)。
我試圖通過修改配置來強制隔離螺紋(每個服務遺憾的是,因爲默認在代碼中強制),一切似乎按預期方式工作。然而,如果沒有正確理解其含義,我並不熱衷於這樣做 - 當然,關於代碼中的評論以及Spring雲版本Zuul採用的默認設置。
有人能提供更多的信息? Thx
有人在這? –
有沒有更新? RibbonCommand中的RestClient.LoadBalancerCommand創建2個Observable。它是否與這個評論有關?我不確定。 –
你好,對晚會遲到抱歉:)我很好奇爲什麼你覺得有必要改變隔離策略?你注意到由於信號量而導致的性能瓶頸嗎?正如'org.springframework.cloud.netflix.zuul.filters.route.support.AbstractRibbonCommand'中的評論中所提到的那樣,超時是由它包裝的2個方法處理的。我猜那些一個功能區的命令,所以超時可以通過'ribbon.connectTimeout'設置和'ribbon.readTimeout' –