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/

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

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, URL- адрес http://localhost:3000/app/health.json полностью отключился, НО, в основном приложении java spring, я все еще вижу там тот же результат.

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

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

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

Спасибо

1 ответ

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

Другие вопросы по тегам