Как посчитать, как часто выключатель менял свое состояние с разомкнутого на разомкнутое? - PullRequest
0 голосов
/ 31 августа 2018

Есть ли способ узнать, как часто автоматический выключатель Hystrix изменял свое состояние с замкнут на разомкнут ? Я бы ожидал что-то вроде

HystrixCommandMetrics m = ...; 
long count = m.getCumulativeCount(HystrixEventType.SHORT_CIRCUITED);

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

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Сам автоматический выключатель не предоставляет метрики, он использует метрики только для информирования о своем переходе между CLOSED, HALF_OPEN и OPEN.

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

В версии 1.4 вы должны использовать new HystrixMetricsPoller() и передать ей собственную реализацию MetricsAsJsonPollerListener, которая анализирует предоставленный JSON для isCircuitOpen для каждой команды.

В версии 1.5 вы будете использовать HystrixDashboardStream.getInstance().observe() и зарегистрировать своего потребителя для получения обновлений. Я думаю, что этот подход немного больше усилий, чтобы получить базовый объект HystrixCircuitBreaker для каждой команды, что позволит вам проверить isOpen(), чтобы получить текущее состояние каждого автоматического выключателя.

0 голосов
/ 31 августа 2018

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

Блок-схема здесь иллюстрирует детали того, как это работает. ( Эти страницы подробно описывают блок-схему) Одна из подробностей конкретно касается Открыта ли цепь? .

Выдержка из Открыта ли цепь?

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

Если цепь разомкнута (или «отключена»), Hystrix не будет работать команда, но перенаправит поток в (8) Получите запасной вариант.

Если контур замкнут, то процесс переходит к (5), чтобы проверить, имеется доступная емкость для запуска команды.

Распознав это поведение, можно определить, когда состояние меняется с Закрыто на Открытое.

С эта страница представляет собой краткий список типов событий Hystrix. Помеченный флажок будет полезен в шагах, указанных выше: enter image description here

...