Конфигурация Hystrix

Я пытаюсь реализовать hystrix для своего приложения, используя hystrix-javanica.

Я настроил hystrix-configuration.properties, как показано ниже

hystrix.command.default.execution.isolation.strategy=SEMAPHORE
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000 
hystrix.command.default.fallback.enabled=true
hystrix.command.default.circuitBreaker.enabled=true
hystrix.command.default.circuitBreaker.requestVolumeThreshold=3 
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=50000
hystrix.command.default.circuitBreaker.errorThresholdPercentage=50

схема короткого замыкания работает нормально, но я сомневаюсь в этом hystrix.command.default.circuitBreaker.requestVolumeThreshold=3

  1. Указывает ли он на обрыв цепи после 3 сбоев или
  2. Разомкните цепь после 3 одновременных сбоев.

Пройдены по ссылке в документации

Кто-нибудь может ответить?

 

 


person Jay    schedule 22.07.2016    source источник


Ответы (2)


Принцип действия выключателя Hystrix: Hystrix не предлагает выключатель, который отключается после определенного количества отказов. Цепь Hystrix разорвется, если:

в течение промежутка времени продолжительностью metrics.rollingStats.timeInMilliseconds процент действий, приводящих к обработанному исключению, превышает errorThresholdPercentage, при условии, что количество действий в цепи в промежутке времени не менее requestVolumeThreshold


Что такое requestVolumeThreshold? requestVolumeThreshold - это минимальный порог для объема (количества) вызовов через схему, который должен быть соблюден (в пределах скользящего окна), прежде чем схема вычислит процент отказов вообще. Только когда этот минимальный объем (в каждом временном окне) будет достигнут, схема будет сравнивать долю отказов ваших вызовов с errorThresholdPercentage, которую вы настроили.

Представьте, что нет такого минимального порога громкости в цепи. Представьте себе первый вызов во временном окне ошибки. У вас будет 1 из 1 вызовов, являющихся ошибкой, = 100% отказов, что выше установленного вами порогового значения 50%. Так что цепь тут же оборвется.

requestVolumeThreshold существует, поэтому этого не происходит. Фактически это означает, что частота ошибок в вашей цепи не статистически значима (и не будет сравниваться с errorThresholdPercentage) до тех пор, пока не будет получено по крайней мере requestVolumeThreshold вызовов в каждом временном окне.

person mountain traveller    schedule 22.07.2016
comment
Немного смущает скользящее окно. Не могли бы вы объяснить немного больше? По моей конфигурации цепь должна открыться после 3-х сбоев? Не так ли? - person Jay; 22.07.2016
comment
См. github.com/Netflix/Hystrix/wiki/How-it -Works # выключатель для получения более подробной информации о том, как работает автоматический выключатель. 3, которые вы настроили, - это не количество отказов, из-за которых можно сломаться. Прерыватели Hystrix прерывают процент ошибок (errorThresholdPercentage=50%, которые вы настроили), учитываемых по вызовам в заданном временном окне. requestVolumeThreshold=3 - это (согласно моему первоначальному ответу) минимальный порог объема вызовов, который должен быть соблюден в том же временном окне, чтобы вычисления% возраста были статистически значимыми. - person mountain traveller; 22.07.2016
comment
См. github.com/Netflix/Hystrix/wiki/, чтобы узнать, как временные окна настроен. - person mountain traveller; 22.07.2016
comment
Для автоматического выключателя, работающего по тем же принципам, кратко объясненным, вы также можете увидеть здесь: github.com/App-vNext/Polly/wiki/ Хотя используется другая терминология конфигурации (и это продукт .NET, а не Java), принципы работы те же . Страница Polly также предлагает некоторые объяснения того, как взаимодействуют различные параметры конфигурации (например, что произойдет, если вы установите их слишком высоко, слишком низко и т. Д.) - person mountain traveller; 22.07.2016
comment
@mountain traveller: Моя первая ошибка запроса сама по себе вызывает мой запасной метод. Я не могу явно настроить requestVolumeThreshold. Вы можете мне помочь? Я только что подписался на spring.io/guides/gs/circuit-breaker - person Guna; 09.11.2017

Я новичок в Hystrix, но думаю, что могу вам помочь.

В общем, hystrix.command.default.circuitBreaker.requestVolumeThreshold - это свойство, которое устанавливает минимальное количество запросов в скользящем окне, которое отключит цепь, и его значение по умолчанию - 20, и его значение можно изменить в файле свойств или в нашем @HystrixCommand аннотированном методе. .

Например, если это свойство равно 20, то если в скользящем окне получено только 19 запросов (скажем, в 10-секундном окне), цепь не отключается, даже если все 19 отказов. Если значение неуспешного запроса достигает 20, то схема будет открыта, и соответствующие вызовы будут отправлены в резервный режим, даже если вызов завершится успешно, до завершения периода времени окна ожидания.

Окно ожидания период времени устанавливает период времени после отключения цепи для отклонения запросов, прежде чем разрешить повторные попытки определить, следует ли снова замкнуть цепь. Его значение по умолчанию - 5000 миллисекунд. Это можно изменить, переопределив свойство circuitBreaker.sleepWindowInMilliseconds.

Вы можете найти все свойства и их описание здесь.

person Sumanth Duvvuru    schedule 31.10.2016
comment
Вы можете посмотреть: github.com/Netflix/Hystrix/wiki/. Ваш ответ неверен без учета errorThresholdPercentage. Надеюсь это поможет. См. github.com/Netflix/Hystrix/blob/master/hystrix-core/src/main/ и github.com/Netflix/Hystrix/blob/master/hystrix-core/src/main/ - person mountain traveller; 24.11.2016
comment
Есть ли способ проверить эти свойства конфигурации, чтобы убедиться, что эти свойства действительно применяются для настройки HystrixCommand? - person pijushcse; 23.02.2018