Конфигурация 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 одновременных отказов.

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

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

2 ответа

Решение

Как работает автоматический выключатель Hystrix : Hystrix не предлагает автоматический выключатель, который отключается после определенного количества отказов. Схема Hystrix сломается, если:

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


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

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

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

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

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

период времени в спящем окне устанавливает количество времени, после отключения схемы, чтобы отклонить запросы, прежде чем разрешить попытки еще раз определить, следует ли снова замыкать цепь. Значение по умолчанию равно 5000 миллисекунд, это можно изменить путем переопределения свойства circuitBreaker.sleepWindowInMilliseconds,

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

Другие вопросы по тегам