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

拥抱K8S,Spring Boot 2.3提供K8s活性和就绪性探针的更多相关文章

  1. 从spring boot发邮件聊到开发的友好性

    前些天帮一个朋友做网站,全站都是静态页面,唯一需要用到后端开发的是他需要一个留言板.传统的留言板一般都是提交后保存到数据库,然后提供一个后台的留言列表给管理人员看,我嫌麻烦,就决定留言提交到后台直接发 ...

  2. Spring Boot提供的特性

    一.导览 本文主要按以下模块介绍spring Boot(1.3.6.RELEASE)提供的特性. SpringApplication类 外部化配置 Profiles 日志 开发WEB应用 Securi ...

  3. Spring Boot提供RESTful接口时的错误处理实践

    使用Spring Boot开发微服务的过程中,我们会使用别人提供的接口,也会设计接口给别人使用,这时候微服务应用之间的协作就需要有一定的规范. 基于rpc协议,我们一般有两种思路:(1)提供服务的应用 ...

  4. Spring Boot 知识清单(一)SpringApplication

    爱生活,爱编码,微信搜一搜[架构技术专栏]关注这个喜欢分享的地方.本文 架构技术专栏 已收录,有各种JVM.多线程.源码视频.资料以及技术文章等你来拿. 一.概述 目前Spring Boot已经发展到 ...

  5. 玩转spring boot——AOP与表单验证

    AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...

  6. 翻译-使用Ratpack和Spring Boot打造高性能的JVM微服务应用

    这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中 ...

  7. 使用 Spring Boot 快速构建 Spring 框架应用--转

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2 ...

  8. Spring Boot Admin的使用

    http://www.jianshu.com/p/e20a5f42a395 ******************************* 上一篇文章中了解了Spring Boot提供的监控接口,例如 ...

  9. 使用 Spring Boot 快速构建 Spring 框架应用,PropertyPlaceholderConfigurer

    Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.S ...

随机推荐

  1. [javascript] js实现小数的算术运算方法

    /** ** 加法函数,用来得到精确的加法结果 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. ** 调用:accAdd(arg ...

  2. [Laravel] 自带分页实现以及links方法不存在错误

    自带分页实现其实挺简单的,但是我在实现的时候报错!找了很久才找出原因! 废话不说上码 控制器LeeController.php层 <?php namespace App\Http\control ...

  3. 数据结构(C语言版)---查找

    1.查找表:同一类型的数据元素构成的集合. 2.对查找表进行的操作:查询某特定元素.检索满足条件的元素的属性.插入元素.删除元素. 1)若对查找表进行的操作只涉及前两种,则为静态查找表:需要进行插入和 ...

  4. shll脚本常用格式和规则使用

    shll脚本格式和规则 脚本文件必须已 .sh 结尾(yuan.sh) 脚本第一行必须是:#!/bin/bash 激活脚本的二种方式(sh yuan.sh)(给脚本X权限,以绝对路径执行脚本) 逻辑与 ...

  5. sql注入 pikachu

    闭合条件的探测 数字型注入 burp抓包 分别测试 id=1 and 1=1和id=1 or 1=1 存在漏洞 字符型注入 ' 报错 探测闭合条件 ' order by 1# 未报错.构成闭合 同上有 ...

  6. xpath进阶用法

    一.简介 xpath作为对网页.对xml文件进行定位的工具,速度快,语法简洁明了,在网络爬虫解析内容的过程中起到很大的作用,除了xpath的基础用法之外xpath中还存在着非常之多的进阶用法,本文将对 ...

  7. PHP使用token防止表单重复提交的方法

    本文实例讲述了PHP使用token防止表单重复提交的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  8. Linux网络服务第五章NFS共享服务

    1.笔记 NFS一般用在局域网中,网络文件系统c/s格式 服务端s:设置一个共享目录 客户端c:挂载使用这个共享目录 rpc:111远程过程调用机制 Showmount -e:查看共享目录信息 def ...

  9. dotnetcore配置框架简介

    一.前言 配置的本质就是字符串的键值对,微软的一系列接口其实就是对这些键值对字符串的抽象. 二.基本类型 2.1.Nuget包 Microsoft.Extensions.Configuration.A ...

  10. Node.js快速创建一个访问html文件的服务器

    var http = require('http'), // 引入需要的模块 fs = require('fs'), //引入文件读取模块 cp = require('child_process'), ...