三层部署架构图
三层架构说明
#### 第一层:客户端
- PC客户端:通过
api.aifuture.net.cn域名直接访问第三层APP服务器 - 移动端:通过
api.aifuture.net.cn域名直接访问第三层APP服务器 - 微信会员管理页面:通过
m.xintuxiangce.net(CDN)访问第二层WEB服务器
#### 第二层:WEB服务层
第二层包含两个平级的服务组件:
CDN层:
- CDN(青牛):内容分发网络,域名
m.xintuxiangce.net,加速微信会员管理页面的访问 - 负责静态资源的CDN加速
- 独立服务,与WEB容器和第三层APP服务器无直接连接关系
- APP下载:提供APP安装包下载服务
WEB服务器层:
- Lighttpd:Web服务器,负责处理HTTP请求和路由
- 芯图相册官网:Lighttpd配置的虚拟主机/Web模块
- 管理后台:Lighttpd配置的虚拟主机/Web模块
- Aifuture官网:Lighttpd配置的虚拟主机/Web模块
- 反向代理转发微信会员管理的API请求到第三层APP服务器的Gunicorn
数据库:
- MySQL数据库(从库):从第三层主库同步数据,用于只读查询
职责:
- CDN层加速微信会员管理页面的静态资源访问
- WEB服务器层直接服务芯图相册官网、管理后台和Aifuture官网(通过虚拟主机配置)
- WEB服务器层反向代理转发微信会员管理的API请求到第三层APP服务器的Gunicorn
- 提供数据库从库,支持只读查询,减轻主库压力
#### 第三层:APP服务器
- Nginx:反向代理服务器,处理所有API请求,反向代理到Gunicorn
- Gunicorn:WSGI服务器,运行FastAPI应用
- FastAPI应用:Python Web框架,包含所有业务逻辑
- Service服务:业务服务模块,分为两层
- 核心服务:
- 图像分类服务(ClassifierService):图片分类核心服务,整合缓存、大模型和本地推理
- 图像编辑服务(ImageEditService):基于阿里云百炼的图像编辑功能
- 位置查询服务(LocationService):基于GPS坐标的城市位置查询
- 基础服务:
- 缓存服务(CacheService):图片分类结果缓存管理
- 大模型客户端(ModelClient):调用阿里云通义千问等大模型API
- 统计服务(StatsService):请求日志记录和统计数据查询
- 会员管理服务:会员相关的业务逻辑
- 额度服务(CreditService):用户额度检查和扣减
- 订单服务(OrderService):订单创建、支付处理
- 绑定服务(BindingService):微信二维码与客户端绑定管理
- MySQL数据库(主库):数据存储,通过主从复制同步到第二层从库
访问路径
1. PC/Mobile → APP服务器
2. 微信会员管理 → CDN → APP服务器
3. 微信会员管理 → WEB服务器 → APP服务器
4. 访问网站 → WEB服务器(虚拟主机)
二维码生成与扫码关注时序图
场景1:生成二维码流程
场景2:扫码关注流程
场景3:客户端查询绑定状态
场景4:开通会员流程
场景5:购买额度流程
关键点说明
Web服务器职责
- ✅ 只接收微信主动调用的请求(3个接口)
- ✅ 不直接操作数据库
- ✅ 通过HTTP调用App服务器的内部接口操作数据
App服务器职责
- ✅ 处理所有业务逻辑
- ✅ 主动调用微信API(网页授权、生成二维码、统一下单等)
- ✅ 直接操作数据库
- ✅ 提供内部接口供Web服务器调用
优势
- ✅ 不需要修改微信平台配置(URL保持不变)
- ✅ 前端代码无需修改(通过Nginx路由)
- ✅ 职责清晰,易于维护
- ✅ 安全性更高(Web服务器不直接操作数据库)