Spring cloud sidecar не может отменить регистрацию службы nodeJS после ее закрытия

Я подозреваю, что это проблема, может ли кто-нибудь помочь получить чек?

В моем приложении sideCar есть application.yml:

server:
  port: 5678
spring:
  application:
    name: nodeservice

sidecar:
  port: ${nodeServer.instance.port:3000}
  health-uri: http://localhost:${nodeServer.instance.port:3000}/app/health.json

eureka:
  instance:
    hostname: ${host.instance.name:localhost}
    leaseRenewalIntervalInSeconds: 5 #default is 30, recommended to keep default
    metadataMap:
      instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

И в моем основном приложении конфигурации spring у меня есть:

String url_node = "";
        try {
            InstanceInfo instance = discoveryClient.getNextServerFromEureka("nodeservice", false);
            // InstanceInfo instance = discoveryClient.getNextServerFromEureka("foo", false);
            url_node = instance.getHomePageUrl();
        } catch (Exception e) {
        }

Теперь я запускаю свой сервер nodeJS, у меня есть весеннее приложение:

URL для nodeService: http://SJCC02MT0NUFD58.local:3000/

Это прекрасно, но после того, как я выключил свой сервер nodeJS, http://localhost:3000/app/health.json url полностью не работает, НО в основном приложении Java Spring я все еще вижу там тот же вывод.

Таким образом, казалось, даже если служба NodeJS больше недоступна, эврика все еще помнит об этом в памяти.

Что-то не так с моей конфигурацией?

Другой вопрос заключается в том, почему URL-адрес, обнаруженный весной, равен http://SJCC02MT0NUFD58.local:3000/, а не http://localhost:3000? Я уже настроил Eureka.server.instance.host как localhost.

Спасибо


person user3006967    schedule 14.06.2015    source источник


Ответы (1)


Вы видите соответствующее поведение. Eureka и лента созданы очень устойчивыми (AP в CAP). В описанном вами случае у службы был хотя бы один экземпляр, затем их не было, ленточный клиент eureka хранит последний список серверов в качестве последнего средства. Вы просто печатаете имена, если вы попытаетесь подключиться к этой службе, это не удастся. Здесь вы используете автоматический выключатель Hystrix, который может обеспечить запасной вариант в случае, если ни один экземпляр не запущен.

person spencergibb    schedule 15.06.2015
comment
Спасибо, @spencergibb, по вашему мнению, это также верный URL для nodeServer, SJCC02MT0NUFD58.local:3000 , также желательно, хотя я уже поставил localhost в конфигурацию sideCar? Из этого только для Mac? - person user3006967; 15.06.2015
comment
Облако Spring по умолчанию использует имя хоста. - person spencergibb; 15.06.2015