00.2技术栈介绍

分类: 课程介绍与技术栈概览

技术栈介绍

在开始构建微服务系统之前,我们需要了解本课程使用的技术栈。技术栈的选择直接影响系统的性能、可维护性和扩展性。本课程选择了当前最先进、最稳定的技术组合。

本节将介绍:Java 21 的特性概览、Spring 6 框架介绍、Spring Boot 3 核心特性、Spring Cloud Alibaba 生态体系,以及数据库与中间件选型。

Java 21 特性概览

Java 21 是 Oracle 在 2023 年 9 月发布的 LTS(长期支持)版本,是继 Java 17 之后的第二个 LTS 版本。

为什么选择 Java 21?

核心特性:

  1. Virtual Threads(虚拟线程):轻量级线程,大幅提升并发性能
  2. Record 类型:简化数据类的定义
  3. Pattern Matching:模式匹配,简化条件判断
  4. Sealed Classes:密封类,限制类的继承
  5. String Templates:字符串模板,简化字符串拼接

官方文档

Spring 6 框架介绍

Spring 6 是 Spring 框架的最新主版本,于 2022 年 11 月发布。它要求 Java 17+,并引入了许多新特性。

Spring 6 核心特性

主要改进:

  1. Java 17+ 支持:充分利用 Java 17+ 的新特性
  2. 响应式编程增强:更好的 WebFlux 和响应式数据访问支持
  3. AOT(Ahead-of-Time)编译:支持 GraalVM 原生镜像
  4. 性能优化:启动速度更快,内存占用更低

官方文档与核心特性

根据 Spring 6 官方文档新特性说明,Spring 6 的核心特性包括:

  1. Java 17+ 最低版本要求:Spring 6 要求 Java 17 作为最低版本,这是 Spring 框架历史上首次要求如此高的 Java 版本。这一要求使得 Spring 6 能够充分利用 Java 17+ 的新特性,如 Records、Pattern Matching、Sealed Classes、Text Blocks 等,提升开发效率和代码质量。

  2. AOT(Ahead-of-Time)编译支持:Spring 6 引入了对 GraalVM Native Image 的原生支持,通过 AOT 编译可以将 Spring 应用编译为原生镜像。根据官方文档,原生镜像的启动速度可以提升 10 倍以上,内存占用减少 50% 以上,特别适合云原生和 Serverless 场景。

  3. 响应式编程增强:Spring 6 对 WebFlux 和响应式数据访问进行了重大改进,提供了更好的响应式编程支持。官方文档中提到,Spring 6 优化了响应式堆栈的性能,改进了 Project Reactor 的集成,使得响应式应用能够更好地处理高并发场景。

参考资源

Spring Boot 3 核心特性

Spring Boot 3 是 Spring Boot 的最新主版本,于 2022 年 11 月发布。它基于 Spring 6,要求 Java 17+。

Spring Boot 3 核心特性

主要特性:

  1. 原生镜像支持:支持 GraalVM Native Image,启动速度提升 10 倍以上
  2. 可观测性增强:内置 Micrometer,更好的指标和追踪支持
  3. 配置属性改进:类型安全的配置属性,更好的 IDE 支持
  4. 依赖升级:升级到 Jakarta EE 9+,移除对 javax 的支持

官方文档与核心特性

根据 Spring Boot 3 官方文档3.0 版本发布说明,Spring Boot 3 的核心特性包括:

  1. 原生镜像支持(Native Image):Spring Boot 3 全面支持 GraalVM Native Image,可以将应用编译为原生可执行文件。根据官方测试数据,原生镜像的启动时间可以从数秒降低到毫秒级别,内存占用显著减少,特别适合容器化和 Serverless 部署场景。官方文档提供了详细的 AOT 编译指南和最佳实践。

  2. 可观测性增强(Observability):Spring Boot 3 内置了 Micrometer 作为指标收集框架,提供了开箱即用的可观测性支持。官方文档中提到,Spring Boot 3 改进了指标导出、分布式追踪和日志聚合的集成,使得应用监控变得更加简单和统一。

  3. Jakarta EE 9+ 迁移:Spring Boot 3 完全迁移到 Jakarta EE 9+,所有 javax.* 包名都改为 jakarta.*。这是 Java EE 向 Jakarta EE 演进的重要里程碑。官方文档详细说明了迁移步骤和注意事项,帮助开发者平滑过渡。

