实战篇:百万级QPS电商平台架构设计全解析
该电商平台架构:在业务上采用DDD + 微服务 + 事件驱动在技术上结合经典设计模式 + 高性能中间件在性能上可支撑百万级 QPS 峰值在扩展性上可平滑扩展到更多业务场景(直播、短视频带货)
·
1. 项目总体目标
目标是设计一个 高可用、高并发、可扩展 的分布式电商平台,支持 双 11 / 黑五 级别的流量冲击(百万级 QPS 峰值),并保证 数据一致性、交易安全 和 快速迭代。
核心技术理念:
-
DDD(领域驱动设计)+ 微服务架构 + 事件驱动
-
读写分离 + 缓存 + 消息队列削峰
-
高可用设计:限流、降级、熔断、容灾
2. 系统业务模块 & 设计模式
| 模块 | 功能点 | 设计模式 | Java 技术实现 |
|---|---|---|---|
| 用户与权限 | 注册、登录、OAuth2.0、权限管理 | 策略模式(多种认证)、单例模式(Token 管理) | Spring Security + JWT + Redis |
| 商品管理 | 分类、标签、规格、库存同步 | 组合模式(分类树)、建造者模式(商品详情构建) | Spring Boot + MyBatis-Plus + ES |
| 订单管理 | 下单、取消、退款 | 状态模式(订单流转)、观察者模式(触发库存/物流) | MySQL + Kafka |
| 库存管理 | 扣减、防超卖 | 乐观锁(版本号机制)、策略模式(库存扣减策略) | Redis + Redisson |
| 支付网关 | 多支付渠道 | 策略模式(多支付方式)、适配器模式(统一接口) | 支付宝 SDK + 微信 SDK |
| 物流管理 | 多快递查询 | 适配器模式(不同快递 API)、外观模式(统一接口) | Feign + RestTemplate |
| 营销活动 | 优惠券、秒杀、满减 | 策略模式(促销策略)、模板方法模式(活动执行) | Redis + Quartz |
| 搜索与推荐 | 搜索、个性化推荐 | 策略模式(推荐算法) | ElasticSearch + AI 推荐服务 |
| 客服工单 | 工单处理、状态追踪 | 观察者模式(工单事件通知) | WebSocket + Kafka |
| 报表分析 | 实时分析、历史分析 | 观察者模式(数据采集)、责任链模式(分析流程) | Flink + ClickHouse |
| API 网关 | 统一入口、安全 | 责任链模式(过滤器链) | Spring Cloud Gateway |
| 系统监控 | 健康检查、报警 | 观察者模式(报警事件)、单例模式(监控客户端) | Prometheus + Grafana |
3. 技术栈 & 中间件选型表
| 层级 | 技术 / 中间件 | 说明 | 高并发支持能力 |
|---|---|---|---|
| 网关层 | Spring Cloud Gateway + Sentinel | API 路由、限流、熔断 | 50w QPS(集群) |
| 应用层 | Spring Boot + Spring Cloud | 微服务开发框架 | 水平扩展可支持百万级 QPS |
| 缓存层 | Redis Cluster | 热数据缓存、分布式锁 | 100w QPS(集群) |
| 消息队列 | Kafka / RabbitMQ | 削峰、异步处理、事件驱动 | Kafka 单集群 100w TPS |
| 数据层 | MySQL 主从 + ShardingSphere | 交易存储、分库分表 | 单库 5w TPS(水平扩展) |
| 搜索层 | ElasticSearch | 商品搜索 | 10w QPS(集群) |
| 文件存储 | MinIO / 阿里云 OSS | 图片、视频存储 | 取决于云存储带宽 |
| 分布式事务 | Seata / TCC | 跨服务事务一致性 | 秒级补偿 |
| 调度中心 | Quartz / ElasticJob | 定时任务、活动调度 | 秒级任务调度 |
| 监控 | Prometheus + Grafana + SkyWalking | 监控、链路追踪 | 毫秒级报警 |
4. 核心设计模式 Java 代码示例
4.1 策略模式(支付网关)
public interface PaymentStrategy {
void pay(Order order);
}
public class AlipayPayment implements PaymentStrategy {
public void pay(Order order) {
System.out.println("使用支付宝支付:" + order.getId());
}
}
public class WeChatPayment implements PaymentStrategy {
public void pay(Order order) {
System.out.println("使用微信支付:" + order.getId());
}
}
public class PaymentContext {
private PaymentStrategy strategy;
public PaymentContext(PaymentStrategy strategy) {
this.strategy = strategy;
}
public void execute(Order order) {
strategy.pay(order);
}
}
使用方式:
Order order = new Order("1001", 199.0);
PaymentContext ctx = new PaymentContext(new AlipayPayment());
ctx.execute(order);
4.2 状态模式(订单生命周期)
public interface OrderState {
void handle(OrderContext context);
}
public class CreatedState implements OrderState {
public void handle(OrderContext context) {
System.out.println("订单已创建,等待支付");
context.setState(new PaidState());
}
}
public class PaidState implements OrderState {
public void handle(OrderContext context) {
System.out.println("订单已支付,准备发货");
context.setState(new ShippedState());
}
}
public class OrderContext {
private OrderState state;
public OrderContext(OrderState state) { this.state = state; }
public void setState(OrderState state) { this.state = state; }
public void next() { state.handle(this); }
}
使用方式:
OrderContext ctx = new OrderContext(new CreatedState());
ctx.next(); // 已创建
ctx.next(); // 已支付
4.3 观察者模式(库存变更通知)
public interface Observer {
void update(String message);
}
public class StockService implements Observer {
public void update(String message) {
System.out.println("库存更新: " + message);
}
}
public class EventBus {
private List<Observer> observers = new ArrayList<>();
public void register(Observer observer) { observers.add(observer); }
public void notifyAll(String msg) {
for (Observer o : observers) o.update(msg);
}
}
5. 高并发设计方案
| 技术手段 | 目的 | 支持能力 |
|---|---|---|
| Redis 缓存预热 | 减少数据库压力 | 缓存命中率 95%+ |
| Kafka 削峰填谷 | 异步处理非核心请求 | 峰值削峰 80% |
| 分库分表 | 提高数据库吞吐 | 水平扩展到百万级 TPS |
| API 限流 | 防止突发流量压垮系统 | 限流到稳定值 |
| 灰度发布 | 平滑上线 | 0 宕机升级 |
6. 架构图(逻辑)
用户请求 | API网关(限流、鉴权) | ┌───────┼─────────┐ 用户服务 商品服务 订单服务 ...(微服务) | | Redis Kafka | | MySQL ElasticSearch | MinIO
7. 总结
该电商平台架构:
-
在业务上采用 DDD + 微服务 + 事件驱动
-
在技术上结合 经典设计模式 + 高性能中间件
-
在性能上可 支撑百万级 QPS 峰值
-
在扩展性上可 平滑扩展到更多业务场景(直播、短视频带货)
更多推荐


所有评论(0)