一、核心组件引入与目录结构规划
简介
本文介绍如何搭建基于 🔗Spring Cloud Alibaba 的微服务架构,包括核心组件 Nacos(服务注册与配置中心)、Sentinel(流量控制与熔断限流)、Seata(分布式事务管理)和 RocketMQ(高性能消息中间件)。通过引入这些组件并明确项目的目录结构,帮助开发者快速构建稳定、高效的微服务系统。
环境准备
- 系统版本: Windows 11 企业版 (24H2)
- JDK: 17.0.13 🔗戳我下载
- MySQL: 8.0.40 🔗 windows安装包
- IDE: IntelliJ IDEA 2024.3.1.1 🔗一键破解最新版
- MAVEN: apache-maven-3.9.9
- spring-boot.version: 3.3.7
- spring.cloud.version: 2023.0.3
- SpringCloudAlibaba: 2023.0.1.2 🔗版本说明
温馨提示:
🔗Win10/11彩蛋
Spring Cloud Alibaba Version | Sentinel Version | Nacos Version | RocketMQ Version | Seata Version |
---|---|---|---|---|
(新) 2023.0.3.2 | 1.8.8 | 2.4.2 | 5.3.1 | 2.1.0 |
2023.0.1.3 | 1.8.8 | 2.4.2 | 5.1.4 | 2.1.0 |
2023.0.1.2 | 1.8.8 | 2.3.2 | 5.1.4 | 2.0.0 |
一、创建项目
1.1 创建父工程 vdn-parent
点击create,新窗口打开,效果如下图所示:
1.2 修改主POM文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><!-- 指定POM模型版本 --><modelVersion>4.0.0</modelVersion><!-- 父POM配置,继承自Spring Boot的父POM --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.7</version></parent><!-- 项目基本信息 --><groupId>com.vdn</groupId><artifactId>vdn-parent</artifactId><version>17.0.0-SNAPSHOT</version><packaging>pom</packaging><description>VDN 基础框架,主POM文件</description><modules><module>vdn-commons</module><module>vdn-monitor</module><module>vdn-system</module><module>vdn-module</module><module>vdn-gateway</module></modules><!-- 定义项目的属性 --><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring.cloud.version>2023.0.3</spring.cloud.version><spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version></properties><!-- 管理依赖版本 --><dependencyManagement><dependencies><!-- 引入Spring Cloud依赖管理 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- 引入Spring Cloud Alibaba依赖管理 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.vdn</groupId><artifactId>vdn-dependencies</artifactId><version>${project.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><!-- 项目直接依赖 --><dependencies><!-- 引入Spring Cloud Bootstrap启动器 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency></dependencies><!-- 配置Maven仓库 --><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public/</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories><!-- 构建配置 --><build><plugins><!-- Maven依赖插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId></plugin><!-- Maven源码插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId></plugin><!-- Maven编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin></plugins></build></project>
1.3 新增权限管理模块(vdn-system)
vdn-system 是一个权限管理模块,旨在为企业提供高效、灵活的权限管理解决方案。系统采用模块化设计,主要功能包括 菜单管理、数据字典、用户管理、角色管理 和 用户授权。整体结构清晰,扩展性强,包含以下模块:
-
vdn-system
系统的父工程,作为项目的核心框架,负责模块依赖的统一管理与协调。 -
vdn-system-api
公共 API 模块,提供标准化的接口,供外部系统或模块调用,支持数据共享和功能复用。 -
vdn-system-biz
业务处理模块,主要负责权限管理相关的核心业务逻辑,例如用户权限分配、角色管理和菜单配置等。
目录结构
vdn-system
├── vdn-system-api
│ ├── src
│ └── pom.xml
├── vdn-system-biz
│ ├── src
│ └── pom.xml
└── pom.xml
通过这些模块的协作,vdn-system 提供了强大的权限管理功能,能够灵活适配各种业务场景,满足企业在用户管理、角色分配、权限控制等方面的需求。
1.4 新增服务监控模块(vdn-system)
vdn-monitor 结合了 Spring Boot Actuator 的基础监控能力、Nacos 的服务治理与配置管理功能,以及 Spring Boot Admin 的可视化监控,构建了一个功能强大的系统监控模块。它的设计注重实时性和易用性,为系统管理员提供了全面的应用运行状态跟踪工具,同时支持分布式环境下的服务管理和配置变更。pom如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.vdn</groupId><artifactId>vdn-parent</artifactId><version>17.0.0-SNAPSHOT</version></parent><artifactId>vdn-monitor</artifactId><packaging>jar</packaging><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build></project>
1.5 新增服务模块集合(vdn-module)
目录结构
vdn-module
├── vdn-seata
│ ├── src
│ └── pom.xml
└── pom.xml
vdn-module
是一个父模块,用于统一管理其子模块,其中的 vdn-seata
模块基于 Seata 框架,专注于解决微服务架构中的分布式事务问题。通过整合 Seata 的核心功能,如事务自动回滚、事务隔离与一致性保障,vdn-seata
实现了对分布式系统中复杂事务场景的高效管理,为系统提供了可靠的数据一致性支持,是微服务架构下关键的事务管理组件。pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.vdn</groupId><artifactId>vdn-parent</artifactId><version>17.0.0-SNAPSHOT</version></parent><artifactId>vdn-module</artifactId><packaging>pom</packaging><modules><module>vdn-seata</module></modules></project>
1.6 新增网关模块(vdn-gateway)
vdn-gateway
是基于 Spring Cloud Gateway 实现的微服务网关模块,负责整个系统的流量管理与请求分发。它通过请求路由、负载均衡、限流熔断、鉴权过滤等功能,在微服务架构中充当统一入口,保障服务的安全性、稳定性和高效性。同时,vdn-gateway
支持全链路日志与监控功能,帮助开发者快速定位问题并优化系统性能,是系统稳定运行的核心组件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.vdn</groupId><artifactId>vdn-parent</artifactId><version>17.0.0-SNAPSHOT</version></parent><artifactId>vdn-gateway</artifactId><packaging>jar</packaging><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build></project>
1.7 新增依赖版本管理模块(vdn-dependencies)
vdn-dependencies
用于集中管理项目中的依赖和版本信息,确保依赖配置的统一性;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.vdn</groupId><artifactId>vdn-dependencies</artifactId><packaging>pom</packaging><version>17.0.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><knife4j.version>4.3.0</knife4j.version></properties><dependencyManagement><dependencies><dependency><groupId>com.vdn</groupId><artifactId>vdn-commons-swagger</artifactId><version>${project.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-gateway-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency></dependencies></dependencyManagement></project>
1.8 新增公共模块(vdn-commons)
目录结构
vdn-commons
├── vdn-commons-swagger
│ ├── src # Swagger 功能实现代码
│ └── pom.xml # Swagger 模块配置
└── pom.xml # 父工程配置
vdn-commons
是一个通用模块的父工程,旨在为项目提供公共功能支持和依赖管理。vdn-commons-swagger
集成了 Swagger 功能,能够自动生成 RESTful API 文档,为接口开发和测试提供便利。通过这两个子模块,vdn-commons
有效提升了项目的可维护性和开发效率。
完整目录
vdn-parent
├── .idea # IntelliJ IDEA 配置
├── vdn-commons # 公共模块
│ └── vdn-commons-swagger # Swagger 集成模块
├── vdn-dependencies # 依赖版本管理模块
├── vdn-gateway # 网关模块
│ ├── src # 业务逻辑代码
│ └── pom.xml # Maven 配置文件
├── vdn-module # 功能模块
│ └── vdn-seata # 分布式事务管理模块
│ └── pom.xml
├── vdn-monitor # 服务监控模块
│ ├── src
│ └── pom.xml
├── vdn-system # 系统管理模块
│ ├── vdn-system-api # 公共 API 模块
│ └── vdn-system-biz # 业务处理模块
│ └── pom.xml
├── .gitignore # Git 忽略文件配置
└── pom.xml # 父工程配置文件
技术亮点
- 模块化设计:分层清晰,职责明确,便于后续扩展与维护。
- 分布式支持:通过 Nacos 和 Seata 实现服务注册发现与分布式事务管理。
- 统一网关:
vdn-gateway
作为统一入口,保障了系统的安全性和稳定性。 - 高效监控:
vdn-monitor
提供实时监控,便于问题定位和系统优化。 - 开发规范:依赖集中管理,API 文档统一,提升了开发效率与可维护性。
总结
vdn-parent
工程通过结合 Spring Cloud 全家桶及相关技术栈,构建了一套完整的微服务解决方案。它涵盖了从基础设施、服务管理到业务处理的全链路支持,为企业级应用的开发、部署和运维提供了强有力的技术保障。
链接
上一篇:🔗企业微服务架构的最佳选择:为什么是 Spring Cloud Alibaba?
下一篇:🔗VDN 微服务架构搭建篇(二)服务注册与配置中心Nacos
🔗最新代码已更新