Spring Cloud 微服务环境搭建与工程初始化
开发环境准备
JDK 版本选择
Oracle 从 JDK 9 开始每半年发布一个新版本,老版本不再维护,但会有几个长期支持(LTS)版本。目前 LTS 版本包括 JDK 8、JDK 11、JDK 17 和 JDK 21。
为什么推荐 JDK 17? Spring Cloud 基于 Spring Boot 开发。Spring Boot 3.x 以下的版本官方已停止维护,而 Spring Boot 3.x 的基线要求是 JDK 17。因此,本文选用 JDK 17 作为开发环境。
案例设计与服务拆分
需求背景
我们要模拟一个电商平台的简化版。虽然真实场景功能复杂,但从架构角度看,核心在于如何拆分服务。如果将所有功能耦合在一个服务中,随着业务增长,系统会变得难以维护。微服务架构是解决高并发、大流量问题的有效方案。
拆分原则
微服务并非越小越好,需要平衡独立性与管理成本。拆分时建议遵循以下原则:
- 单一职责:每个微服务只负责一个特定业务领域,边界清晰。
- 服务自治:服务应能独立开发、测试、构建、部署和运行,拥有独立的存储和配置。
- 单向依赖:服务间避免循环依赖或双向依赖,保持调用链路的清晰。
架构设计没有标准答案,合适优于业界领先。避免过度设计,根据业务发展逐步演进。
服务划分示例
以订单列表为例,主要涉及订单信息和商品信息。依据单一职责原则,拆分为两个服务:
- 订单服务:提供订单 ID 及详细信息查询。
- 商品服务:根据商品 ID 返回商品详情。

数据准备
遵循服务自治原则,每个服务使用独立的数据库。
订单服务数据库
-- 建库
create database if not exists cloud_order charset utf8mb4;
-- 订单表
DROP TABLE IF EXISTS order_detail;
CREATE TABLE order_detail (
id INT NOT NULL AUTO_INCREMENT COMMENT '订单 id',
user_id BIGINT(20) NOT NULL COMMENT '用户 ID',
product_id BIGINT(20) COMMENT ,
num () COMMENT ,
price () COMMENT ,
delete_flag TINYINT() ,
create_time DATETIME now(),
update_time DATETIME now(),
(id)
) ENGINE INNODB utf8mb4 COMMENT ;
order_detail (user_id, product_id, num, price)
(, , , ), (, , , ), (, , , ),
(, , , ), (, , , ), (, , , );




