Эврика: жизненный цикл зарегистрированных сервисных экземпляров - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь развернуть пару микросервисов на основе Spring Boot на JBoss EAP.Мое общее приложение содержит сервер Eureka и несколько микросервисов, которые должны зарегистрироваться в реестре сервисов.

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

Клиентам Eureka не удается зарегистрироваться, хотя бы частично.Они регистрируются, но застревают в статусе Начиная с .Когда я проверяю сердцебиение - они выполняются постоянно.

Интересно, каков жизненный цикл регистрации сервисов Eureka и какие события переносят их из одного в другое.

Или, если быть более точным, мне интересно, что я должен сделать, чтобы мои услуги были зарегистрированы в штате UP , чтобы они могли использоваться другими службами?

1 Ответ

0 голосов
/ 26 сентября 2019

Я узнал разные вещи, пытаясь найти решение этой проблемы.

Прежде всего, возможными состояниями зарегистрированных клиентских экземпляров являются ЗАПУСК, ВНИЗ, ВНИЗ, ВНЕ СЛУЖБЫ и НЕИЗВЕСТНО.Цель состояния STARTING на самом деле состоит в том, чтобы запретить приложению, которое все еще запускается, получать запросы, которые оно еще не готово обрабатывать.

Все взаимодействие между сервисами и реестром сервисов происходит через простой REST API, описанный здесь: https://github.com/Netflix/eureka/wiki/Eureka-REST-operations.

После регистрации на сервере Eureka состояние сервиса останется прежним., пока запросы сердцебиения выполнены.

Если вы включите eureka.client.healthcheck.enabled = true , работоспособность приложения будет распространяться на сервер Eureka, а состояние сервера будет отражать состояние работоспособности приложения.

Однако при развертывании приложения Spring Boot на сервере Jboss по некоторым неизвестным мне причинам автоконфигурация выполняется иначе, чем при автономном развертывании приложения Spring Boot.

Мы наконец исправили проблему, установив eureka.instance.instance-enabled-onit: true в нашем application.yml.

Эта цель этого свойства, которая не задокументирована и, по-видимому, написана с ошибкой (instance-enabled-on-init?), Состоит в немедленной регистрации вашего приложения как UP, даже если начальное состояние по умолчанию - STARTING.

...