9.9 KiB
9.9 KiB
抽奖盲盒系统架构图
1. 系统整体架构
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. 应用模块架构
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. 数据库架构设计
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. 抽奖算法架构
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. 支付系统架构
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. 缓存架构设计
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. 消息队列架构
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. 安全架构设计
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. 监控运维架构
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. 可维护性
- 清晰的分层架构
- 标准化的开发规范
- 完善的日志和监控体系
这个架构设计充分考虑了抽奖盲盒系统的业务特点,在保证系统稳定性和性能的同时,也为未来的功能扩展预留了空间。