125 lines
4.1 KiB
Markdown
125 lines
4.1 KiB
Markdown
---
|
||
项目名称: 91PORN #如果在dmp则使用dmp的名称 如果不在则使用自定义名称
|
||
一级部门: 北斗 #请填写一级部门名称 北斗
|
||
二级部门: 瑞升 #请填写二级部门名称,无则留空, 如无极
|
||
|
||
DMP编码: JHA-204 #无则留空
|
||
|
||
项目类型: app
|
||
# 可选值:
|
||
# H5 / APP / PC / 服务 / 组件 / 工具 / AI / 中间件
|
||
|
||
开发语言: GO
|
||
# 可选值:
|
||
# GO / Java / PHP / Node
|
||
|
||
项目负责人: DN8276 # 员工编号, 多个用逗号隔开,这里的负责是这套代码的负责人
|
||
|
||
运维负责人: DN9460,DN9651,DN4792 #
|
||
|
||
产品负责人: YY1165,YY1145,YY1208 # 张天意,李云霄,邦妮
|
||
|
||
|
||
项目成员: DN8276
|
||
|
||
项目状态: 开发中
|
||
# 可选值:
|
||
# 开发中 / 维护中 / 已停止 / 已归档
|
||
|
||
项目级别: 高
|
||
# 可选值:
|
||
# 高 / 中 / 低 , 北斗体系 s和a为 高 b为中 c d为低
|
||
|
||
核心分支: main
|
||
# 即部署时候使用的分支,可选值:
|
||
# master / main / dev / release
|
||
|
||
代码仓库:
|
||
- ssh://git@bd-git-sh.jsyyds.com:8082/ruisheng/jha-204-91pron/backend/91porn-server.git
|
||
|
||
最后审计人:
|
||
|
||
最后审计时间:
|
||
|
||
告警群:
|
||
|
||
备注:
|
||
|
||
---
|
||
|
||
# 1. 项目说明
|
||
|
||
91PORN后端服务,基于 Go 1.23 + Gin 框架,采用多服务架构:
|
||
|
||
- **APP API (`app/`)**: 面向客户端的接口服务,包含用户、视频、搜索、支付、会员、排行、抽奖、发布等模块
|
||
- **Web API (`web/`)**: 面向管理后台的接口服务,包含运营管理、数据配置、内容审核等模块
|
||
- **SKD (`skd/`)**: 后台定时任务与异步处理服务,包含定时任务 (`job/`)、一次性脚本 (`once/`)、数据导出等
|
||
- **Swagger (`main.go`)**: API 文档服务,端口 20114
|
||
|
||
项目目录结构:
|
||
|
||
```
|
||
91porn-server/
|
||
├── app/ # APP 端 API 服务 (api/router/service/middleware/proto/appg)
|
||
├── web/ # Web 管理后台 API 服务 (api/router/service/middleware/proto/webg)
|
||
├── skd/ # 后台任务服务 (job/once/service/skdg)
|
||
├── common/ # 公共模块 (cache/db/redis/elastic/file/email/log/tg/httputil/stderr 等)
|
||
├── models/ # 数据模型层 (Init/commod/v/*)
|
||
├── middleware/ # 全局中间件 (CORS/日志/IP/RequestID/UA)
|
||
├── generate/ # 代码生成工具
|
||
├── scripts/ # 运维/数据脚本
|
||
├── swagger/ # Swagger 文档
|
||
├── tests/ # 测试
|
||
├── Makefile # 构建脚本
|
||
└── Dockerfile # Docker 构建文件
|
||
```
|
||
|
||
|
||
# 2. 基础设施与中间件
|
||
|
||
- MongoDB(主数据库,通过 go.mongodb.org/mongo-driver)
|
||
- Redis(缓存、分布式锁 redsync)
|
||
- Kafka(消息队列,Sarama 客户端)
|
||
- Elasticsearch(全文搜索)
|
||
- AWS S3(文件存储)
|
||
- Telegram Bot(告警通知)
|
||
- 邮件服务
|
||
|
||
|
||
# 3. 运维部署
|
||
|
||
通过 Shell 脚本交叉编译(`GOOS=linux GOARCH=amd64`)并打包上传到远程服务器,每个服务有独立的部署脚本:
|
||
|
||
| 脚本 | 服务 | 产物 | 远程目录 |
|
||
|------|------|------|----------|
|
||
| `app_update_prod.sh` | APP API | `91porn-app-server` | `/home/server/91porn/app` |
|
||
| `web_update_prod.sh` | Web API | `91porn-web-server` | `/home/server/91porn/web` |
|
||
| `skd_update_prod.sh` | SKD | `91porn-skd-server` | `/home/server/91porn/skd` |
|
||
| `skd_update_test.sh` | SKD (测试) | `91porn-skd-server` | `/server/91porn/91porn-skd` |
|
||
|
||
发布流程:
|
||
1. 本地交叉编译 `GOOS=linux GOARCH=amd64 go build`
|
||
2. 生成 MD5 校验文件
|
||
3. 打包为 `.tar.gz`
|
||
4. 通过 `scp` 上传到远程服务器
|
||
5. 发送 Telegram 通知到服务器小组群
|
||
6. 测试环境额外通过 SSH 远程解压并 `supervisorctl restart` 重启服务
|
||
|
||
|
||
# 4. 风险说明
|
||
|
||
- Kafka 消息积压可能导致异步任务延迟
|
||
- Redis 热 Key 风险(缓存层使用广泛)
|
||
- MongoDB 大查询性能风险
|
||
- 依赖外部服务:AWS S3、Telegram、邮件、Elasticsearch
|
||
|
||
|
||
# 5. 历史事故(可选)
|
||
- 暂无
|
||
|
||
# 6. 交接说明(可选)
|
||
|
||
- 各服务配置文件位于各自目录下的 `config/` 文件夹(JSON 格式)
|
||
- 加密密钥文件:`enc.key`、`enc_pms.key`、`enkeymt.key`,注意保密
|
||
- APP 端包含请求加密中间件(RSA),密钥在 `app/middleware/requestEncrypt/`
|