SpringBoot + SpringCloud Alibaba 项目全技术栈解析

你的 SpringBoot + SpringCloud Alibaba 项目全技术栈解析

 
我把所有依赖分成 核心框架、数据库、微服务、中间件、工具类、文件处理、日志监控、云存储、权限 / 工具 几大类,方便你理解。
 

 

一、核心框架(项目地基)

 

Spring Boot

 
  • 自动配置、内嵌服务器、统一开发规范
  • 项目启动、配置加载、Bean 管理、Web 容器全靠它
 

Spring Cloud Alibaba

 
  • 微服务一站式解决方案
  • 包含:服务注册发现、配置中心、限流降级、分布式事务等
 

spring-boot-autoconfigure

 
  • Spring Boot 自动配置核心包
  • 帮你自动装配各种组件,不用手写 XML
 

spring-boot-autoconfigure-processor

 
  • 编译时生成自动配置元数据
  • IDE 提示配置项用
 

spring-boot-configuration-processor

 
  • 自定义配置类自动提示支持
  • @ConfigurationProperties 在 yml 里有提示
 

 

二、数据库 & ORM(数据持久化)

 

MyBatis-Plus

 
  • MyBatis 增强工具,不用写 CRUD
  • 分页、条件构造器、逻辑删除、乐观锁
 

mybatis-plus-join-boot-starter

 
  • MyBatis-Plus 多表连接查询插件
  • 支持连表查询,不用写复杂 SQL
 

mybatis-plus-generator

 
  • 代码生成器
  • 一键生成 controller/service/mapper/entity
 

dynamic-datasource-spring-boot-starter

 
多数据源切换
 
  • 同时连 MySQL、SqlServer 等多个库
  • 注解 @DS 切换数据源
 

mysql-connector-java

 
MySQL 官方 JDBC 驱动
 

mssql-jdbc

 
SqlServer 官方 JDBC 驱动
 

validation-api / hibernate-validator

 
参数校验框架
 
  • @NotBlank@NotNull@Email
  • 接口入参自动校验,减少 if-else
 

 

三、微服务通信 & 服务治理

 

spring-cloud-starter-openfeign

 
微服务之间 HTTP 调用
 
  • 声明式调用,像调用本地方法一样调别的服务
 

spring-cloud-starter-loadbalancer

 
Spring Cloud 官方负载均衡
 
  • 多实例下自动选择节点调用
 

feign-httpclient / okhttp / httpclient

 
Feign 底层 HTTP 客户端增强
 
  • 提升调用性能、支持连接池
 

httpmime

 
文件上传、multipart 协议支持
 

nacos

 
服务注册中心 + 配置中心
 
  • 服务注册发现
  • 配置动态刷新
 

sentinel

 
限流、熔断、降级
 
  • 保护微服务不被流量打崩
  • 接口限流、熔断降级、系统负载保护
 

 

四、中间件(缓存、消息、搜索引擎)

 

Redis

 
缓存、分布式锁、限流
 
  • 加速查询、减轻 DB 压力
 

RabbitMQ

 
消息队列
 
  • 异步、解耦、削峰
  • 订单、通知、日志异步处理
 

ES(Elasticsearch)

 
搜索引擎、日志存储、全文检索
 

kibana

 
ES 可视化界面
 
  • 查看日志、数据统计
 

nginx

 
反向代理、负载均衡、静态资源部署
 
  • 统一入口、HTTPS、跨域
 

 

五、日志 & 监控(企业必备)

 

filebeat

 
日志采集
 
  • 把本地日志发送到 logstash / ES
 

logstash

 
日志处理、清洗、转发
 

skywalking

 
分布式链路追踪 APM
 
  • 查看微服务调用链路
  • 性能分析、慢接口定位
 

logstash-logback-encoder

 
日志按 JSON 格式输出,方便 logstash 解析
 

apm-toolkit-logback-1.x

 
SkyWalking 日志埋点
 
  • 日志中自动携带 traceId 方便追踪
 

 

六、工具类 & 通用组件(开发效率神器)

 

lombok

 
  • @Data @Slf4j 省略 getter/setter/ 构造器
  • 大幅减少代码量
 

hutool-core

 
Java 工具包大全
 
  • 字符串、日期、加密、IO、集合工具
 

fastjson / jackson-databind

 
JSON 序列化 / 反序列化
 

