# 抽奖盲盒系统架构图 ## 1. 系统整体架构 ```mermaid graph TB subgraph "客户端层" A1[微信小程序] A2[H5页面] A3[管理后台] end subgraph "网关层" B1[Nginx反向代理] B2[负载均衡] end subgraph "应用层" C1[API接口模块] C2[管理后台模块] C3[定时任务模块] end subgraph "业务服务层" D1[用户服务] D2[商品服务] D3[订单服务] D4[支付服务] D5[抽奖服务] D6[物流服务] D7[集市服务] end subgraph "数据层" E1[MySQL主库] E2[MySQL从库] E3[Redis缓存] E4[文件存储] end subgraph "外部服务" F1[微信支付] F2[支付宝] F3[短信服务] F4[物流接口] F5[腾讯云COS] end A1 --> B1 A2 --> B1 A3 --> B1 B1 --> B2 B2 --> C1 B2 --> C2 C1 --> D1 C1 --> D2 C1 --> D3 C1 --> D4 C1 --> D5 C1 --> D6 C1 --> D7 C2 --> D1 C2 --> D2 C2 --> D3 C3 --> D1 C3 --> D2 C3 --> D3 D1 --> E1 D2 --> E1 D3 --> E1 D4 --> E1 D5 --> E1 D6 --> E1 D7 --> E1 D1 --> E2 D2 --> E2 D3 --> E2 D1 --> E3 D2 --> E3 D3 --> E3 D4 --> E3 D5 --> E3 D2 --> E4 D6 --> E4 D4 --> F1 D4 --> F2 D1 --> F3 D6 --> F4 D2 --> F5 ``` ## 2. 应用模块架构 ```mermaid graph TD subgraph "ThinkPHP 6.0 框架" A[应用入口 public/index.php] subgraph "多应用模式" B1[admin - 管理后台] B2[api - 接口服务] B3[index - 前台页面] end subgraph "公共模块" C1[common/model - 数据模型] C2[common/service - 业务服务] C3[common/helper - 工具类] C4[common/server - 服务类] end subgraph "中间件层" D1[认证中间件] D2[权限中间件] D3[日志中间件] D4[跨域中间件] end subgraph "配置管理" E1[数据库配置] E2[缓存配置] E3[路由配置] E4[应用配置] end end A --> B1 A --> B2 A --> B3 B1 --> C1 B1 --> C2 B2 --> C1 B2 --> C2 B3 --> C1 B3 --> C2 B1 --> D1 B1 --> D2 B2 --> D1 B2 --> D3 C1 --> E1 C2 --> E2 B1 --> E3 B2 --> E3 ``` ## 3. 数据库架构设计 ```mermaid erDiagram USER ||--o{ ORDER : "下单" USER ||--o{ ORDER_LIST : "中奖" USER ||--o{ COUPON_RECEIVE : "领取" USER ||--o{ PROFIT_MONEY : "资金变动" GOODS ||--o{ GOODS_LIST : "包含" GOODS ||--o{ ORDER : "被购买" GOODS_LIST ||--o{ ORDER_LIST : "中奖奖品" ORDER ||--o{ ORDER_LIST : "包含" ORDER_LIST ||--o{ ORDER_LIST_SEND : "发货" ORDER_LIST ||--o{ MARKET : "集市" CATEGORY ||--o{ GOODS : "分类" COUPON ||--o{ COUPON_RECEIVE : "优惠券" USER { int id PK string phone string nickname decimal money decimal integral int level datetime addtime } GOODS { int id PK int category_id FK string title string imgurl decimal price int stock int type int status datetime addtime } GOODS_LIST { int id PK int goods_id FK string title string imgurl int stock decimal price decimal real_pro int goods_type } ORDER { int id PK int user_id FK string order_num decimal order_total decimal price int goods_id FK int prize_num int status datetime addtime } ORDER_LIST { int id PK int order_id FK int user_id FK int goods_id FK int goodslist_id FK string goodslist_title decimal goodslist_price int status datetime addtime } ``` ## 4. 抽奖算法架构 ```mermaid graph TD A[抽奖请求] --> B{抽奖类型判断} B --> C1[一番赏算法] B --> C2[无限赏算法] B --> C3[抽卡机算法] B --> C4[其他类型算法] subgraph "抽奖算法核心" D1[加权随机算法] D2[概率区间算法] D3[库存消耗算法] E1[奖品池构建] E2[权重计算] E3[随机数生成] E4[结果匹配] end C1 --> D1 C2 --> D2 C3 --> D3 C4 --> D1 D1 --> E1 D2 --> E1 D3 --> E1 E1 --> E2 E2 --> E3 E3 --> E4 E4 --> F{奖品类型} F --> G1[普通奖品] F --> G2[宝箱奖品] F --> G3[特殊奖品] G2 --> H[递归抽奖] H --> E1 G1 --> I[更新库存] G3 --> I I --> J[生成中奖记录] J --> K[返回结果] ``` ## 5. 支付系统架构 ```mermaid graph TD A[支付请求] --> B[支付路由] B --> C{支付方式} C --> D1[微信支付] C --> D2[支付宝支付] C --> D3[余额支付] C --> D4[虚拟货币支付] subgraph "支付处理" E1[订单验证] E2[金额计算] E3[优惠券处理] E4[支付执行] E5[回调处理] end D1 --> E1 D2 --> E1 D3 --> E1 D4 --> E1 E1 --> E2 E2 --> E3 E3 --> E4 E4 --> F{支付结果} F -->|成功| G[触发抽奖] F -->|失败| H[订单取消] subgraph "外部支付" I1[微信支付API] I2[支付宝API] end D1 --> I1 D2 --> I2 I1 --> E5 I2 --> E5 E5 --> J[更新订单状态] J --> G ``` ## 6. 缓存架构设计 ```mermaid graph TD subgraph "应用层缓存" A1[用户信息缓存] A2[商品信息缓存] A3[配置信息缓存] A4[热点数据缓存] end subgraph "Redis集群" B1[Redis Master] B2[Redis Slave 1] B3[Redis Slave 2] end subgraph "缓存策略" C1[读写分离] C2[主从同步] C3[故障转移] C4[数据持久化] end A1 --> B1 A2 --> B1 A3 --> B1 A4 --> B1 B1 --> B2 B1 --> B3 B1 --> C1 B2 --> C1 B3 --> C1 C1 --> C2 C2 --> C3 C3 --> C4 subgraph "缓存更新策略" D1[定时更新] D2[事件触发更新] D3[LRU淘汰] D4[TTL过期] end C4 --> D1 C4 --> D2 C4 --> D3 C4 --> D4 ``` ## 7. 消息队列架构 ```mermaid graph TD subgraph "消息生产者" A1[订单服务] A2[支付服务] A3[抽奖服务] A4[物流服务] end subgraph "消息队列" B1[支付成功队列] B2[抽奖结果队列] B3[发货通知队列] B4[数据统计队列] end subgraph "消息消费者" C1[抽奖处理器] C2[通知处理器] C3[统计处理器] C4[日志处理器] end A1 --> B1 A2 --> B1 A2 --> B4 A3 --> B2 A3 --> B4 A4 --> B3 B1 --> C1 B2 --> C2 B3 --> C2 B4 --> C3 C1 --> D1[执行抽奖] C2 --> D2[发送通知] C3 --> D3[更新统计] C4 --> D4[记录日志] ``` ## 8. 安全架构设计 ```mermaid graph TD subgraph "网络安全" A1[HTTPS加密] A2[防火墙] A3[DDoS防护] A4[IP白名单] end subgraph "应用安全" B1[JWT认证] B2[权限控制] B3[参数验证] B4[SQL注入防护] B5[XSS防护] end subgraph "数据安全" C1[数据加密] C2[敏感信息脱敏] C3[数据备份] C4[访问日志] end subgraph "业务安全" D1[防刷机制] D2[风控系统] D3[异常监控] D4[操作审计] end A1 --> B1 A2 --> B2 A3 --> B3 A4 --> B4 B1 --> C1 B2 --> C2 B3 --> C3 B4 --> C4 B5 --> C4 C1 --> D1 C2 --> D2 C3 --> D3 C4 --> D4 ``` ## 9. 监控运维架构 ```mermaid graph TD subgraph "应用监控" A1[性能监控] A2[错误监控] A3[业务监控] A4[用户行为监控] end subgraph "系统监控" B1[服务器监控] B2[数据库监控] B3[缓存监控] B4[网络监控] end subgraph "日志管理" C1[应用日志] C2[访问日志] C3[错误日志] C4[审计日志] end subgraph "告警系统" D1[实时告警] D2[邮件通知] D3[短信通知] D4[钉钉通知] end A1 --> D1 A2 --> D1 A3 --> D1 A4 --> D1 B1 --> D1 B2 --> D1 B3 --> D1 B4 --> D1 C1 --> D2 C2 --> D2 C3 --> D2 C4 --> D2 D1 --> D3 D2 --> D3 D3 --> D4 ``` ## 架构特点说明 ### 1. 高可用性 - 采用主从数据库架构,支持读写分离 - Redis集群提供缓存高可用 - 负载均衡确保服务高可用 ### 2. 高性能 - 多层缓存策略减少数据库压力 - 异步消息队列处理耗时操作 - 优化的抽奖算法提升处理效率 ### 3. 可扩展性 - 微服务化的业务模块设计 - 水平扩展支持 - 插件化的支付和物流接口 ### 4. 安全性 - 多层安全防护机制 - 完善的权限控制体系 - 全面的审计和监控 ### 5. 可维护性 - 清晰的分层架构 - 标准化的开发规范 - 完善的日志和监控体系 这个架构设计充分考虑了抽奖盲盒系统的业务特点,在保证系统稳定性和性能的同时,也为未来的功能扩展预留了空间。