当前位置: 首页 > news >正文

MicroProfile的配置和MicroProfile健康

MicroProfile的配置和MicroProfile健康

  • MicroProfile的配置
    • 基本原理
    • 影响与历史
    • 实现
    • 设计
    • 自定义配置源
    • 构建
  • MicroProfile Health

MicroProfile的配置

基本原理

大多数应用程序需要基于运行环境进行配置。必须能够从应用程序外部修改配置数据,这样应用程序本身就无需重新打包。

配置数据可以来自不同的位置,并采用不同的格式(例如系统属性、系统环境变量、.properties、.xml、数据源)。我们将这些配置位置称为 ConfigSource。如果在多个 ConfigSource 中定义了相同的属性,我们会应用策略来指定将有效使用哪个值。

在某些情况下,某些数据源可能会动态更改。更改的值应该被输入到客户端,而无需重新启动应用程序。对于在云环境中运行的微服务而言,这一要求尤为重要。MicroProfile Config 方法允许在配置值发生更改后立即获取它们。

影响与历史

许多配置项目直接影响了本提案并成为此 API 的基础,例如:

DeltaSpike 配置 (http://deltaspike.apache.org/documentation/configuration.html)

DeltaSpike 配置的摘录部分 (https://github.com/struberg/javaConfig/)

Apache Tamaya (http://tamaya.incubator.apache.org/)

实现

Microprofile Config 本身不包含实现,仅提供指定的 API、TCK 和文档。

以下实现可用:

Apache Geronimo Config (https://svn.apache.org/repos/asf/geronimo/components/config/trunk)

WebSphere Liberty 2017 3-6 月 Beta 版 (https://developer.ibm.com/wasdev/)

Payara Server 173 和 Payara Micro 173 (https://docs.payara.fish/documentation/microprofile/config.html)

WildFly 和 Thorntail (https://github.com/smallrye/smallrye-config)

microBean™ MicroProfile Config

设计

可以通过 ConfigProvider#getConfig() 访问应用程序的当前配置。

Config 包含从已注册的 org.eclipse.microprofile.config.spi.ConfigSource 收集的信息。这些 ConfigSource 根据其序号排序。这样,就可以从外部覆盖重要性较低的配置。

默认情况下,有 3 个默认 ConfigSource:

System.getProperties() (ordinal=400)

System.getenv() (ordinal=300)

ClassPath 上的所有 META-INF/microprofile-config.properties 文件。(默认序号为 100,可通过每个文件中的 config_ordinal 属性单独配置)

因此,可以在应用程序打包的上述文件中指定默认值,并在以后每次部署时覆盖该值。序号较高的配置优先于序号较低的配置。

自定义配置源

可以编写并注册自定义配置源。例如,一个配置源可以从集群中的共享数据库表中获取配置值。

构建

可以通过 Apache Maven 构建整个 MicroProfile 配置项目

mvn clean install

MicroProfile Health

健康检查用于从另一台机器(例如 Kubernetes 服务控制器)探测计算节点的状态,主要目标是自动化流程维护计算节点状态的云基础架构环境。

建议的解决方案分为两部分:

  • 健康检查协议和线格式
  • 用于实现健康检查程序的 Java API
@FunctionalInterface
public interface HealthCheck {HealthCheckResponse call();
}
public class HealthCheckResponse {public enum Status { UP, DOWN }private final String name;private final Status status;private final Optional<Map<String, Object>> data;[...]
}
public class SuccessfulCheck implements HealthCheck {@Overridepublic HealthCheckResponse call() {return HealthCheckResponse.up("successful-check");}
}

相关文章:

  • 设备树引入
  • 动态面板axure
  • 告别固定密钥!在单一账户下用 Cognito 实现 AWS CLI 的 MFA 单点登录
  • Spring Cloud Gateway 实战:网关配置与 Sentinel 限流详解
  • 零知开源——基于STM32F407VET6零知增强板的四路独立计时器
  • 快速掌握广告联盟APP开发全流程,短剧和游戏广告app
  • 全面拥抱vue3
  • kubectl get pod返回数据研究
  • InfluxDB 3 Core数据库管理指南:从概念到实操的完整流程
  • 机器学习开篇:算法分类与开发流程
  • JavaScript中Object()的解析与应用
  • Redis—主从复制
  • webpack+vite前端构建工具 -答疑
  • kubernetes部署3节点高可用elasticsearch v8.14.3
  • 【数学基础】复杂度理论
  • Python异步编程深度解析
  • 基于Spring Boot的网上购物平台设计与实现
  • AD22以上的基础操作
  • C++算法学习专题:双指针
  • 编译安装交叉工具链 riscv-gnu-toolchain