说一说spring boot服务的健康检测

news2024/11/15 22:50:53

一、判断服务的健康状态

服务健康与否,对我们的重要性,主要是体现在应用部署与服务调用。具体可以是如下:

  • consul/nacos 服务注册中心
  • api网关
  • docker/k8s 容器部署
  • 发版结果
  • 应用监控

服务注册中心要对外提供服务,仅限于健康的节点列表,而非所有的节点。

api网关,是一样的道理。

容器部署,比如k8s的pod,都是依据健康检测接口,判断是否Running。

二、k8s容器部署

因为我们配置了Pod的探针,由它来决定pod的状态机流转。

  • http://localhost:9015/XHDataCenter/mgm/health 返回http status如果是2xx,则说明服务启动成功。否则deployment会每隔N秒再次启动pod,直至达到阈值限制。
		  readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /XHDataCenter/mgm/health
              port: 9015
              scheme: HTTP
            initialDelaySeconds: 1
            periodSeconds: 5
            successThreshold: 1
            timeoutSeconds: 3
    
          startupProbe:
            failureThreshold: 22
            httpGet:
              path: /XHDataCenter/mgm/health
              port: 9015
              scheme: HTTP
            initialDelaySeconds: 25
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 5

三、consul注册中心的服务健康

请先看我们遇到第一个问题,直接报错说404了。

但是,请留心它这里的健康检测接口地址是http://10.224.170.15:9015/XHDataCenter/mgm/health,这个地址是从哪里配置来的,很关键。

换句话说,java应用在注册到consul的时候,得告知你的服务健康地址是啥,并且把自身的健康检测endpoint暴露出去。
在这里插入图片描述

三、spring boot 程序

首先,我们程序期望的健康检测接口是http://localhost:9015/XHDataCenter/mgm/health。下面,我将把涉及到接口路径的几个地方罗列出来~

1、consul

本段配置,是告知consul, 我们的程序对外的健康检测接口是什么。 上文consul认为服务不健康的原因就是期望的地址在实际地址里不存在。

spring:
  application:
    name: data-center-service
  cloud:
    consul:
      discovery:
        enabled: true
        prefer-ip-address: true
        # consul 会依据请求该接口,判断服务是否健康
        # 期望的接口地址是http://localhost:9015/XHDataCenter/mgm/health
        health-check-path: /XHDataCenter/mgm/health

那么实际的健康检测地址是什么呢?

继续看下文。。。

2、全局的上下文路径:context-path

server:
  port: 9015
  servlet:
    # 这行会要求访问该服务的路径都额外增加下面地址
    # 期望的接口地址变成了:http://localhost:9015/XHDataCenter/${management.endpoints.web.base-path}/health
    context-path: /XHDataCenter

management.endpoints.web.base-path 的默认路径是“actuator”,所以到目前为止,本服务的健康检测地址是http://localhost:9015/XHDataCenter/actuator/health,下文我们将会对其进行重写。

3、重写actuator的路径

  • 错误的写法
