Hystrix открывает цепь для проблемных сервисов?

Предположим следующий сценарий:

  1. У меня есть ServiceA, вызывающий ServiceB с включенным Hystrix
  2. Есть 2 экземпляра ServiceB
  3. Один из экземпляров сталкивается с некоторыми довольно серьезными проблемами, когда его конечная точка постоянно выдает ошибки, но другой экземпляр работает нормально.
  4. errorThresholdPercentage установлен на 80%
  5. Учитывая, что у нас есть один экземпляр службы, который работает нормально, маловероятно, что errorThresholdPercentage когда-либо превысит 80% (в лучшем случае это будет только до 50%).
  6. Это означает, что пока проблемный экземпляр работает, мы все равно будем вызывать его и получать ошибки.

Есть ли способ настроить Hystrix для открытия цепи до уровня экземпляра?


person feicipet    schedule 16.10.2017    source источник


Ответы (1)


Невозможно настроить автоматический выключатель Hystrix для уровня экземпляра.

Вместо этого вы можете добиться этого, используя ленту с Hystrix. Существует IRule с именем AvailabilityFilteringRule, который используется по умолчанию. У него есть собственный автоматический выключатель, не относящийся к hystrix. Он будет отфильтровывать проблемный экземпляр из списка экземпляров в течение определенных секунд. Вы можете настроить это поведение с помощью следующих свойств ленты.

niws.loadbalancer.default.circuitTripTimeoutFactorSeconds (default 10secs)
niws.loadbalancer.default.connectionFailureCountThreshold  (default 3 failures)
niws.loadbalancer.default.circuitTripMaxTimeoutSeconds (default 30secs)

Используя ленту + гистрикс, вы можете получить два уровня автоматического выключателя, как показано ниже.

  • автоматический выключатель сервисного уровня - hystrix
  • прерыватель цепи уровня экземпляра — лента (от AvailabilityFilteringRule)

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

person yongsung.yoon    schedule 17.10.2017