knife4j-openapi3-spring-boot3-starter

 
接口文档 Swagger 增强版
 
  • 自动生成接口文档
  • 支持在线调试
 

guava

 
Google 工具库
 
  • 缓存、集合、限流工具
 

jjwt

 
JWT 登录鉴权
 
  • 生成 / 解析 Token
 

uuid-creator

 
分布式 UUID 生成
 

jsoup

 
HTML 解析、爬虫工具
 

freemarker

 
模板引擎
 
  • 代码生成器、邮件模板用
 

 

七、文件 & Excel & PDF 处理(业务常用)

 

easyexcel

 
阿里 Excel 工具
 
  • 读写大数据量 Excel,不 OOM
 

mapstruct

 
对象属性复制
 
  • DTO <-> Entity 转换,性能高
 

poi-tl / poi-ooxml-full

 
Word 文档生成、导出
 

itextpdf / itext-asian / flying-saucer-pdf

 
PDF 生成、中文支持
 

aspose-words / aspose-cells

 
Word/Excel 转 PDF 商业组件(功能强)
 

zip4j

 
压缩、解压 ZIP
 

imageio-webp

 
WebP 图片处理
 

 

八、云存储 & 对象存储

 

OSS

 
阿里云对象存储
 
  • 图片、文件上传
 

aws-java-sdk-s3 / core / kms

 
AWS S3 对象存储
 
  • 兼容 S3 协议的云存储
 

 

九、表达式引擎

 

aviator

 
高性能表达式引擎
 
  • 动态公式计算、规则引擎场景
 

 

总结:你的项目属于

 

标准企业级微服务架构(SpringCloud Alibaba 技术栈)

 
包含:
 
  • 微服务治理(Nacos + Sentinel + Feign)
  • 多数据源、MySQL + SqlServer
  • 缓存、消息队列
  • 日志平台(ELK)
  • 分布式追踪(SkyWalking)
  • 丰富的工具链、文件导出、云存储
  • 接口文档、参数校验、权限鉴权
 
这是目前国内互联网公司最主流、最稳定、最常用的技术体系。
 

 
如果你需要,我还能帮你:
 
  • 生成项目架构图
  • 生成标准项目分层结构
  • 生成pom.xml 完整依赖版本
  • 生成技术栈面试总结

 

springboot springcloud 项目技术栈

SpringBoot + SpringCloud 微服务项目标准技术栈

这是企业级生产环境最常用、最稳定的微服务技术栈组合(基于 SpringCloud 2021/2022 + SpringBoot 2.7/3.1 主流版本),分为核心框架、服务治理、服务通信、配置管理、网关、容错、监控、数据库、中间件、安全、工具等模块,直接可用于项目搭建。

一、核心基础框架

项目最底层依赖,所有微服务通用
xml
 
 
<!-- SpringBoot 核心(稳定版:2.7.15 / 3.1.5) -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.15</version>
</parent>

<!-- SpringCloud 版本(与Boot匹配:2021.0.5) -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
 
  • SpringBoot:自动配置、内嵌服务器、简化开发
  • SpringCloud:微服务规范与组件集合

二、服务注册与发现(服务治理)

微服务核心:服务注册、心跳、地址管理
  1. Nacos(阿里,首选,国内最主流)
    • 集注册中心 + 配置中心于一体
  2. Eureka(SpringCloud 原生,轻量)
  3. Consul(多语言支持)
推荐:Nacos
xml
 
 
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
 

三、统一配置中心

集中管理所有微服务配置(环境切换、动态刷新)推荐:Nacos Config
xml
 
 
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
 
备选:SpringCloud Config + Bus(消息总线刷新)

四、服务网关(统一入口)

所有请求统一入口、路由、限流、鉴权
  1. SpringCloud Gateway(官方推荐,响应式)
  2. Zuul(老版本,已停止维护)
推荐:Gateway
xml
 
 
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
 

五、服务间通信

微服务之间互相调用
  1. OpenFeign(声明式调用,最常用)
    xml
     
     
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    
     
     
  2. RestTemplate(原生,简单场景)
  3. WebClient(响应式)

六、服务容错 / 熔断 / 限流

防止服务雪崩、保护系统
  1. Sentinel(阿里,可视化控制台,首选)
    xml
     
     
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    
     
     
  2. Resilience4j(SpringCloud 官方推荐)
  3. Hystrix(过时,不推荐)

