# 外卖SaaS系统 - 系统架构图 ## 1. 整体架构图 ``` ┌─────────────────────────────────────────────────────────────────────┐ │ 客户端层 │ │ ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐ │ │ │ Web管理端 │ │ Web用户端 │ │ 小程序端(用户) │ │ │ │ (React/Vue) │ │ (React/Vue) │ │ (微信/支付宝) │ │ │ └──────────────┘ └──────────────┘ └─────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ API网关层 │ │ ┌───────────────────────────────────────────────────────────────┐ │ │ │ Nginx / API Gateway │ │ │ │ - 路由转发 │ │ │ │ - 负载均衡 │ │ │ │ - 限流熔断 │ │ │ │ - SSL终止 │ │ │ └───────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 应用服务层 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 租户服务 │ │ 商家服务 │ │ 菜品服务 │ │ │ │ - 租户管理 │ │ - 商家管理 │ │ - 菜品管理 │ │ │ │ - 权限管理 │ │ - 门店管理 │ │ - 分类管理 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 订单服务 │ │ 配送服务 │ │ 用户服务 │ │ │ │ - 订单管理 │ │ - 配送员管理 │ │ - 用户管理 │ │ │ │ - 订单流转 │ │ - 任务分配 │ │ - 地址管理 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 支付服务 │ │ 营销服务 │ │ 通知服务 │ │ │ │ - 支付处理 │ │ - 优惠券 │ │ - 短信通知 │ │ │ │ - 退款处理 │ │ - 活动管理 │ │ - 推送通知 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 基础设施层 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ PostgreSQL │ │ Redis │ │ RabbitMQ │ │ │ │ - 主数据库 │ │ - 缓存 │ │ - 消息队列 │ │ │ │ - 主从复制 │ │ - 会话存储 │ │ - 异步任务 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ MinIO/OSS │ │ Elasticsearch│ │ Prometheus │ │ │ │ - 对象存储 │ │ - 日志存储 │ │ - 监控告警 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ ``` ## 2. 应用分层架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ Presentation Layer │ │ (表现层) │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ TakeoutSaaS.Api │ │ │ │ - Controllers (控制器) │ │ │ │ - Filters (过滤器) │ │ │ │ - Middleware (中间件) │ │ │ │ - Models (DTO模型) │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Application Layer │ │ (应用层) │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ TakeoutSaaS.Application │ │ │ │ - Services (应用服务) │ │ │ │ - DTOs (数据传输对象) │ │ │ │ - Interfaces (服务接口) │ │ │ │ - Validators (验证器) │ │ │ │ - Mappings (对象映射) │ │ │ │ - Commands/Queries (CQRS) │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Domain Layer │ │ (领域层) │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ TakeoutSaaS.Domain │ │ │ │ - Entities (实体) │ │ │ │ - ValueObjects (值对象) │ │ │ │ - Enums (枚举) │ │ │ │ - Events (领域事件) │ │ │ │ - Interfaces (仓储接口) │ │ │ │ - Specifications (规约) │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Infrastructure Layer │ │ (基础设施层) │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ TakeoutSaaS.Infrastructure │ │ │ │ - Data (数据访问) │ │ │ │ - EFCore (EF Core实现) │ │ │ │ - Dapper (Dapper实现) │ │ │ │ - Repositories (仓储实现) │ │ │ │ - Cache (缓存实现) │ │ │ │ - MessageQueue (消息队列) │ │ │ │ - ExternalServices (外部服务) │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 3. 订单处理流程图 ``` 用户下单 → 创建订单 → 支付 → 商家接单 → 制作 → 配送 → 完成 │ │ │ │ │ │ │ │ │ │ │ │ │ └─→ 订单完成 │ │ │ │ │ └─→ 配送中 │ │ │ │ └─→ 制作中 │ │ │ └─→ 待制作 │ │ └─→ 待接单 │ └─→ 待支付 └─→ 订单创建 取消流程: 用户取消 ──→ 退款处理 ──→ 订单取消 商家拒单 ──→ 退款处理 ──→ 订单取消 超时未支付 ──→ 自动取消 ``` ## 4. 数据流转图 ``` ┌──────────┐ │ 客户端 │ └────┬─────┘ │ HTTP Request ▼ ┌──────────────────┐ │ API Gateway │ │ (Nginx) │ └────┬─────────────┘ │ 路由转发 ▼ ┌──────────────────┐ │ Web API │ │ - 认证授权 │ │ - 参数验证 │ └────┬─────────────┘ │ 调用服务 ▼ ┌──────────────────┐ │ Application │ │ Service │ │ - 业务逻辑 │ └────┬─────────────┘ │ 数据访问 ▼ ┌──────────────────┐ ┌──────────┐ │ Repository │────→│ Cache │ │ - EF Core │ │ (Redis) │ │ - Dapper │ └──────────┘ └────┬─────────────┘ │ SQL查询 ▼ ┌──────────────────┐ │ PostgreSQL │ │ Database │ └──────────────────┘ ``` ## 5. 多租户数据隔离架构 ``` ┌─────────────────────────────────────────────────┐ │ 租户识别中间件 │ │ - 从JWT Token解析租户ID │ │ - 从HTTP Header获取租户ID │ └─────────────────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ 租户上下文 │ │ - 当前租户ID │ │ - 租户配置信息 │ └─────────────────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ 数据访问层 │ │ - 自动添加租户ID过滤 │ │ - 全局查询过滤器 │ └─────────────────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ 数据库 │ │ 租户A数据 │ 租户B数据 │ 租户C数据 │ │ (tenant_id = A) (tenant_id = B) (tenant_id = C)│ └─────────────────────────────────────────────────┘ ``` ## 6. 缓存架构 ``` ┌──────────────┐ │ Application │ └──────┬───────┘ │ ▼ ┌──────────────────────────────────┐ │ Cache Aside Pattern │ │ 1. 查询缓存 │ │ 2. 缓存未命中,查询数据库 │ │ 3. 写入缓存 │ └──────┬───────────────────────────┘ │ ├─→ L1 Cache (Memory Cache) │ - 进程内缓存 │ - 热点数据 │ └─→ L2 Cache (Redis) - 分布式缓存 - 会话数据 - 共享数据 ``` ## 7. 消息队列架构 ``` ┌──────────────┐ │ Producer │ │ (订单服务) │ └──────┬───────┘ │ 发布事件 ▼ ┌──────────────────┐ │ RabbitMQ │ │ Exchange │ └──────┬───────────┘ │ ├─→ Queue: order.created │ └─→ Consumer: 通知服务 │ ├─→ Queue: order.paid │ └─→ Consumer: 库存服务 │ └─→ Queue: order.completed └─→ Consumer: 统计服务 ``` ## 8. 部署架构 ``` ┌─────────────────────────────────────────────────┐ │ 负载均衡器 (Nginx) │ └─────────────┬───────────────────────────────────┘ │ ┌───────┴───────┐ │ │ ▼ ▼ ┌──────────┐ ┌──────────┐ │ API 1 │ │ API 2 │ │ (容器) │ │ (容器) │ └────┬─────┘ └────┬─────┘ │ │ └───────┬───────┘ │ ┌───────┴────────┬──────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │PostgreSQL│ │ Redis │ │ RabbitMQ │ │ 主从 │ │ 哨兵 │ │ 集群 │ └──────────┘ └──────────┘ └──────────┘ ``` ## 9. 监控架构 ``` ┌──────────────────────────────────────────┐ │ 应用程序 │ │ - 业务指标 │ │ - 性能指标 │ │ - 日志输出 │ └─────────┬────────────────────────────────┘ │ ┌─────┴─────┬──────────┐ │ │ │ ▼ ▼ ▼ ┌────────┐ ┌────────┐ ┌────────┐ │Metrics │ │ Logs │ │Traces │ │ │ │ │ │ │ └───┬────┘ └───┬────┘ └───┬────┘ │ │ │ ▼ ▼ ▼ ┌──────────────────────────────┐ │ Prometheus │ │ Elasticsearch │ │ Jaeger │ └─────────┬────────────────────┘ │ ▼ ┌──────────────────────────────┐ │ Grafana │ │ Kibana │ │ - 可视化仪表板 │ │ - 告警配置 │ └──────────────────────────────┘ ```