参考资源

Spring Cloud Alibaba 生态体系

Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,提供了微服务开发所需的组件。

Spring Cloud Alibaba 组件架构

核心组件:

  1. Nacos:服务注册与发现、配置中心
  2. Sentinel:流量控制、熔断降级
  3. Seata:分布式事务解决方案
  4. RocketMQ:消息队列
  5. Dubbo:RPC 框架(可选)

官方文档与核心特性

根据 Spring Cloud Alibaba 官方文档版本说明,Spring Cloud Alibaba 的核心特性包括:

  1. 核心组件功能概述:Spring Cloud Alibaba 提供了一站式微服务解决方案,核心组件包括:

    • Nacos:同时提供服务注册与发现、配置中心两大功能,支持动态服务实例管理和配置热刷新
    • Sentinel:提供流量控制、熔断降级、系统自适应保护等能力,支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Dubbo 等多种调用方式
    • Seata:分布式事务解决方案,支持 AT、TCC、SAGA 等事务模式,保证跨服务数据一致性
    • RocketMQ:高可靠消息中间件,支持事件驱动架构和消息总线模式
  2. 版本兼容性矩阵:官方文档明确列出了 Spring Cloud Alibaba 与 Spring Boot、Spring Cloud 的版本对应关系。例如:

    • 2022.0.0.0 版本对应 Spring Cloud 2022.0.x 和 Spring Boot 3.0.x
    • 2021.0.5.0 版本对应 Spring Cloud 2021.0.x 和 Spring Boot 2.6.x 选择正确的版本组合对于项目稳定性至关重要。
  3. 与 Spring Cloud Netflix 的对比优势:Spring Cloud Alibaba 作为 Spring Cloud 的第二代实现,相比 Spring Cloud Netflix(Eureka、Ribbon、Hystrix 等已进入维护模式),提供了更现代、更稳定、性能更好的组件。官方文档强调,Spring Cloud Alibaba 在生产环境中经过大规模验证,特别适合国内企业使用。

参考资源

数据库与中间件选型

数据库:MySQL + MyBatis-Plus

MySQL

  • 成熟稳定的关系型数据库
  • 支持 ACID 事务
  • 广泛使用,生态完善

MyBatis-Plus

  • 基于 MyBatis 的增强工具
  • 简化 CRUD 操作
  • 支持代码生成

官方文档与核心特性

根据 MySQL 官方文档MyBatis-Plus 官方文档,核心特性包括:

  1. MySQL 8.0 关键特性

    • 窗口函数(Window Functions):MySQL 8.0 引入了窗口函数支持,可以进行复杂的数据分析和报表查询,大大提升了 SQL 的表达能力
    • 通用表表达式(CTE):支持 WITH 子句,使得复杂查询更加清晰和可维护
    • JSON 增强:提供了丰富的 JSON 函数和操作符,支持 JSON 数据的存储、查询和索引
    • 性能优化:官方文档显示,MySQL 8.0 在查询性能、并发处理能力方面相比 5.7 版本有显著提升
  2. MyBatis-Plus 核心功能

    • 代码生成器:MyBatis-Plus 提供了强大的代码生成器,可以根据数据库表结构自动生成 Entity、Mapper、Service、Controller 等代码,大幅提升开发效率
    • CRUD 简化:通过继承 BaseMapper 接口,无需编写 XML 即可实现基本的 CRUD 操作,支持 Lambda 表达式查询,类型安全且代码简洁
    • 分页插件:内置分页插件,支持多种数据库,使用简单,性能优秀