七、链路追踪

排查微服务调用链路、耗时、异常推荐:Sleuth + Zipkin
xml
 
 
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
 
企业级:SkyWalking、Pinpoint(全链路监控)

八、数据库与 ORM

  1. MySQL 8.0(主库)
  2. MyBatis-Plus(首选)
    xml
     
     
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3</version>
    </dependency>
    
     
     
  3. Druid/HiKariCP(数据库连接池)
  4. Redis(缓存、分布式锁)
    xml
     
     
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    
     
     

九、消息队列(异步 / 解耦 / 削峰)

  1. RabbitMQ(通用,稳定)
  2. RocketMQ(阿里,高吞吐)
  3. Kafka(大数据场景)
xml
 
 
<!-- RabbitMQ -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
 

十、分布式事务

微服务跨服务数据一致性
  1. Seata(阿里,简单易用)
  2. RocketMQ 事务消息

十一、权限与安全

  1. Spring Security + JWT(主流)
  2. Sa-Token(国产轻量,开发更快)
  3. OAuth2(第三方登录)

十二、服务监控与运维

  1. SpringBoot Admin(服务状态监控)
  2. Actuator(暴露监控端点)
  3. Prometheus + Grafana(生产级监控)
  4. Docker + K8s(容器部署)

十三、通用工具类

  1. Lombok(简化代码)
  2. Hutool(国产万能工具包)
  3. Knife4j/OpenAPI(接口文档)
  4. MapStruct(对象拷贝)

🔥 企业最简标准技术栈(直接照抄)

如果你要快速搭建项目,直接用这套最精简组合:
  1. SpringBoot 2.7.15
  2. SpringCloud 2021.0.5
  3. SpringCloud Alibaba
  4. Nacos(注册 + 配置)
  5. SpringCloud Gateway
  6. OpenFeign
  7. Sentinel
  8. MySQL + MyBatis-Plus
  9. Redis
  10. RabbitMQ
  11. Sleuth + Zipkin
  12. Security + JWT
  13. Docker

总结

  1. 这套技术栈国内 90% 互联网公司都在使用,稳定、生态完善、文档齐全
  2. 优先选择 SpringCloud Alibaba + Nacos + Sentinel 组合,适配国内业务
  3. 版本必须匹配,否则会出现依赖冲突(Boot 2.7.x 配 Cloud 2021.0.x)

 

-----------------------------------------------------------------------------------------

 

一、SpringBoot 微服务:所有都走网关?还是部分直接调用?

 

结论(企业通用标准)

 
  1. 外部请求(前端 / APP / 第三方)必须全部走网关
  2. 微服务之间内部调用(Feign / Dubbo / RestTemplate)不走网关,直接调用
  3. 消息队列(RabbitMQ/RocketMQ)完全不走网关,独立通信
 

 

1. 外部请求 → 必须走网关(Gateway/SpringCloud Gateway)

 
  • 前端页面、APP、H5、第三方接口调用
  • 统一入口:认证、鉴权、限流、黑白名单、日志、路由转发
  • 不能让外部直接访问微服务
 

2. 微服务之间内部调用 → 不走网关,直接调用

 
  • A 服务调用 B 服务:用 OpenFeign / RestTemplate 直接调用
  • 不走网关原因:
    • 网关多一层网络跳转,性能损耗
    • 内部服务信任彼此,不需要重复鉴权
    • 网关是给外部用的,不是内部 RPC 用的
     
 

3. 消息队列(RabbitMQ)→ 完全不走网关

 
  • 发消息、收消息是直接连接 MQ 服务器
  • 和网关、服务注册发现无关
  • 属于异步消息通信,独立体系
 

 

一句话总结(最关键)

 
  • 外部请求 → 网关 → 微服务
  • 服务间调用 → 直接调用(Feign)
  • 消息队列 → 不走网关,直连 MQ
 

 

二、RabbitMQ 延时队列(SpringBoot 完整可复制代码)

 

适用场景

 
  • 订单超时未支付取消
  • 验证码超时失效
  • 预约提醒
  • 延迟任务
 

原理

 
用 死信队列(DLX) 实现延时效果。
 

 

完整代码

 

1. pom.xml

 
xml
 
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
 
 

