Spring Boot 2.3将包括对Kubernetes liveness&readiness Probe的本地支持,扩展了2.2的“运行状况组”支持,允许开发人员选择运行状况指标的子集,并将其分组为单个相关的运行状况。

Kubernetes的活性Liveness和就绪性probes探针

在Kubernetes中,活性和就绪性Kubernetes概念代表了应用程序状态的各个方面。

应用程序的活动状态指示内部状态是否有效。如果活性Liveness被破坏,则意味着应用程序本身处于故障状态,无法恢复。在这种情况下,最好的做法是重新启动应用程序实例。例如,如果本地缓存已损坏且无法修复,则依赖本地缓存的应用程序应失败其活动状态。

就绪状态告知应用程序是否已准备好接受客户端请求。如果就绪状态尚未就绪,则Kubernetes不应将流量路由到该实例。如果应用程序太忙于处理任务队列,则它可以将自己声明为忙碌,直到可以再次管理其负载为止。

活性和就绪性将成为Spring Boot的核心概念

这些活动性和就绪性概念不仅适用于Kubernetes,而且无论部署平台如何,它们通常都非常有用。我们将介绍LivenessState和ReadinessState,它们是这些概念的不可变表示形式。您可以随时从中获取它们ApplicationAvailabilityProvider:

// Available as a component in the application context

ApplicationAvailabilityProvider availabilityProvider;

LivenessState livenessState = availabilityProvider.getLivenessState();

ReadinessState readinessState = availabilityProvider.getReadinessState()

您需要进行检查以了解应用程序状态不完整的仅轮询模型。只有应用程序知道其生命周期(启动,关闭),或者可以提供有关运行时错误的上下文(在处理任务时以中断状态结束)。Spring Boot应用程序上下文在应用程序的生命周期中本地发布这些事件;您的应用程序代码也应该对此有所帮助。

这就是为什么我们选择使用Spring Application Event模型来更改可用性状态并监听更新的原因:

/**

  • Component that checks that the local cache is in a valid state.

    */

    @Component

    public class LocalCacheVerifier {

    private final ApplicationEventPublisher eventPublisher;

    public LocalCacheVerifier(ApplicationEventPublisher eventPublisher) {

    this.eventPublisher = eventPublisher;

    }

    public void checkLocalCache() {

    try {

    //...

    }

    catch (CacheCompletelyBroken ex) {

    this.eventPublisher.publishEvent(LivenessStateChangedEvent.broken(ex));

    }

    }

}

组件还可以通过@EventListener(或通过实现ApplicationListener)侦听那些事件。请查阅参考文档以获取更多信息。

该支持直接随spring-boot模块一起提供,并且为所有Spring Boot应用程序激活。这使它可用于所有类型的应用程序(Web,批处理等),并允许您实现不一定与HTTP绑定的探针。

使用Spring Boot Actuator公开Kubernetes探针

您可能会对一个非常常见的用例感兴趣:在Kubernetes上部署Web应用程序并配置HTTP探针。将Spring Boot Actuator依赖项添加到您的应用程序是唯一的要求!Actuator将使用运行状况支持来配置“ 活动性”和“就绪” HTTP探针Rest端点:"/actuator/health";"/actuator/health/liveness"和"/actuator/health/readiness"。

原文:

https://spring.io/blog/2020/03/25/liveness-and-readiness-probes-with-spring-boot

最新文章

  1. Hibernate中事务的隔离级别设置
  2. Linux中杀不死的进程
  3. (转载)python2+selenium自动化测试系列(一)
  4. HDU 5908 Abelian Period(暴力+想法题)
  5. LDA 初见(JGibbLDA-v.1.0 eclipse使用)
  6. php中ckeditor(Fckeditor)的配置方法
  7. 添加标签2 jquery 和JS
  8. codevs 访问艺术馆
  9. 实现一个基于tcc/tlink的简单的编译链接工具
  10. [译]Stairway to Integration Services Level 5 - 增量删除数据
  11. Android读取网络图片
  12. mysql 提示too many connections”的解决办法
  13. Django models Fild详解
  14. Spring+SpringMVC+MyBatis深入学习及搭建(五)——动态sql
  15. Calendar使用方法
  16. Java基础学习笔记二十二 网络编程
  17. Beta冲刺(3/7)
  18. SPI总线协议及SPI时序图详解【转】
  19. final可以修饰类、属性、方法。
  20. python——列表入门

热门文章

  1. Obtain The String CodeForces - 1295C binary_search+思维
  2. mysql 创建表 索引 主键 引擎 自增 注释 编码等
  3. Shellshock远程命令注入(CVE-2014-6271)漏洞复现
  4. ubuntu16.04-交叉编译-SeetaFaceEngine-master
  5. jQuery(*****)
  6. 关于暴力破解的一些学习笔记(pikachu)
  7. ansible的剧本play(四)
  8. Linux环境下,MongoDB 3.6.10 的安装步骤,以及设置用户和密码,配置随处执行mongo命令启动客户端,以及所遇到的问题
  9. 什么是动态规划?动态规划的意义是什么?https://www.zhihu.com/question/23995189
  10. dos命令下安装pip报错 不是内部命令