下载工作台
Spring Cloud 微服务

毕业项目:svc-spring 微服务

试读上半部分 · 解锁后可读全文

第 12 章 · 毕业项目:svc-spring 微服务

本章目标:在 ch01~ch11 基础上,独立交付 svc-spring-demo 微服务毕业项目;整合 Nacos、Gateway、Feign、Stream、Seata、BFF、Tracing、OAuth2、契约测试;按 7 天计划实施;通过 100 分验收表自评;完成 Gateway 冒烟与答辩演示;对照 shop-spring-demo 单体 MVP 说明架构演进。

学时建议:7 天 × 6~8 小时(合计 42~56 小时)

前置:完成 spring-cloud-web ch01~ch11spring-boot-web ch12 单体毕业项目经验。


12.1 项目背景与边界

svc-spring-demo 是虚构的「贤紫电商微服务练习平台」,将 shop-spring-demo 拆分为可独立部署的服务,统一经 https://api.example.com 对外。

┌─────────────────────────────────────────────────────────────────┐
│              svc-spring-demo 毕业项目(本章)                     │
├──────────┬──────────┬──────────┬──────────┬────────────────────┤
│ user-svc │product-svc│order-svc │inventory │ gateway + bff      │
│ 认证资料  │ 商品 CRUD │ 下单流程  │ 库存异步  │ 入口聚合 + 鉴权     │
├──────────┴──────────┴──────────┴──────────┴────────────────────┤
│ Nacos │ RabbitMQ │ Seata TC │ Zipkin │ auth-svc │ Redis          │
└─────────────────────────────────────────────────────────────────┘
模块毕业必须不做(ch13~ch19 进阶)
服务拆分至少 4 业务服务 + gatewayIstio 服务网格全量
注册配置Nacos 发现 + 共享配置配置加密 KMS
网关路由、CORS、限流、JWT灰度权重(ch15)
调用OpenFeign + 熔断gRPC
消息订单创建事件 → 库存/通知CQRS 读模型(ch16)
事务Seata AT 教学演示 或 消息最终一致二选一TCC 生产级
BFF订单详情聚合多 BFF(移动/Web)
可观测Zipkin + ActuatorGrafana 告警(ch18)
测试契约或 WireMock + 冒烟脚本全链路压测(ch17)
严禁真实内网地址、生产密钥、客户数据。统一 api.example.comnacos.example.com

12.2 技术栈与仓库结构

svc-spring-demo/                    # Maven 父工程
├── pom.xml                         # dependencyManagement, Spring Cloud 2023
├── svc-common/                     # DTO, Result, 错误码, Feign 接口(可选)
├── gateway-svc/
├── bff-svc/
├── auth-svc/                       # OAuth2 授权服务器(简化)
├── user-svc/
├── product-svc/
├── order-svc/
├── inventory-svc/
├── notify-svc/                     # 消息消费者(选修)
├── deploy/
│   ├── docker-compose.infra.yml    # Nacos, MySQL×N, Redis, RabbitMQ, Zipkin, Seata
│   ├── docker-compose.apps.yml     # 各服务镜像
│   └── k8s/                        # ch19 占位
├── docs/
│   ├── ARCHITECTURE.md
│   ├── API.md
│   ├── RUNBOOK.md
│   └── SELF_REVIEW.md              # 100 分表
└── scripts/
    ├── smoke-svc.sh
    └── init-db.sql
组件版本基线
JDK21
Spring Boot3.2+ / 3.3+
Spring Cloud2023.0.x
Spring Cloud Alibaba2023.0.x

12.3 核心 API 清单(经 Gateway)

方法路径服务说明
POST/oauth/tokenauth-svc获取 JWT(教学)
POST/api/v1/auth/registeruser-svc注册
GET/api/v1/productsproduct-svc分页列表
POST/api/v1/productsproduct-svc创建(ADMIN)
POST/api/v1/ordersorder-svc创建订单
GET/api/v1/orders/meorder-svc我的订单
GET/bff/v1/orders/{id}/detailbff-svc聚合详情
GET/actuator/health各服务健康检查

12.4 七天实施计划

目标交付物
D1基础设施docker-compose.infra.yml 启动 Nacos/MySQL/Redis/RabbitMQ
D2核心服务user-svc + product-svc 注册 Nacos,Gateway 路由通
D3订单链路order-svc + Feign 调商品/用户,熔断配置
D4异步与库存Stream 事件,inventory-svc 消费扣库存
D5事务/BFFSeata 演示或确认消息幂等;bff-svc 订单详情
D6安全与追踪auth-svc JWT;Zipkin 全链路;契约测试 1 组
D7文档与答辩冒烟脚本、架构图、100 分自评、演示录屏

每日结束运行 scripts/smoke-svc.sh(可逐步扩展用例)。


12.5 数据隔离

服务数据库表(示例)
user-svcuser_dbusers
product-svcproduct_dbproducts
order-svcorder_dborders, order_items
inventory-svcinventory_dbstock, undo_log

禁止跨库 JOIN;需要数据时走 Feign 或事件同步。


以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。