一、父工程 `pom.xml`(根目录)

Article detail

后端

2026/4/20 · 68 分钟阅读

一、父工程 pom.xml(根目录)

你刚才贴的那份配置有几个不一致的地方:父工程 groupIdcom.flashsale,但子模块里又出现了 com.pingguomiaonmiao,而且 artifactId 也有写错的地方(比如 seckill-core 引用了自己)。下面我按你的目录名 Seckill-Cloud 重新整理一份完全对齐、可以直接复制粘贴的配置。


一、父工程 pom.xml(根目录)

<?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.seckillcloud</groupId>
    <artifactId>seckill-cloud</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>
    <name>Seckill-Cloud</name>
    <description>分布式高并发秒杀系统</description>

    <!-- 子模块 -->
    <modules>
        <module>seckill-common</module>
        <module>seckill-core</module>
        <module>seckill-gateway</module>
    </modules>

    <properties>
        <java.version>17</java.version>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <spring-boot.version>3.5.4</spring-boot.version>
        <spring-cloud.version>2025.0.0</spring-cloud.version>
        <spring-cloud-alibaba.version>2025.0.0.0</spring-cloud-alibaba.version>

        <rocketmq.version>2.3.4</rocketmq.version>
        <mybatis-plus.version>3.5.9</mybatis-plus.version>
        <shardingsphere.version>5.5.0</shardingsphere.version>

        <hutool.version>5.8.44</hutool.version>
        <mapstruct.version>1.6.3</mapstruct.version>
        <lombok.version>1.18.40</lombok.version>
        <guava.version>33.5.0-jre</guava.version>
        <commons-lang3.version>3.19.0</commons-lang3.version>
        <okhttp.version>4.12.0</okhttp.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <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.baomidou</groupId>
                <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.shardingsphere</groupId>
                <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
                <version>${shardingsphere.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-spring-boot-starter</artifactId>
                <version>${rocketmq.version}</version>
            </dependency>

            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${okhttp.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.11.0</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>${mapstruct.version}</version>
                            </path>
                            <path>
                                <groupId>org.springframework.boot</groupId>
                                <artifactId>spring-boot-configuration-processor</artifactId>
                                <version>${spring-boot.version}</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

二、seckill-common/pom.xml

<?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.seckillcloud</groupId>
        <artifactId>seckill-cloud</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>seckill-common</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies>
</project>

三、seckill-core/pom.xml

<?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.seckillcloud</groupId>
        <artifactId>seckill-cloud</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>seckill-core</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <!-- 公共模块 -->
        <dependency>
            <groupId>com.seckillcloud</groupId>
            <artifactId>seckill-common</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Spring Boot Starters -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <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>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

        <!-- 数据库 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
        </dependency>

        <!-- Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

        <!-- ShardingSphere -->
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
        </dependency>

        <!-- 工具库 -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>

        <!-- MapStruct -->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
        </dependency>

        <!-- 开发辅助 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- 测试 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

四、seckill-gateway/pom.xml(网关模块,可选)

<?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.seckillcloud</groupId>
        <artifactId>seckill-cloud</artifactId>
        <version>1.0.0</version>
    </parent>

    <artifactId>seckill-gateway</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <!-- Spring Cloud Gateway(基于 WebFlux,不要引入 spring-boot-starter-web) -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <!-- Nacos 服务发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- 负载均衡 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

        <!-- Sentinel 网关限流 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

五、修正说明(与你之前贴出的版本对比)

问题点原配置修正后
父工程 groupIdcom.flashsalecom.seckillcloud(与项目名一致)
子模块 parent 引用出现 com.pingguomiaonmiao 等不一致统一为 com.seckillcloud
common 模块依赖引用seckill-core 依赖自己正确依赖 seckill-common
common 模块 artifactIdflashsale-commonseckill-common

六、启动验证

在根目录执行:

mvn clean compile

如果控制台输出 BUILD SUCCESS,说明配置完全正确,可以开始写业务代码了。

好的,这份组件清单可以直接用在你的 简历项目描述面试架构陈述 中。我按 分层 整理了每个组件在秒杀系统中的具体职责和选型理由。


🟢 一、基础框架层

组件核心作用在你的秒杀项目中具体负责什么
Spring Boot 3.5.4应用快速搭建与自动配置整个项目的骨架,提供 Web 服务、依赖注入、监控端点。基于 JDK 17 运行,可利用虚拟线程提升吞吐量。
Spring Cloud Alibaba 2025.0.0.0微服务一站式解决方案集成阿里云原生中间件,让 服务注册、配置管理、流量控制 开箱即用。

🔵 二、微服务治理层

组件核心作用在你的秒杀项目中具体负责什么
Nacos服务注册发现 + 动态配置中心1. 注册中心:让 seckill-coreseckill-gateway 互相发现。
2. 配置中心:动态调整 Sentinel 限流阈值、RocketMQ Topic 配置,无需重启应用
Sentinel流量控制 + 熔断降级秒杀核心保护神
1. 热点参数限流:针对爆款商品 ID 单独限制 QPS。
2. 系统自适应限流:当 CPU 负载过高时自动拦截请求。
Spring Cloud Gateway统一 API 网关所有前端请求的 总入口,负责:
1. 路由转发到 seckill-core
2. 配合 Sentinel 做 网关层限流(直接拒绝无效流量,保护后端)。

🟡 三、数据持久化与缓存层

组件核心作用在你的秒杀项目中具体负责什么
MySQL 8.0关系型数据最终落盘存储 订单记录、商品详情、用户信息 等需要持久化的数据。
MyBatis-Plus 3.5.9ORM 增强工具简化单表 CRUD,提供 Lambda 查询 避免字段硬编码,内置分页插件。
ShardingSphere-JDBC 5.5.0分库分表中间件应对海量订单:将订单表按用户 ID 哈希拆分到多个物理库表,避免单表数据过大导致查询性能下降。
Redis 7.x (Lettuce 客户端)高性能分布式缓存1. 原子库存扣减:利用 Lua 脚本 保证查询与扣减的原子性,杜绝超卖。
2. 热点数据缓存:商品信息预热到 Redis,减少数据库压力。
3. 分布式锁:Redisson 实现任务调度防重。

🔴 四、异步消息与分布式事务层

组件核心作用在你的秒杀项目中具体负责什么
RocketMQ 5.x高吞吐消息队列1. 削峰填谷:秒杀请求先发 MQ,后端平滑消费写库,防止数据库瞬时压力过大
2. 事务消息:扣库存成功后,异步发放优惠券/增加积分,通过 回查机制 保证最终一致性。

🟣 五、辅助工具与对象映射

组件核心作用在你的秒杀项目中具体负责什么
美团 Leaf分布式全局唯一 ID 生成生成订单号:采用 号段模式(双 Buffer 机制),在数据库宕机时仍能支撑 10-20 分钟 ID 发放,单机 QPS 可达 5 万。
MapStruct 1.6.3对象属性拷贝高效转换 DTO -> Entity -> VO编译期生成代码,性能比 BeanUtils 高 10-20 倍。
Hutool 5.8.44Java 万能工具包处理日期格式化、UUID 生成、文件操作、JSON 解析,减少重复造轮子。
Lombok 1.18.40简化样板代码@Data@Builder@Slf4j 注解自动生成 Getter/Setter、日志对象,保持代码整洁。
Guava 33.5.0Google 核心工具库用于 本地缓存 (Cache) 防止 Redis 热 Key 击穿,以及不可变集合。

⚙️ 六、部署与运维支撑

组件核心作用在你的秒杀项目中具体负责什么
Docker容器化封装seckill-core.jar 打包成镜像,统一运行环境。
JMeter性能压测模拟 2000+ 并发秒杀场景,验证系统 QPS 与 P99 延迟。
SkyWalking / Prometheus全链路监控追踪一次秒杀请求在 Nacos -> Gateway -> Core -> MQ -> DB 的全链路耗时。

💡 面试官追问时,你可以这样总结一句话:

“这套架构的核心思路是 流量前置拦截 + 异步削峰 + 最终一致性:用 Sentinel 在网关和服务层挡住非法/过量流量;用 Redis + Lua 扛住读库存的热点压力;用 RocketMQ 将写订单的峰值压力抹平;用 LeafShardingSphere 解决海量数据的 ID 生成与存储扩展问题。”

需要我把上面这些组件的关系画成一张 架构图 发给你吗?面试时照着图讲会更有条理。

评论

动作测试