2. application.yml

 
yaml
 
 
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
 
 

3. 延时队列配置类(核心)

 
java
 
运行
 
 
 
 
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class RabbitDelayConfig {

    // 死信交换机
    public static final String DLX_EXCHANGE = "dlx.exchange";
    // 死信队列
    public static final String DLX_QUEUE = "dlx.queue";
    // 死信路由key
    public static final String DLX_ROUTING_KEY = "dlx.key";

    // 业务延时队列(TTL队列,消息过期后进入死信)
    public static final String TTL_QUEUE = "ttl.queue";
    public static final String TTL_EXCHANGE = "ttl.exchange";
    public static final String TTL_ROUTING_KEY = "ttl.key";

    // ==================== 死信队列 ====================
    @Bean
    public Queue dlxQueue() {
        return new Queue(DLX_QUEUE);
    }

    @Bean
    public DirectExchange dlxExchange() {
        return new DirectExchange(DLX_EXCHANGE);
    }

    @Bean
    public Binding dlxBinding() {
        return BindingBuilder.bind(dlxQueue())
                .to(dlxExchange())
                .with(DLX_ROUTING_KEY);
    }

    // ==================== 延时队列(TTL队列) ====================
    @Bean
    public Queue ttlQueue() {
        Map<String, Object> args = new HashMap<>();
        // 消息过期后进入的死信交换机
        args.put("x-dead-letter-exchange", DLX_EXCHANGE);
        // 死信路由key
        args.put("x-dead-letter-routing-key", DLX_ROUTING_KEY);
        // 默认统一延时时间(非必须,发送消息时可单独指定)
        // args.put("x-message-ttl", 30000); // 30秒
        return new Queue(TTL_QUEUE, true, false, false, args);
    }

    @Bean
    public DirectExchange ttlExchange() {
        return new DirectExchange(TTL_EXCHANGE);
    }

    @Bean
    public Binding ttlBinding() {
        return BindingBuilder.bind(ttlQueue())
                .to(ttlExchange())
                .with(TTL_ROUTING_KEY);
    }
}
 
 

4. 生产者(发送延时消息)

 
java
 
运行
 
 
 
 
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class DelayProducer {

    @Resource
    private RabbitTemplate rabbitTemplate;

    /**
     * 发送延时消息
     * @param msg 消息内容
     * @param delayMillis 延时毫秒数 例如 30000 = 30秒
     */
    public void sendDelayMsg(String msg, long delayMillis) {
        rabbitTemplate.convertAndSend(
                RabbitDelayConfig.TTL_EXCHANGE,
                RabbitDelayConfig.TTL_ROUTING_KEY,
                msg,
                message -> {
                    // 设置消息延时时间
                    message.getMessageProperties().setExpiration(String.valueOf(delayMillis));
                    return message;
                }
        );
        System.out.println("已发送延时消息:" + msg + " 延时:" + delayMillis + "ms");
    }
}
 
 

5. 消费者(监听死信队列)

 
java
 
运行
 
 
 
 
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

@Service
public class DelayConsumer {

    // 监听死信队列
    @RabbitListener(queues = RabbitDelayConfig.DLX_QUEUE)
    public void receiveDelayMsg(String msg) {
        System.out.println("延时时间到,收到消息:" + msg);
        // 这里执行超时逻辑:取消订单、失效验证码等
    }
}
 
 

 

三、测试调用

 
java
 
运行
 
 
 
 
@Autowired
private DelayProducer delayProducer;

// 延时30秒
delayProducer.sendDelayMsg("订单123456,30秒未支付将自动取消", 30000);
 
 

 

四、最终极简总结

 
  1. 外部 → 网关;服务内部调用 → 直连;MQ → 不走网关
  2. RabbitMQ 延时队列 = TTL 队列 + 死信队列
  3. 常用于:订单超时、任务延迟执行
 
需要我再给你:
 
  • 基于插件的精确延时队列(x-delay-message)
  • 订单超时取消完整业务示例
  • 高可用可靠消息(confirm、return 机制)

-----------------------------------------------------------------------------------------

 

-----------------------------------------------------------------------------------------

 

-----------------------------------------------------------------------------------------

 

-----------------------------------------------------------------------------------------

 

posted @ 2026-03-24 15:44  hanease  阅读(108)  评论(0)    收藏  举报