生产就绪功能
Spring Modulith 提供支持,将系统架构信息作为 Spring Boot Actuator 端点公开,并通过捕获指标和跟踪来观察应用程序模块之间的交互。由于生产就绪的应用程序可能需要两者,因此激活这些功能的最便捷方式是使用 Spring Modulith Insight 启动器,如下所示
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-starter-insight</artifactId>
<version>1.2.0</version>
<scope>runtime</scope>
</dependency>
dependencies {
runtimeOnly 'org.springframework.modulith:spring-modulith-starter-insight:1.2.0'
}
这将包括 Actuator 和可观察性支持,以及 Spring Boot 的 Actuator 启动,以提供对 Actuator 的通用支持。请注意,您仍然需要添加其他依赖项,以将您的应用程序连接到您的监控工具,例如 Zipkin、Wavefront 等,通常通过 OpenTelemetry 或 Brave。有关此方面的更多信息,请参阅 Spring Boot 参考文档的 相应部分。
应用程序模块 Actuator
应用程序模块结构可以作为 Spring Boot Actuator 公开。要启用 Actuator,请将 spring-modulith-actuator
依赖项添加到项目中
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-actuator</artifactId>
<version>1.2.0</version>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot actuator starter required to enable actuators in general -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>…</version>
<scope>runtime</scope>
</dependency>
dependencies {
runtimeOnly 'org.springframework.modulith:spring-modulith-actuator:1.2.0'
}
<!-- Spring Boot actuator starter required to enable actuators in general -->
dependencies {
runtimeOnly 'org.springframework.boot:spring-boot-starter-actuator'
}
运行应用程序现在将公开一个 modulith
Actuator 资源
GET https://127.0.0.1:8080/actuator
{
"_links": {
"self": {
"href": "https://127.0.0.1:8080/actuator",
"templated": false
},
"health-path": {
"href": "https://127.0.0.1:8080/actuator/health/{*path}",
"templated": true
},
"health": {
"href": "https://127.0.0.1:8080/actuator/health",
"templated": false
},
"modulith": { (1)
"href": "https://127.0.0.1:8080/actuator/modulith",
"templated": false
}
}
}
1 | 广告的 modulith Actuator 资源。 |
modulith
资源遵循以下结构
JSONPath | 描述 |
---|---|
|
应用程序模块的技术名称。 |
|
应用程序模块的人类可读名称。 |
|
应用程序模块的基包。 |
|
应用程序模块的所有传出依赖项 |
|
所依赖的应用程序模块的名称。对 |
|
对目标模块的依赖项类型。可以是 |
模块排列的一个示例如下所示
{
"a": {
"basePackage": "example.a",
"displayName": "A",
"dependencies": []
},
"b": {
"basePackage": "example.b",
"displayName": "B",
"dependencies": [ {
"target": "a",
"types": [ "EVENT_LISTENER", "USES_COMPONENT" ]
} ]
}
}
观察应用程序模块
可以拦截应用程序模块之间的交互以创建 Micrometer 跨度,最终将其包含在您可以在诸如 Zipkin 之类的工具中可视化的跟踪中。要激活检测,请将以下运行时依赖项添加到您的项目中
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-observability</artifactId>
<version>1.2.0</version>
<scope>runtime</scope>
</dependency>
dependencies {
runtimeOnly 'org.springframework.modulith:spring-modulith-observability:1.2.0'
}
您将需要根据您想要将可观察性元数据管道化的工具配置额外的基础设施依赖项。有关详细信息,请查看相应的 Spring Boot 文档,了解要包含在您的设置中的依赖项。 |
这将导致应用程序模块 API 的所有 Spring 组件都使用一个方面进行装饰,该方面将拦截调用并为其创建 Micrometer 跨度。下面显示了一个示例调用跟踪
在这种特定情况下,触发付款会更改订单的状态,然后导致触发订单完成事件。引擎异步接收此事件,该引擎触发订单上的另一个状态更改,运行几秒钟,然后依次触发订单上的最终状态更改。