在微服务架构中,一个清晰的多模块项目结构是高可维护、高扩展的基础。
AegisCloud 项目里,我完成了 父子工程搭建 + 多模块 Spring Boot 骨架跑起来,为系统的自治闭环能力打下了坚实基础。

通过这次实践,我总结了多模块化设计的几个关键价值:

  • 职责清晰:每个模块单一功能,业务逻辑与自治闭环完全分离
  • 易扩展:新模块可以轻松接入父工程管理
  • 闭环可落地:MAPE-K 自治闭环在工程上有明确映射
  • 便于演示与测试:独立启动、独立调试,每个模块都可单独验证

接下来,我将详细分享 AegisCloud 的多模块工程设计理念、模块划分、依赖关系以及父工程管理思路,让你一眼就能看懂如何在微服务自治系统中落地多模块架构。


1. 父子工程设计理念

在 AegisCloud 中,我采用了 父子工程 + 多模块化 的结构,让每个模块职责清晰、独立可控:

  • 父工程(aegiscloud):统一管理整个项目的依赖版本、Maven 插件和构建配置,是整个工程的“大脑”。
  • 公共模块(aegis-common):存放 DTO、工具类、常量等共享内容,为业务和自治模块提供基础支持。
  • 业务模块(aegis-service-business):模拟业务逻辑,可独立启动,用于测试自治闭环的作用。
  • 网关模块(aegis-gateway):统一入口,负责请求路由和限流,可独立运行。
  • 自治模块(Observer / Analyzer / Planner / Executor / Knowledge):未来各阶段中陆续接入,实现可观测、分析、策略生成、自愈执行及知识沉淀。
  • 演示模块(aegis-demo):快速展示系统闭环效果,便于调试与演示。

即使当前没有完整业务逻辑,这样的模块划分已经保证了系统 独立开发、可扩展、易维护,为后续微服务自治闭环落地打下了坚实基础。


2. 父子工程最小实现示例

父工程 pom.xml 片段

1
2
3
4
5
<modules>  
<module>aegis-common</module>
<module>aegis-gateway</module>
<module>aegis-service-business</module>
</modules>
  • 每个模块都可以独立启动
  • 公共模块作为依赖被各子模块引用
  • 父工程统一管理依赖版本、插件配置和构建流程

3. 业务模块启动类示例

1
2
3
4
5
6
7
8
9
10
11
package com.aegiscloud.business;  

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BusinessServiceApplication {
public static void main(String[] args) {
SpringApplication.run(BusinessServiceApplication.class, args);
}
}

说明:

  • @SpringBootApplication 声明这是一个 Spring Boot 应用,负责自动装配和启动。
  • main 方法允许模块独立运行,用于本地调试或集成测试。
  • 公共模块(aegis-common)可被引用,实现模块间解耦。

这种独立启动的设计,使每个模块都可以单独开发、测试和调试,同时保证整个 AegisCloud 系统的模块化和可扩展性。


4. 网关模块最小启动示例

1
2
3
4
5
6
7
8
9
10
11
package com.aegiscloud.gateway;  

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}

关键点说明:

  • 独立端口:确保和业务模块不冲突,可单独运行
  • 健康检查:通过 /actuator/health 测试模块启动成功

application.yml 配置示例

1
2
3
4
5
6
7
8
9
10
11
server:
port: 8080
spring:
application:
name: aegis-gateway

management:
endpoints:
web:
exposure:
include: health,info

通过独立启动的网关模块,我们可以快速验证请求入口、健康检查和后续路由功能,为自治闭环的接入打下基础。


5. 模块依赖图示意

当前阶段,业务模块和网关模块都依赖公共模块,但自治模块尚未接入。


6. 测试结果示例

业务模块启动控制台:

1
2026-01-09 20:15:23.456  INFO 12345 --- [           main] o.s.b.SpringApplication                  : Started BusinessServiceApplication in 2.345 seconds

网关模块 /actuator/health 返回示意:

1
2
3
{
"status": "UP"
}

7. 了解 Actuator:微服务健康自检利器

在微服务中,健康检查和可观测性是最基础的自治能力。即使目前业务逻辑很少,我们也要保证每个模块都能被外部系统或监控平台“看到状态”。这就是 Spring Boot Actuator 的价值。

7.1 Actuator 作用

  • 提供模块运行状态、指标、健康检查和信息暴露接口
  • 常用端点:
    • /actuator/health:模块健康状态(UP / DOWN / OUT_OF_SERVICE)
    • /actuator/info:模块信息(版本、环境等)
    • /actuator/metrics:指标数据(请求数、内存使用等)
    • /actuator/beans:应用 Bean 信息

在 AegisCloud 中,Observer 模块后续会采集这些指标,AI 分析异常,而 Gateway 可以直接用 Actuator 做请求前置健康判断。

7.2 最小配置示例

1
2
3
4
5
management:
endpoints:
web:
exposure:
include: health,info,metrics

访问:

1
http://localhost:8080/actuator/health

返回:

1
2
3
{
"status": "UP"
}

7.3 为什么现在就加?

  1. 验证模块启动:确认模块能独立运行
  2. 后续可观测能力打基础:Observer 模块可以直接利用 Actuator 数据采集系统状态
  3. 提升自治闭环可信度:闭环要“知道系统健康”,Actuator 是最简单、开箱即用的实现方式

这一步虽然简单,却是自治系统工程化落地的第一块基石:模块能自检,系统才可感知状态,才能走向真正的自治闭环


8. 小结

通过这次实践,AegisCloud 已经完成了:

  • 父子工程 + 多模块化骨架
  • 业务模块和网关模块独立启动
  • 最小可观测能力(Actuator)就绪
  • 模块间依赖清晰,自治闭环可落地

接下来,自治模块(Observer / Analyzer / Planner / Executor / Knowledge)将陆续接入,多模块骨架保证每个模块独立开发、可测试,同时 MAPE-K 自治闭环在工程上落地顺畅。