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, который может обеспечить запасной вариант в случае, если ни один экземпляр не запущен.