作者
发布于 2025-12-24 / 3 阅读
0

电商微服务平台

【架构实战】从零搭建电商微服务平台:Spring Cloud Alibaba 全栈实践

本文分享一个完整的电商微服务系统设计与实现,涵盖 10+ 核心服务模块,采用 Spring Cloud Alibaba 技术栈,支持高并发、高可用场景。


一、项目概述

1.1 业务背景

随着业务规模扩大,单体架构已无法满足电商系统的高并发需求。本项目将单体应用拆分为微服务架构,实现服务独立部署、弹性伸缩。

1.2 核心数据

  • 服务数量:10+ 个微服务
  • 技术栈:Spring Cloud Alibaba + Nacos + Gateway + Seata
  • 部署方式:Docker 容器化 + Docker Compose
  • 数据库:MySQL + Redis

二、架构设计

2.1 整体架构图

┌─────────────────────────────────────────────────────────┐
│                      前端层                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐ │
│  │   Web 商城   │  │  管理后台   │  │   Flutter APP   │ │
│  │   (React)   │  │   (React)   │  │                 │ │
│  └──────┬──────┘  └──────┬──────┘  └────────┬────────┘ │
└─────────┼────────────────┼──────────────────┼──────────┘
          │                │                  │
          └────────────────┴──────────────────┘
                             │
                    ┌────────┴────────┐
                    │   API Gateway   │  ← 统一入口、鉴权、限流
                    │   (Spring Cloud)│
                    └────────┬────────┘
                             │
        ┌────────────────────┼────────────────────┐
        │                    │                    │
   ┌────┴────┐         ┌────┴────┐         ┌────┴────┐
   │ 用户服务 │         │ 商品服务 │         │ 订单服务 │
   │  (User) │         │(Product)│         │ (Order) │
   └────┬────┘         └────┬────┘         └────┬────┘
        │                    │                    │
   ┌────┴────┐         ┌────┴────┐         ┌────┴────┐
   │ 购物车  │         │ 分类服务 │         │ 支付服务 │
   │  (Cart) │         │(Category)│         │(Payment)│
   └─────────┘         └─────────┘         └─────────┘

2.2 服务划分

服务名职责关键技术
gatewayAPI 网关Spring Cloud Gateway、限流、鉴权
user-service用户管理JWT、OAuth2、短信登录
product-service商品管理商品 SKU、库存管理
order-service订单处理订单状态机、幂等性设计
cart-service购物车Redis 缓存、合并逻辑
payment-service支付中心支付宝/微信接入、回调处理
category-service商品分类树形结构、层级缓存
admin-service管理后台RBAC 权限、数据报表
shopWeb 前端React、Ant Design

三、核心技术亮点

3.1 分布式事务 - Seata TCC 模式

电商场景下,订单创建涉及库存扣减、优惠券使用等多个服务。采用 Seata TCC 模式保证数据一致性:

// TCC 三阶段:Try - Confirm - Cancel
@LocalTCC
public interface InventoryTccAction {
    @TwoPhaseBusinessAction(name = "inventoryDeduct")
    boolean tryDeduct(@BusinessActionContextParameter(paramName = "productId") Long productId,
                      @BusinessActionContextParameter(paramName = "count") Integer count);
    
    boolean commit(BusinessActionContext context);
    
    boolean rollback(BusinessActionContext context);
}

3.2 熔断限流 - Sentinel

防止雪崩效应,保护核心服务:

  • QPS 限流:商品详情接口限流 1000 QPS
  • 线程隔离:订单服务独立线程池
  • 熔断降级:库存服务异常时返回默认库存

3.3 服务注册与配置中心 - Nacos

  • 服务动态发现与注册
  • 配置集中管理,支持热更新
  • 命名空间隔离(开发/测试/生产)

3.4 API 网关统一入口

  • 路由转发:根据路径路由到不同服务
  • 统一鉴权:JWT Token 验证
  • 限流控制:基于 Sentinel 的网关限流

架构设计亮点


四、数据库设计

4.1 分库分表策略

  • 用户库:按用户 ID 分片
  • 订单库:按时间维度分表(每月一表)
  • 商品库:读写分离,主从同步

4.2 缓存策略

  • Redis 缓存:商品详情、分类树
  • 本地缓存:Caffeine 缓存热点数据
  • 缓存一致性:Canal 监听 MySQL binlog 同步

五、部署架构

5.1 Docker Compose 一键部署

version: '3'
services:
  gateway:
    image: ecommerce/gateway:latest
    ports:
      - "8080:8080"
    depends_on:
      - nacos
      - redis
      - mysql
  
  user-service:
    image: ecommerce/user-service:latest
    environment:
      - NACOS_SERVER=nacos:8848
  
  # ... 其他服务

5.2 环境隔离

  • 开发环境:本地 Docker Compose
  • 测试环境:独立命名空间
  • 生产环境:K8s 集群部署(预留)

六、项目成果

✅ 已完成功能

  • 完整的用户注册/登录体系(手机号+验证码)
  • 商品管理(SPU/SKU、库存、上下架)
  • 购物车(增删改查、全选、合并)
  • 订单系统(创建、支付、发货、收货、退款)
  • 支付接入(支付宝沙箱环境)
  • 管理后台(商品/订单/用户管理、数据报表)

✅ 技术亮点

  • 微服务架构,服务独立部署
  • 分布式事务保证数据一致性
  • 多级缓存提升性能
  • 熔断限流保障稳定性

七、总结与展望

本项目从零搭建了一个完整的电商微服务系统,通过服务拆分解决了单体应用的扩展性问题。在实际开发中,我们深刻体会到:

  1. 服务粒度:不宜过细,避免分布式事务复杂度
  2. 监控告警:微服务需要完善的链路追踪和监控
  3. 团队协作:API 契约管理很重要

技术交流:欢迎在评论区交流微服务架构设计心得!