zoukankan      html  css  js  c++  java
  • 架构模式: 健康检查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值。

    结果上下文

    这种模式具有以下好处:

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

    这种模式有以下缺点:

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

    关联模式

    • 服务注册表 - 服务注册表调用运行状况检查端点
  • 相关阅读:
    从发布订阅模式到redux(一)
    swipper的一个小坑
    代码精进之路读后感(二)
    代码精进之路读后感(一)
    编译提示没有对应的构造函数
    静态成员函数里面不能使用非静态的成员变量
    越精简越好
    MediaTypeListWidget->insertItem 添加的label没有填充单元格
    避免代码后期过分改动的方法
    Qt的index 用方法static_cast<CTableItem*>(index.internalPointer())取出来的值的成员都未初始化
  • 原文地址:https://www.cnblogs.com/paxlyf/p/11290166.html
Copyright © 2011-2022 走看看