返回 导航

SpringBoot / Cloud

hangge.com

SpringCloud - 服务注册与发现组件Eureka的使用详解7(用/health端点进行健康检测)

作者:hangge | 2020-07-09 08:10

七、使用 /health 端点进行健康检测

1,基本介绍

(1)默认情况下,Eureka 中各个服务实例的健康检测并不是通过 spring-boot-actuator 模块的 /health 端点来实现的,而是依靠客户端心跳的方式来保持服务实例的存活。
    也就说在 Eureka 的服务续约与剔除机制下,客户端的健康状态从注册到注册中心开始都会处于 UP 状态,除非心跳终止一段时间之后,服务注册中心将其剔除。

(2)默认的心跳实现方式可以有效检查客户端进程是否正常运作,但却无法保证客户端应用能够正常提供服务。
    由于大多数微服务应用都会有一些其他的外部资源依赖,比如数据库、缓存、消息代理等,如果我们的应用与这些外部资源无法联通的时候,实际上已经不能提供正常的对外服务了,但是因为客户端心跳依然在运行,所以它还是会被服务消费者调用,而这样的调用实际上并不能获得预期的结果。

2,配置步骤

    在 Spring Cloud Eureka 中,我们可以通过简单的配置,把 Eureka 客户端的健康检测交给 spring-boot-actuatr 模块的 /health 端点,以实现更加全面的健康状态维护。
(1)首先在客户端项目的 pom.xml 中引入 spring-boot-starter-actuator 模块依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

(2)接着在客户端项目的 application.properties 中添加如下配置参数即可:
eureka.client.healthcheck.enabled=true

(3)经过上面的配置后,eureka server 对客户端健康检测的方式,便改用 actuator /health 端点来检测。而关于 /health 端点更详细的介绍(比如实现自定义健康指示器),可以参考我之前写的这篇文章:
评论

全部评论(0)

回到顶部