--- 项目名称: 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/`