参考资源

消息队列:RocketMQ

RocketMQ

  • 阿里巴巴开源的消息队列
  • 支持事务消息、顺序消息、延时消息
  • 高性能、高可用

官方文档与核心特性

根据 RocketMQ 官方文档,RocketMQ 的核心特性包括:

  1. 丰富的消息类型支持

    • 事务消息:RocketMQ 提供了事务消息机制,可以保证本地事务和消息发送的一致性,特别适合分布式事务场景
    • 顺序消息:支持全局顺序和分区顺序两种模式,保证消息的有序消费,适合需要保证顺序的业务场景
    • 延时消息:支持消息延时投递,可以设置消息在指定时间后消费,适合定时任务、订单超时等场景
    • 批量消息:支持批量发送和消费,提升吞吐量
  2. 高性能和高可用特性

    • 高吞吐量:官方文档显示,RocketMQ 单机可以支持百万级消息吞吐,适合高并发场景
    • 高可用架构:支持主从复制、多副本机制,保证消息不丢失
    • 消息过滤:支持基于 Tag、SQL 表达式等多种过滤方式,灵活高效
    • 消息轨迹:提供完整的消息轨迹追踪功能,便于问题排查和监控

参考资源

可选组件

Redis(可选):

  • 缓存数据库
  • 提升系统性能
  • 支持分布式锁

官方文档与核心特性

根据 Redis 官方文档,Redis 的核心特性包括:

  1. 丰富的数据结构支持

    • String:最基本的键值对类型,支持字符串操作和数值计算
    • Hash:适合存储对象,可以单独操作对象的字段
    • List:有序列表,支持队列和栈操作
    • Set:无序集合,支持集合运算(交集、并集、差集)
    • Sorted Set:有序集合,支持范围查询和排序
    • Stream:Redis 5.0+ 引入的流数据结构,支持消息队列功能
  2. 持久化机制

    • RDB(Redis Database):定期快照持久化,适合备份和灾难恢复,恢复速度快
    • AOF(Append Only File):记录所有写操作,数据更安全,但文件较大
    • 混合持久化:Redis 4.0+ 支持 RDB + AOF 混合模式,兼顾性能和安全性

参考资源

技术栈版本兼容性

版本要求:

  • Java:21(LTS)
  • Spring:6.x
  • Spring Boot:3.x
  • Spring Cloud Alibaba:2022.0.0.0+

注意:版本兼容性非常重要。不同版本之间可能存在不兼容的情况。课程中会详细说明如何查看和选择正确的版本。

技术栈选择理由

为什么选择这些技术?

  1. Java 21

    • LTS 版本,长期支持
    • 性能提升明显
    • 新特性丰富
  2. Spring Boot 3

    • 最新稳定版本
    • 原生镜像支持
    • 可观测性增强
  3. Spring Cloud Alibaba

    • 国内企业广泛使用
    • 组件完善
    • 文档丰富
  4. MySQL + MyBatis-Plus

    • 成熟稳定
    • 学习成本低
    • 生态完善

本节小结

在本节中,我们了解了:

第一个是 Java 21 特性。 LTS 版本,性能提升明显,新特性丰富,是当前最佳选择。

第二个是 Spring 6 框架。 基于 Java 17+,支持 AOT 编译,响应式编程增强。

第三个是 Spring Boot 3。 原生镜像支持,可观测性增强,配置改进。

第四个是 Spring Cloud Alibaba。 提供完整的微服务解决方案,包括 Nacos、Sentinel、Seata 等组件。

第五个是数据库与中间件。 MySQL + MyBatis-Plus 用于数据持久化,RocketMQ 用于消息队列。

这就是技术栈介绍。理解这些技术栈,是开始构建微服务系统的基础。

在下一节,我们将预览项目的最终架构设计,了解我们将构建什么样的微服务系统。