Files
wenzi/docs/architecture.md

65 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 技术架构说明: “蚊子”传播系统
## 1. 概述
本文档旨在为“蚊子”传播系统定义清晰、统一的技术架构以指导后续的开发和运维工作。项目将遵循前后端分离的现代Web应用架构模式。
- **后端**: 基于 **Spring Boot 3** 的微服务架构负责所有业务逻辑、数据处理和API输出。
- **前端**: 基于 **Vue 3** 的单页面应用SPA负责提供给“活动管理员”的管理后台界面和“终端参与者”的用户中心界面。
## 2. 技术选型 (Tech Stack)
| 领域 | 技术选型 | 备注 |
| :--- | :--- | :--- |
| **后端框架** | Spring Boot 3.x | 使用Java 17, 提供强大的生态和快速开发能力。 |
| **前端框架** | Vue 3.x | 使用 Composition API 和 `<script setup>` 语法,提升代码可读性和复用性。 |
| **构建工具** | Maven (后端), Vite (前端) | Vite提供极速的开发服务器和构建体验。 |
| **数据库** | PostgreSQL | 功能强大的开源关系型数据库支持JSON等复杂数据类型。 |
| **数据访问** | Spring Data JPA / Hibernate | 简化数据库操作实现ORM。 |
| **API安全** | Spring Security | 处理API Key认证及未来可能的用户认证。 |
| **消息队列** | RabbitMQ | 用于奖励发放等异步任务处理通过Spring AMQP集成。 |
| **缓存** | Redis | 用于缓存热点数据,如排行榜。 |
| **UI组件库** | Element Plus | 成熟、丰富的Vue 3组件库。 |
| **前端状态管理**| Pinia | Vue 3官方推荐的状态管理库轻量且直观。 |
| **API客户端** | Axios | 成熟的HTTP客户端用于前后端交互。 |
## 3. 系统架构图
```mermaid
graph TD
subgraph 用户端
A[浏览器/移动端] --> B{前端应用 (Vue 3)};
end
subgraph 服务端
B --> C{API网关/负载均衡};
C --> D[后端主应用 (Spring Boot)];
D -- JDBC --> E[PostgreSQL数据库];
D -- AMQP --> F[RabbitMQ消息队列];
D -- Redis Client --> G[Redis缓存];
H[奖励发放Worker] -- AMQP --> F;
end
subgraph 第三方服务
D --> I{第三方奖励系统 API};
J[客户应用] --> C;
end
```
## 4. 核心模块设计思路
- **活动管理 (Activity Management)**: 后端提供完整的CRUD API前端通过表单驱动实现活动的动态配置。
- **数据分析 (Data Analytics)**: 后端通过定时任务(`@Scheduled`)预先计算和聚合每日统计数据,存入统计表,避免前端查询时实时计算的性能瓶颈。
- **用户端体验 (User Experience)**:
- **短链接**: 后端提供一个专门的服务,负责长链接到短链接的转换和重定向。
- **海报生成**: 后端使用Java图像处理库`thumbnailator`)生成海报,并设计降级方案,在高负载时仅返回数据由前端`canvas`进行渲染。
- **系统集成 (System Integration)**:
- **回调API**: 通过Spring Security的过滤器链实现`X-API-Key`的认证和速率限制。
- **异步奖励**: 采用消息队列实现核心业务(回调处理)与非核心业务(奖励发放)的解耦,提高系统的响应速度和可靠性。
## 5. 部署与运维 (DevOps)
- **容器化**: 前后端应用都将被打包成Docker镜像。
- **CI/CD**: 设立GitHub Actions工作流在代码推送到主分支时自动运行测试、构建Docker镜像并推送到镜像仓库。
- **部署**: 推荐使用Kubernetes (K8s) 或云服务商提供的容器服务(如 AWS ECS, Google Cloud Run进行部署以实现弹性伸缩和高可用性。