management:
  endpoints:
    web:
      # 结合上一步,此时服务的健康检测地址是http://localhost:9015/XHDataCenter/XHDataCenter/mgm/health
      base-path: /XHDataCenter/mgm
      exposure:
        include: ["*"]
  • 正确的写法(按我们最早约定的,健康检测地址是http://localhost:9015/XHDataCenter/mgm/health,所以base-path重写如下)
management:
  endpoints:
    web:
      base-path: /mgm
      exposure:
        include: ["*"]

4、最终的正确写法是:

在这里插入图片描述

四、总结

经过上文对程序的修正,重启后,consul和k8s对服务的健康检测均为OK
在这里插入图片描述
点击进去,查看详情,可以看到其健康检测接口地址及检测结果。
在这里插入图片描述
K8S容器里的只要也保持该健康检测地址即可,本文就不再赘述~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/729021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天猫厨房大电市场分析(淘宝天猫数据)

如今,消费者对于厨房电器的需要不断增长,厨房电器领域的发展规模也越来越大。在国内市场中,由于中国人在烹饪时喜欢煎炒烹炸,油烟较重,因此,以油烟机和燃气灶为代表的厨房大电也成为千家万户不可少的厨用电…

2023黑马头条.微服务项目.跟学笔记(四)

2023黑马头条.微服务项目.跟学笔记 四 自媒体文章-自动审核今日内容介绍1.自媒体文章自动审核流程2.内容安全第三方接口2.1 概述2.2 准备工作2.3 文本内容审核接口2.4 图片审核接口2.5 项目集成 3.app端文章保存接口3.1 表结构说明3.2 分布式id3.3 思路分析3.4 feign接口 4.自媒…

常用的 34 个 Linux Shell 脚本,一定能帮到你!

作为一名 Linux 工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,也注意收集一些大佬写过的脚本,汇总整理一下,欢迎收藏,与君共勉! (1&a…

antd-React Popover 点击空白不隐藏

1.问题原因&#xff1a;自己写的点击事件把默认事件覆盖掉了&#xff0c;所以点击会不生效 2.解决方案&#xff1a;给按钮在添加一个焦点事件即可&#xff0c;当失去焦点的时候取反 3.代码如下 const [closeVisible, setCloseVisible] useState(false);<Popover content{c…

SSM学习笔记-------Spring(三)

SSM学习笔记-------Spring&#xff08;三&#xff09; Spring_day031、AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念 2、AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点 步…

在任何文件夹下打开jupyter 内核都是同一个文件夹

我在 D:\anaconda实例代码 下打开jupyter notebook 无论我在那个文件下打开jupyter 都是同一个文件这是因为你可能在jupyter notebook 的那个配置文件中设置固定的路径 假如你的.py 文件在D:\anaconda实例代码 下 你想通过jupyter notebook 运行它很简单 上传到jupyter notebo…

Linux系统运行时参数命令(性能监控、测试)(2)虚拟内存和物理内存、内存性能监控、文件IO性能监控

目录 3. 内存性能监控3.1 内存是什么-虚拟内存和物理内存3.1.1 为什么需要有虚拟内存3.1.2 虚拟内存的原理 3.2 内存中的buffer和cache3.2.1 buff/cache3.2.2 **free 与 available** 4.文件IO性能监控4.1 IO的两种方式4.1.1 缓存IO4.1.2 直接IO 4.2 监控磁盘IO的命令4.2.1 iost…

【指针进阶】

1 字符指针 #include <stdio.h> int main() {char str1[] "hello bit.";char str2[] "hello bit.";const char* str3 "hello bit.";const char* str4 "hello bit.";if (str1 str2)printf("str1 and str2 are same\n&…

DataEase安装与教程,人人都会的大数据可视化与BI工具!!!

文章目录 一 DataEase介绍1.1 可视化工具介绍1.2 什么是 DataEase1.3 DataEase 的优势1.4 DataEase 支持的数据源1.5 DataEase 模板市场1.6 快速开始 二 Dataease安装部署2.1 登陆DataEase2.2 DataEase界面2.3 数据源连接2.4 数据集2.5 看板案例 一 DataEase介绍 1.1 可视化工…

第三节 给SpringBootAdmin的client端加入spring security安全控制

前言 本来想用一节就写完SpringBootAdmin的&#xff0c;但随着研究的深入发现一节应该是不够的&#xff0c;网上的资料也不会非常系统&#xff0c;官网的例子有些已经好几年没更新了&#xff0c;所以接下来还是系统性的来写下吧 第一节 完成基础配置&#xff0c;暴露所有端点…

B2B2C商城模式适合哪些的企业?

随着互联网的发展&#xff0c;电商也变得的越来越火热&#xff0c;很多个人和企业进驻其中&#xff0c;所以竞争激烈&#xff0c;如天猫和京东&#xff0c;他们内部的店家多不胜数&#xff0c; 在这种大环境下&#xff0c;企业开始做出不一样的举动&#xff0c;纷纷都搭建一个b…

samba参数配置教程(samba配置参数讲解)(/etc/samba/smb.conf )

文章目录 samba smb.conf配置文档smb.conf重要配置参数讲解1. workgroup&#xff1a;指定Samba服务器所在的工作组名称。2. server string&#xff1a;指定Samba服务器的描述信息。3. security&#xff1a;指定Samba服务器的安全模式&#xff0c;可以是user、share或domain。4.…

ssh配置多账号(Mac)

一. 应用场景 当存在同时需要git在GitHub、gitee、gitlab等多个不同git托管平台进行ssh代码操作的时候。 二. 具体操作 默认 ssh-keygen -t rsa -C "你的邮箱"之后一直回车就可以&#xff0c;会默认在~/.ssh目录下生成id_rsa、id_rsa.pub 指定文件 ssh-keygen …

实验九 单周期MIPS CPU设计实验(基于Logisim)

一、实验目的 学生掌握控制器设计的基本原理&#xff0c;能利用硬布线控制器的设计原理在Logisim平台中设计实现MIPS单周期CPU。 二、实验内容 利用运算器实验&#xff0c;存储系统实验中构建的运算器、寄存器文件、存储系统等部件以及Logisim中其它功能部件构建一个32位MIPS …

基本数据类型转换

自动类型转换 当Java程序在进行赋值或运算时&#xff0c;精度小的类型自动转换为精度大的数据类型&#xff0c;这个就是自动类型转换。 int a 3; double d a; // 类型转换 int --> double自动类型转换使用和细节&#xff1a; 有多种类型的数据混合运算时&#xff0c;系统…

基于Java养老院老人健康监护平台设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

element-ui组件中的Tooltip 文字提示:el-tooltip中content是变量怎么写

<el-tooltip content"Top center" placement"top"><el-button>Dark</el-button> </el-tooltip> 这样的效果是&#xff1a; 可以看出&#xff0c;content是提示内容。如果是文字提示可以直接写在content里面。 content是变量应该…

飒智智能机器人核心技术与应用论坛暨一体化控制器发布会成功举办

7月6日&#xff0c;智能机器人核心技术与应用论坛暨移动操作复合机器人一体化智能控制器发布会在上海举行。本次活动由上海飒智智能科技有限公司主办&#xff0c;得到上海市经信委、闵行区科委、闵行区经委、“大零号湾”属地单位南滨江公司、江川路街道办事处的支持&#xff0…

给大模型持久记忆!GitHub 2万星向量数据库云服务升级,国内云产品下周上线

一个在GitHub上标星超2万的数据库&#xff0c;究竟是什么来头&#xff1f; 原来&#xff0c;这正是最近大火的向量数据库之一、首个在这一赛道开源产品Milvus。 自大模型爆火以来&#xff0c;它的关注度也一路飙升&#xff0c;官方显示&#xff0c;目前Milvus已经拥有超过1000企…

数据结构中队列的操作方式,一目了然

队列的概念 首先我们联想一下链表&#xff0c;在单链表中&#xff0c;我们只能对他的链表表尾进行插入&#xff0c;对链表的表头进行结点的删除&#xff0c;这样强限制性的链表&#xff0c;就是我们所说的队列。 也就是说&#xff0c;队列&#xff08;queue&#xff09;是限定…