Подтвердить что ты не робот

Hystrix: Пользовательский автоматический выключатель и логика восстановления

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

Очевидно, что если цепь отключена, Hystrix автоматически вызовет команду getFallBack() метод; это я понимаю. Но каковы критерии для того, чтобы в первую очередь сменить цепь? В идеале я хотел бы попробовать несколько раз нажать на поддержку поддержки (скажем, максимум 3 попытки), прежде чем мы рассмотрим, что служба отключена/нездоровая и отключите автоматический выключатель. Как я мог реализовать это и где?

Но я полагаю, что если я переопределяю автоматический выключатель по умолчанию, я должен также переопределить любой механизм, который обрабатывает период восстановления по умолчанию. Если служба поддержки отключается, это может быть по одной из нескольких причин:

  • Отклики сети между клиентом и сервером
  • Служба была развернута с ошибкой, которая делает невозможным возвращение действительных ответов клиенту
  • Клиент был развернут с ошибкой, которая не позволяет отправлять действительные запросы на сервер
  • Некоторые странные, мгновенные служебные икоты (возможно, служба делает крупную сборку мусора и т.д.).
  • и др.

В большинстве этих случаев недостаточно иметь период восстановления, который просто ждет N секунд, а затем повторяет попытку. Если у службы есть ошибка, или если кто-то вытащил некоторые сетевые кабели в центре обработки данных, мы всегда будем получать сбои от этой услуги. Только в небольшом числе случаев клиент-сервис автоматически излечится без какого-либо взаимодействия с человеком.

Итак, я предполагаю, что мой следующий вопрос частично " Как настроить стратегию восстановления по умолчанию по умолчанию?", но я думаю, что это в основном: " Как использовать Hystrix для уведомления devops когда служба отключена и требуется ручное вмешательство?"

4b9b3361

Ответ 1

существует в основном четыре причины, по которым Hystrix вызывает резервный метод: исключение, тайм-аут, слишком много параллельных запросов или слишком много исключений в предыдущих вызовах.

Возможно, вы захотите повторить попытку в методе run(), если код возврата или исключение, которое вы получаете от вашей службы, указывают на то, что повторная попытка имеет смысл.

В вашем резервном методе команды вы можете повторить попытку, когда был тайм-аут, - когда там, где слишком много параллельных запросов или слишком много исключений, обычно нет смысла повторять ту же услугу.

Как также спросил как уведомить devops: вы должны подключить систему мониторинга к Hystrix, которая проверяет состояние автоматического выключателя и соотношение успешных и безуспешных вызовов. Вы можете использовать издатели показателей, предоставленные JMX, или написать собственный адаптер с использованием API Hystrix. Я написал два адаптера для Римана и Zabbix в учебном пособии который я подготовил; для этого вам будет очень мало строк кода.

В учебнике также есть пример приложения и драйвер загрузки для тестирования некоторых сценариев.

Br, Александр.