Spring Eureka:轻轻关闭服务

时间:2015-10-20 08:28:53

标签: spring-cloud netflix-eureka

我有服务A,即使用服务B1和B2(两个相同服务的实例),都是通过Eureka配置的。

现在我想将B1 轻轻地放下(这样A在处理B1请求失败时没有问题/延迟)。我想有这样一个程序:

  1. 告诉B1停止ping Eureka
  2. 让尤里卡宣传,B1正在下降
  3. 等到A获取信息并且不再使用B1
  4. 然后关闭B1
  5. 我遇到了第1步的问题。如何请求B1停止ping?看了一些JMX操作但没找到。

    (如果我跳过第1步,只是从Eureka删除B1,它将从注册表中删除,但它会很快更新,因为B1仍在ping Eureka)

3 个答案:

答案 0 :(得分:2)

如果您将cloud-starteractuator依赖性添加到项目中

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

您将拥有多个管理端点(由actuator提供)。 POST/pause将在尤里卡获得DOWN状态(感谢cloud-starter)。当eureka客户端收到状态时,Ribbon不会将任何请求路由到您的DOWN服务。发布到/shutdown将优雅地停止申请。

答案 1 :(得分:0)

根据this github question,您最好添加重试,因为 DOWN 实例在删除之前会保留一段时间,否则可能会将失败的客户端请求路由到该实例

答案 2 :(得分:0)

在pom.xml中添加稳定发布版本并编译“范围” 喜欢

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        <version>2.2.8.RELEASE</version>
        <scope>compile</scope>
    </dependency>