尤里卡:已注册服务实例的生命周期

时间:2019-09-25 08:48:14

标签: spring-boot jboss netflix-eureka

我正在尝试在JBoss EAP上部署几个基于Spring Boot的微服务。我的整个应用程序包含Eureka服务器和几个微服务,应将其注册到服务注册表。

虽然存在一些小问题,但我们设法将这些服务部署到JBoss服务器,但是服务注册存在问题。

Eureka客户至少部分无法注册自己。他们已注册,但处于状态开始。当我检查心跳时-它们会一直执行。

我想知道Eureka服务注册的生命周期是什么,什么样的事件将它们从一个转移到另一个。

或者,更具体地说,我想知道应该怎么做才能将我的服务注册为 UP 状态,以便其他服务可以使用它?

1 个答案:

答案 0 :(得分:0)

在尝试找到此问题的解决方案时,我学到了不同的东西。

首先,已注册客户端实例的可能状态为STARTING,UP,DOWN,OUT OF SERVICE和UNKNOWN。 STARTING状态的目的实际上是为了防止仍在启动以接收尚未准备处理的请求的应用程序。

服务和服务注册中心之间的所有通信均通过以下简单的REST API进行:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations

一旦在Eureka服务器上注册,只要执行心跳请求,服务状态将保持不变。

如果启用 eureka.client.healthcheck.enabled = true ,则应用程序的运行状况将传播到Eureka服务器,并且服务器状态将反映应用程序的运行状况。

但是,当您在Jboss服务器中部署Spring Boot应用程序时,由于某些我仍然未知的原因,与独立的Spring Boot应用程序部署相比,自动配置的执行方式有所不同。

我们终于通过在application.yml中设置 eureka.instance.instance-enabled-onit:true 解决了该问题。

此属性的目的(尚未记录且似乎拼写错误(初始化实例是否启用实例)?)是立即将您的应用程序注册为UP,即使默认的初始状态为STARTING。