+124
@@ -0,0 +1,124 @@
|
||||
---
|
||||
项目名称: 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/`
|
||||
Reference in New Issue
Block a user