美鹅外卖项目文档【3】《技术选型报告》
技术选型报告
项目名称: 美鹅外卖平台系统
编写人: 沈冬法
日期: 2025年6月3日
版本号: V2.7
1. 文档说明
1.1 编写目的
本报告旨在明确美鹅外卖平台各技术组件的选型依据与优劣分析,为后续开发、部署与维护提供技术决策支持。
1.2 适用范围
本报告适用于系统架构师、开发工程师、测试工程师与运维团队,涉及平台核心架构及相关中间件、工具组件的选型。
2. 项目背景简述
美鹅外卖平台采用 C/S 架构,支持用户、商户、管理员三类角色,核心需求包括高并发支持、安全交易、跨平台客户端、模块化服务。系统部署需兼容容器化和分布式调度架构。
3. 技术选型原则
- ✅ 性能优先:支持高并发、高I/O吞吐
✅ 跨平台能力:客户端需支持 Win/macOS/Linux✅ 社区成熟度:优先选择文档丰富、维护活跃项目- ✅ 易部署可维护:简化运维部署流程,容器支持友好
- ✅ 开源优先,商业授权可控
4. 技术选型与对比分析
4.1 客户端开发框架
框架 | 跨平台 | GUI支持 | 文档完备 | 性能 | 最终选择 |
---|---|---|---|---|---|
Qt 6.7 | ✅ | 强 | ⭐⭐⭐⭐ | 高 | ✅ |
Electron | ✅ | 中 | ⭐⭐⭐ | 低 | ❌ |
Flutter | ✅ | 弱 | ⭐⭐ | 中 | ❌ |
选型理由:Qt 6.7 提供稳定的跨平台桌面 GUI 开发能力,C++ 原生绑定,支持复杂控件与本地系统集成,适用于功能完整的 C/S 应用。
4.2 服务端开发语言与框架
技术 | 性能 | 并发处理 | 生态支持 | 学习曲线 | 最终选择 |
---|---|---|---|---|---|
C++17 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | 较高 | ✅ |
Go | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | 中 | ❌ |
Java (Spring Boot) | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | 中 | ❌ |
选型理由:C++17 能提供底层细粒度控制、高性能处理能力,适合高并发订单处理等核心业务场景。
4.3 通信协议
协议 | 人类可读 | 压缩性能 | 成熟度 | 最终选择 |
---|---|---|---|---|
JSON over HTTP | ✅ | 一般 | 高 | ✅ |
Protobuf + TCP | ❌ | 优秀 | 中 | ❌ |
gRPC | ❌ | 优秀 | 中 | ❌ |
选型理由:JSON over HTTP 简单、通用、调试方便,适用于当前中小型项目快速开发、调试与部署。
4.4 数据存储方案
类型 | 技术 | 特性 | 成本 | 最终选择 |
---|---|---|---|---|
关系型 | MySQL 8.0 | 成熟稳定,事务支持强 | 免费 | ✅ |
非关系型 | Redis 7.2.4 | 高速缓存,键值访问 | 免费 | ✅(作为缓存) |
文档型 | MongoDB | 文档灵活,嵌套结构强 | 免费 | ❌ |
选型理由:
- 主存储:MySQL 用于订单、账户等关系型结构数据
- 缓存系统:Redis 减轻数据库压力,加速热数据访问(如商品展示、订单状态)
4.5 中间件与支持组件
分类 | 工具 | 功能 | 说明 |
---|---|---|---|
反向代理 | Nginx 1.24.0 | 请求路由、负载均衡 | 简洁、稳定,支持 TLS |
部署容器 | Docker 28.0.4 | 容器打包与部署 | 开发环境/生产环境一致性 |
日志系统 | spdlog | 高性能日志库 | 支持多级别、文件分割等 |
CI/CD工具 |
5. 第三方服务选型(暂未启用)
服务类别 | 技术/平台 | 接入状态 | 备注说明 |
---|---|---|---|
支付接口 | 支付宝/微信支付 | ⛔ 未启用 | 计划后期接入(待API申请) |
地图定位 | 高德地图 API | ⛔ 未启用 | 暂不涉及配送功能 |
6. 技术风险与规避措施
风险项 | 应对措施 |
---|---|
C++ 内存管理复杂 | 严格使用 RAII、智能指针、封装基础类 |
Qt LGPL 许可 | 遵守 LGPL 要求,避免静态链接闭源模块 |
JSON 性能瓶颈 | 考虑对热点请求使用 Redis 缓存、或后期切换 Protobuf |
Docker 不熟悉 | 制定统一镜像构建标准,逐步容器化测试流程 |
7. 结论与建议
- 推荐整体技术方案:
- 客户端:Qt 6.7 + C++17
- 服务端:C++17 单体服务 + JSON over HTTP
- 数据持久化:MySQL + Redis
- 部署方案:Docker + Nginx
- 当前架构适合单体阶段快速迭代,具备向模块化/微服务演进的能力
8. 附录
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 supdriver的博客!
评论