Несколько сервисов на приборной панели Hystrix/Turbine?

Я пытаюсь получить представление о двух разных службах, работающих с использованием Spring Boot. Обе службы хорошо зарегистрированы в Eureka, и теперь я хочу получить некоторые данные Hystrix, нанесенные на график в веб-приложении Turbine.

При тестировании отдельных сервисов с помощью Turbine все работает отлично:

http://localhost:2222/hystrix.stream (service1)
http://localhost:3333/hystrix.stream (service2)

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

turbine:
   clusterNameExpression: new String('default')
   appConfig: service1,service2

Кажется, я наткнулся на стену, пытаясь передать данные в Turbine.stream для обеих служб.

Любые подсказки или советы?


person Marco    schedule 28.09.2015    source источник


Ответы (2)


Чтобы ответить на мой собственный вопрос, кажется, что Turbine не может отслеживать больше служб на одном хосте, поскольку он привязан к имени хоста. См. https://github.com/Netflix/Turbine/issues/88.

Турбина имеет 2 рабочие модели:

  • тянуть; данные из отдельных сервисных потоков извлекаются Turbine
  • толкать; данные из отдельных служб передаются на сервер Turbine с помощью брокера AMQP, такого как RabbitMQ.

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

person Marco    schedule 30.09.2015
comment
К настоящему времени существует свойство под названием turbine.combineHostPort=true, которое должно решить вашу проблему без использования RabbitMQ. Вот — соответствующая проблема из проекта Spring Cloud Netflix. - person Philipp; 23.08.2017

Во-первых, я не думаю, что Turbine является эксклюзивным хостом, как говорит Марко.

... кажется, что Turbine не может отслеживать больше служб на одном хосте, поскольку он привязан к имени хоста

Я реализовал Turbine с приложением Hystrix Dashboard (что не рекомендуется), объединив 2 службы с одним и тем же spring.application.name.

Я обнаружил, как Turbine собирает поток hystrix, заключается в том, что каждое приложение Turbine будет искать службы в реестре Eureka с заданным именем turbine.appConfig в application.properties, что является spring.application.name по умолчанию или eureka.instance.appname явно для ваших служб, независимо от их хостов. На данный момент поток турбины готов.

Будет возвращен список имен в качестве идентификаторов услуг из вашего запроса на предыдущем шаге, и по крайней мере одно из них должно соответствовать списку имен, который вы предоставили в turbine.aggregator.clusterConfig.

Когда вы вводите http://[turbine-app-host:port]/turbine.stream?cluster=[cluster name] на домашней странице Hystrix Dashboard, параметр cluster name должен быть одним из совпадающих имен из turbine.aggregator.clusterConfig.

person ZzzZinia    schedule 25.09.2017