架构模式: 健康检查API

架构模式: 健康检查API

上下文

您已应用微服务架构模式。有时,服务实例可能无法处理仍在运行的请求。例如,它可能已用完数据库连接。发生这种情况时,监控系统应生成警报。此外,负载平衡器或服务注册表不应将请求路由到失败的服务实例。

问题

如何检测正在运行的服务实例无法处理请求?

关注点

  • 服务实例失败时应生成警报
  • 应将请求路由到工作服务实例

结论

服务具有返回服务运行状况的运行状况检查API端点(例如HTTP /运行状况)。API端点处理程序执行各种检查,例如

  • 服务实例使用的基础结构服务的连接状态
  • 主机的状态,例如磁盘空间
  • 应用特定逻辑

运行状况检查客户端 - 监视服务,服务注册表或负载平衡器 - 定期调用端点以检查服务实例的运行状况。

例子

微服务示例应用程序是应用程序实现运行状况检查API的示例。它是用Scala编写的,使用Spring Boot和Spring Cloud作为微服务机箱。它们提供各种功能,包括健康检查端点。端点由Spring Boot Actuator模块实现。它配置一个/ health HTTP端点,用于调用可扩展的运行状况检查逻辑。

要启用/ health端点,首先将执行器定义为依赖项:

dependencies {
  compile "org.springframework.boot:spring-boot-starter-actuator"

其次,启用Spring Boot自动配置:

@SpringBootApplication
class UserRegistrationConfiguration {

此时,您的应用程序将具有具有默认行为的运行状况检查端点。您可以通过定义一个或多个实现HealthIndicator接口的Spring bean来自定义此行为:

class UserRegistrationConfiguration {
  @Bean
  def discoveryHealthIndicator(discoveryClient : EurekaClient ) : HealthIndicator = new DiscoveryHealthIndicator(discoveryClient)

HealthIndicator必须实现health()方法,该方法返回Health值。

结果上下文

这种模式具有以下好处:

  • 运行状况检查端点可以定期测试服务实例的运行状况

这种模式有以下缺点:

  • 运行状况检查可能不够全面,或者服务实例可能在运行状况检查之间失败,因此请求仍可能路由到失败的服务实例

关联模式

  • 服务注册表 - 服务注册表调用运行状况检查端点

posted on 2019-08-02 17:40  yaofengspark  阅读(1187)  评论(0编辑  收藏  举报

导航