FTS - 文件传输服务
基于Go 1.26.5和Gin框架的现代化文件传输微服务
特性
- 🚀 现代化架构: 使用Go 1.26.5最新特性
- 📁 多存储支持: 支持本地存储和MinIO对象存储
- 🔧 配置灵活: 支持YAML配置文件,环境变量覆盖
- 🏥 健康检查: 完整的健康检查和监控端点
- 🔒 安全性: 文件类型检查,大小限制,JWT认证支持
- 📊 可观测性: 完整的日志记录和错误追踪
- 🐳 容器化: Docker和docker-compose开箱即用
- 🛠️ 开发友好: 完整的Makefile工具链
快速开始
环境要求
- Go 1.26.5
- PostgreSQL / MySQL (可选)
- Redis (可选)
- MinIO (可选,用于对象存储)
安装依赖
make deps
运行服务
# 开发模式
make dev
# 或构建后运行
make build
make run
使用Docker
# 启动完整环境(包括数据库、Redis等)
docker-compose up -d
# 仅构建应用镜像
make docker-build
API文档
健康检查
GET /health # 详细健康检查
GET /health/simple # 简单健康检查
GET /version # 版本信息
文件操作
POST /fts/upload # 文件上传
GET /fts/download # 文件下载
配置说明
主要配置文件:etc/fts_dev.yaml
Service: fts
Host: 0.0.0.0
Port: 16290
# 数据库配置
Databases:
Driver: postgres
Source:
- "postgres://user:pass@localhost/fts?sslmode=disable"
# 缓存配置
Cache: redis://localhost:6379/0
# 对象存储配置
MinioOss:
Site: http://localhost:9000
Endpoint: localhost:9000
AccessKeyId: minioadmin
AccessKeySecret: minioadmin
UseSSL: false
# 本地存储配置
Local:
Site: http://localhost:16290
UploadDir: ./uploads/
# FTS特定配置
FtsConfig:
InputKey: file
MaxSize: 5368709120 # 5GB
Allows:
- .jpg
- .png
- .pdf
- .doc
# ... 更多支持的文件类型
开发工具
# 查看所有可用命令
make help
# 代码检查
make lint
# 运行测试
make test
# 安全扫描
make security
# 格式化代码
make fmt
# 更新依赖
make mod-update
构建和部署
# 构建所有平台
make build-all
# 构建Linux版本
make build-linux
# 构建Windows版本
make build-windows
# 构建macOS版本
make build-darwin
监控和运维
健康检查端点
GET /health- 返回详细的服务状态,包括数据库、Redis、ETCD连接状态GET /health/simple- 返回简单的服务状态HEAD /- 快速健康检查
日志记录
服务支持结构化日志记录,日志级别可通过配置调整。
错误处理
统一的错误响应格式:
{
"code": 10001,
"message": "错误描述",
"trace_id": "request-trace-id"
}
项目结构
fts/
├── cmd/
│ ├── cli/ # CLI工具
│ └── main/ # 主服务入口
├── internal/
│ ├── config/ # 配置管理
│ ├── errors/ # 错误定义
│ ├── health/ # 健康检查
│ ├── impl/ # 服务实现
│ ├── logic/ # 业务逻辑
│ ├── models/ # 数据模型
│ ├── response/ # 响应处理
│ └── routers/ # 路由定义
├── etc/ # 配置文件
├── scripts/ # 脚本文件
├── test/ # 测试文件
├── build/ # 构建输出
├── Dockerfile # Docker镜像构建
├── docker-compose.yml # Docker编排
├── Makefile # 构建工具
└── README.md # 项目文档
贡献指南
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
许可证
此项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
联系方式
- 项目主页: [GitHub仓库地址]
- 问题反馈: [Issues页面]
- 邮箱: [team@example.com]