电商系统架构设计实战

系列导读:本篇将深入讲解电商系统的架构设计与核心实现。


文章目录


目录


一、电商系统概述

1.1 业务架构

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    电商业务架构                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  用户中心:注册、登录、会员                                  │
│  商品中心:商品、库存、分类                                  │
│  订单中心:下单、支付、退款                                  │
│  营销中心:优惠券、活动、秒杀                                │
│  物流中心:发货、配送、签收                                  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

1.2 技术架构

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    电商技术架构                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    网关层                           │   │
│  │              Nginx + Kong / APISIX                  │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    应用层                           │   │
│  │    用户服务 │ 商品服务 │ 订单服务 │ 支付服务        │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                 │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    数据层                           │   │
│  │      MySQL │ Redis │ ES │ MongoDB                  │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

二、核心架构设计

2.1 微服务拆分

复制代码
电商微服务拆分:

用户服务 (user-service)
├── 用户注册/登录
├── 用户信息管理
└── 会员等级

商品服务 (product-service)
├── 商品管理
├── 库存管理
└── 分类管理

订单服务 (order-service)
├── 订单创建
├── 订单查询
└── 订单状态管理

支付服务 (payment-service)
├── 支付处理
├── 退款处理
└── 支付渠道管理

营销服务 (marketing-service)
├── 优惠券
├── 活动
└── 秒杀

2.2 数据库设计

sql 复制代码
-- 用户表
CREATE TABLE user (
    id BIGINT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(100) NOT NULL,
    phone VARCHAR(20),
    email VARCHAR(100),
    level INT DEFAULT 1,
    create_time DATETIME
);

-- 商品表
CREATE TABLE product (
    id BIGINT PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    stock INT NOT NULL,
    category_id BIGINT,
    status INT DEFAULT 1,
    create_time DATETIME
);

-- 订单表
CREATE TABLE `order` (
    id BIGINT PRIMARY KEY,
    order_no VARCHAR(50) NOT NULL,
    user_id BIGINT NOT NULL,
    total_amount DECIMAL(10,2) NOT NULL,
    status INT DEFAULT 0,
    create_time DATETIME
);

-- 订单明细表
CREATE TABLE order_item (
    id BIGINT PRIMARY KEY,
    order_id BIGINT NOT NULL,
    product_id BIGINT NOT NULL,
    product_name VARCHAR(200),
    price DECIMAL(10,2),
    quantity INT,
    create_time DATETIME
);

三、关键模块设计

3.1 订单模块

java 复制代码
// 订单服务
@Service
public class OrderService {
    
    @Autowired
    private OrderMapper orderMapper;
    
    @Autowired
    private StockService stockService;
    
    @Autowired
    private MQProducer mqProducer;
    
    @Transactional
    public Order createOrder(OrderDTO dto) {
        // 1. 校验库存
        for (OrderItemDTO item : dto.getItems()) {
            if (!stockService.checkStock(item.getProductId(), item.getQuantity())) {
                throw new BusinessException("库存不足");
            }
        }
        
        // 2. 创建订单
        Order order = new Order();
        order.setOrderNo(generateOrderNo());
        order.setUserId(dto.getUserId());
        order.setStatus(OrderStatus.CREATED);
        orderMapper.insert(order);
        
        // 3. 扣减库存
        for (OrderItemDTO item : dto.getItems()) {
            stockService.deduct(item.getProductId(), item.getQuantity());
        }
        
        // 4. 发送订单创建消息
        mqProducer.send("order.created", order);
        
        return order;
    }
}

3.2 库存模块

java 复制代码
// 库存服务
@Service
public class StockService {
    
    @Autowired
    private StringRedisTemplate redisTemplate;
    
    // 预扣库存
    public boolean deductStock(Long productId, Integer quantity) {
        String key = "stock:" + productId;
        
        // Lua 脚本保证原子性
        String script = 
            "if tonumber(redis.call('GET', KEYS[1])) >= tonumber(ARGV[1]) then " +
            "    redis.call('DECRBY', KEYS[1], ARGV[1]) " +
            "    return 1 " +
            "else " +
            "    return 0 " +
            "end";
        
        Long result = redisTemplate.execute(
            new DefaultRedisScript<>(script, Long.class),
            Collections.singletonList(key),
            String.valueOf(quantity)
        );
        
        return result != null && result == 1;
    }
}

四、高并发解决方案

4.1 秒杀架构

复制代码
┌─────────────────────────────────────────────────────────────┐
│                    秒杀架构                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  用户请求 ──► CDN ──► Nginx ──► 网关 ──► 秒杀服务          │
│                                            │                │
│                                            ▼                │
│                                       Redis 预减库存        │
│                                            │                │
│                                            ▼                │
│                                       MQ 异步下单           │
│                                            │                │
│                                            ▼                │
│                                       数据库持久化          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.2 限流熔断

java 复制代码
// 限流配置
@RateLimiter(value = 1000, timeout = 1, timeUnit = TimeUnit.SECONDS)
@PostMapping("/seckill/{id}")
public Result seckill(@PathVariable Long id) {
    return seckillService.doSeckill(id);
}

// 熔断配置
@CircuitBreaker(name = "seckill", fallbackMethod = "seckillFallback")
public Result doSeckill(Long id) {
    // 秒杀逻辑
}

public Result seckillFallback(Long id, Exception e) {
    return Result.fail("系统繁忙,请稍后重试");
}

总结

电商系统概述 :业务架构、技术架构

核心架构设计 :微服务拆分、数据库设计

关键模块设计 :订单、库存

高并发解决方案:秒杀架构、限流熔断

下篇预告秒杀系统架构设计


作者 :刘~浪地球
系列 :技术选型与实战(二)
更新时间:2026-04-23

相关推荐
兵慌码乱4 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
坏孩子的诺亚方舟10 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
桥田智能10 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
@insist12310 天前
系统架构设计师-5G 技术、冗余设计与分层架构
5g·架构·系统架构·软考·系统架构设计师·软件水平考试
@insist12311 天前
系统架构设计师-网络存储 RAID 与 IPv6 协议全解析
网络·系统架构
山东点狮信息科技有限公司11 天前
企业级 MES 制造执行系统架构设计与实践
spring cloud·性能优化·系统架构·策略模式·点狮
@insist12311 天前
系统架构设计师-计算机网络基础体系全梳理
计算机网络·系统架构·软考·系统架构设计师·软件水平考试
山东点狮信息科技有限公司11 天前
点狮OA-企业级 OA 办公自动化系统架构设计与实践
spring cloud·微服务·性能优化·架构·系统架构
taocarts_bidfans11 天前
反向海淘系统架构设计与 taocarts 分层实践
系统架构·反向海淘·taocarts
生成论实验室11 天前
六十四卦态势操作系统技术白皮书
人工智能·语言模型·系统架构·机器人·自动驾驶·agi·安全架构