基于 NestJS 的微服务架构系统
这是一个基于 NestJS 框架构建的现代化微服务系统,采用分布式架构设计,支持高并发、高可用的业务场景。
-
Gateway (网关服务) - 端口 3000
- API 网关和路由转发
- 统一的接口入口
- 负载均衡和请求分发
-
Main Service (主服务) - TCP: 3001, HTTP: 3011
- 核心业务逻辑处理
- 用户管理和认证
- 积分系统管理
-
Content Service (内容服务) - TCP: 3004, HTTP: 3014
- 内容管理和存储
- 文件上传和处理
- 媒体资源管理
-
Admin Service (管理服务) - 端口 3002
- 后台管理功能
- 数据统计和监控
- 系统配置管理
- Redis - 缓存和会话存储
- ChromaDB - 向量数据库
- MinIO - 对象存储服务
- Prisma - 数据库 ORM
- Node.js 18+
- pnpm
- Docker & Docker Compose
- PM2 (生产环境)
# 安装依赖
$ pnpm install
# 启动开发环境
$ pnpm run start:all
# 或者单独启动服务
$ pnpm run start:gateway # 网关服务
$ pnpm run start:main # 主服务
$ pnpm run start:content # 内容服务
$ pnpm run start:admin # 管理服务# 开发环境
$ docker-compose up -d
# 生产环境
$ docker-compose -f docker-compose.yml up -d
# 快速部署脚本
$ ./deploy.sh# 构建项目
$ pnpm run build
# 启动所有服务
$ pnpm run pm2:start
# 重启服务
$ pnpm run pm2:restart
# 查看日志
$ pnpm run pm2:logs# 启动所有微服务
$ pnpm run start:all
# 单独启动服务
$ pnpm run start:gateway
$ pnpm run start:main
$ pnpm run start:content
$ pnpm run start:admin
# 代码格式化
$ pnpm run format
# 代码检查
$ pnpm run lint# 构建所有服务
$ pnpm run build
# 单独构建
$ pnpm run build gateway
$ pnpm run build main
$ pnpm run build content
$ pnpm run build admin# 单元测试
$ pnpm run test
# 监听模式测试
$ pnpm run test:watch
# 测试覆盖率
$ pnpm run test:cov
# E2E 测试
$ pnpm run test:e2e# 启动所有服务
$ pnpm run pm2:start
# 重启所有服务
$ pnpm run pm2:restart
# 停止所有服务
$ pnpm run pm2:stop
# 删除所有服务
$ pnpm run pm2:delete
# 查看日志
$ pnpm run pm2:logs
# 重启网关
$ pnpm run pm2:gateway
# 重启微服务
$ pnpm run pm2:microservices
# 重启管理服务
$ pnpm run pm2:admin| 服务 | TCP端口 | HTTP端口 | 描述 |
|---|---|---|---|
| Gateway | - | 3000 | API网关 |
| Main | 3001 | 3011 | 主服务 |
| Content | 3004 | 3014 | 内容服务 |
| Admin | - | 3002 | 管理服务 |
| Redis | - | 6379 | 缓存服务 |
| MinIO | - | 9000/9001 | 对象存储 |
| ChromaDB | - | 8000 | 向量数据库 |
启动服务后,可以访问以下 Swagger 文档:
- Gateway API: http://localhost:3000/api/doc
- Main Service: http://localhost:3011/api/main/doc
- Content Service: http://localhost:3014/api/content/doc
- Admin Service: http://localhost:3002/api/admin/doc
使用提供的部署脚本进行一键部署:
# 拉取代码并部署
$ ./scripts/pull.sh
# 完整部署
$ ./deploy.sh- 克隆代码并安装依赖
- 配置环境变量
- 执行数据库迁移
- 构建项目
- 启动服务
创建 .env 文件并配置以下变量:
NODE_ENV=production
REDIS_URL=redis://localhost:6379
CHROMA_DB_URL=http://localhost:8000
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_ACCESS_KEY=your_access_key
MINIO_SECRET_KEY=your_secret_key- 日志文件位置:
./logs/ - PM2 监控:
pm2 monit - 健康检查: 各服务提供
/health端点
- 框架: NestJS
- 语言: TypeScript
- 数据库: Prisma ORM
- 缓存: Redis
- 消息队列: TCP 微服务通信
- 文件存储: MinIO
- 向量数据库: ChromaDB
- 容器化: Docker
- 进程管理: PM2
- 使用 TypeScript 进行类型安全开发
- 遵循 NestJS 最佳实践
- 微服务间通过 TCP 通信
- 统一的错误处理和日志记录
- API 文档自动生成
- Fork 项目
- 创建功能分支
- 提交代码变更
- 推送到分支
- 创建 Pull Request
本项目采用 UNLICENSED 许可证。
如有问题或建议,请通过以下方式联系:
- 创建 Issue
- 发送邮件
- 加入讨论群