项目名称: 美鹅外卖平台系统

编写人: 沈冬法

日期: 2025年6月3日

版本号: V2.7

1. 文档概述

1.1 编写目的

本说明书用于描述的系统整体架构设计,包括部署拓扑、模块划分、通信机制及技术栈选型,帮助开发、测试、运维人员理解系统架构并指导开发实施。

1.2 项目背景

外卖服务作为本地生活服务的核心业务之一,需支持高并发、快速响应、安全支付等特性。本项目采用 C/S 架构,构建一个多角色(用户、商家、平台)参与的外卖服务系统。

1.3 读者对象

  • 架构师
  • 开发工程师(C++ / Qt / MySQL)
  • 测试工程师
  • 产品经理
  • 运维人员

1.4 术语与缩写

缩写 含义
SADD 系统架构设计说明书
C/S Client/Server 架构
Qt 跨平台图形界面开发框架
API 应用程序编程接口

1.5 参考文献

  • 软件需求规格说明书(版本 V1.0)
  • Qt官方开发指南
  • MySQL文档
  • 项目调研报告与行业竞品分析

2. 系统总体设计

2.1 系统架构概述

系统采用典型的 C/S 架构模型:客户端通过 Qt 实现图形界面,服务端使用 C++ 实现业务处理逻辑,数据持久化由 MySQL 负责,通信采用基于 HTTP协议

2.2 部署拓扑结构图

2.3 模块划分与功能说明

模块名称 功能描述 所属层
登录模块 账户注册、登录验证 客户端/服务端
商品管理 商户上架、编辑、删除商品 服务端
购物车 添加、移除、修改购物项 客户端
订单处理 订单生成、提交、取消、查看 服务端
支付模块 与第三方支付平台交互生成二维码 服务端
销售日志查询 商户/平台查看销售历史 服务端
消息通知 下单/订单状态变更时提示用户 客户端

3. 通信设计

3.1 通信模式说明

  • 客户端与服务端通信使用HTTP协议
  • 数据格式统一为 JSON(便于前后端解析)
  • 所有请求通过统一网关模块接入(接口鉴权层)

3.2 数据流程图(简要)

用户下单流程数据流

用户操作(Qt) → 提交购物车 → 服务端生成订单 → 第三方支付接口生成二维码 → 客户端展示二维码

3.3 安全通信设计

  • 客户端与服务端通信加密(SSL/TLS)
  • 使用 Access Token 进行身份认证
  • 所有敏感数据(如密码、支付信息)加密传输

4. 技术选型与架构决策

4.1 技术栈说明

类型 技术
客户端 GUI Qt 6.7
服务端开发 C++17
反向代理服务 Nginx 1.24.0
数据库 MySQL 8.0
数据缓存 Redis 7.2.4
部署服务 doker 28.0.4
通信协议 JSON over HTTP
第三方服务 支付宝/微信支付API,地图API(高德)

4.2 选型理由

  • Qt 可跨平台支持 PC 和移动端客户端
  • C++ 高性能适合处理大量订单和实时响应
  • Nginx 高效率的反向代理组件
  • MySQL 易于维护,开源且社区活跃
  • Redis 高效的内存级非关系型数据库
  • JSON 数据格式直观清晰,前后端一致性好

4.3 可扩展性与容错设计

  • 模块间通信通过接口解耦,方便更换实现
  • 错误采用标准异常处理和日志记录
  • 增加 Redis 缓存以提升订单读取性能

5. 性能与安全设计

5.1 性能优化策略

  • 缓存商品列表、热销数据
  • 异步处理下单与支付流程,提升响应速度
  • 数据库建立联合索引优化查询

5.2 安全控制设计

  • 用户密码加密存储(如 SHA-256 + salt)
  • 所有接口加鉴权校验(Token + Timestamp)
  • 数据操作日志追踪(操作人、时间、对象)

6. 部署与运维建议

6.1 环境要求

  • 服务器:Linux x64, 8核CPU, 16G内存, SSD
  • 客户端:Windows/macOS + Qt6运行库
  • 网络端口:服务端监听端口为 8080 或自定义

6.2 日志与监控设计

  • 统一日志框架(spdlog)
  • 日志级别划分:TRACE/DEBUG/INFO/WARN/ERROR
  • 监控方案建议:Prometheus + Grafana 或自研轻量监控

6.3 部署流程

  • 客户端提供懒人包(带运行库)
  • 服务端通过docker部署
  • 支持灰度发布与热更新机制

7. 附录

附录A:数据库表结构概要

附录C:接口说明文档

  • 可参见《接口设计说明书》

附录D:引用资源