v1.0.0
RustFS Go SDK v1.0.0 发布说明
🎉 首个正式版本发布!
我们很高兴地宣布 RustFS Go SDK v1.0.0 正式发布!这是一个功能完整、生产就绪的 Go 客户端库,用于与 RustFS 对象存储系统交互。
✨ 主要特性
🚀 完整的 S3 兼容性
- 支持所有标准 S3 API 操作
- 完整的 AWS Signature V4 和 V2 支持
- 流式签名支持(用于大文件分块上传)
🏗️ 模块化设计
// 清晰的服务分离
bucketSvc := client.Bucket()
objectSvc := client.Object()
// 链式选项模式
bucketSvc.Create(ctx, "my-bucket",
bucket.WithRegion("us-east-1"),
bucket.WithObjectLocking(false),
)🏥 内置健康检查
// 简单易用的健康检查
result := client.HealthCheck(nil)
if result.Healthy {
fmt.Printf("服务健康,响应时间: %v\n", result.ResponseTime)
}
// 支持重试
result := client.HealthCheckWithRetry(opts, 3)📊 HTTP 请求追踪
- 记录 DNS 查询、TCP 连接、TLS 握手等时间
- 便于性能分析和问题诊断
- 轻量级设计,对性能影响最小
⚡ 性能优化
- 智能连接池管理
- 位置缓存减少不必要的请求
- 可配置的重试机制
- 支持并发操作
📦 核心功能
Bucket 操作
- ✅ 创建/删除存储桶
- ✅ 列出所有存储桶
- ✅ 检查存储桶是否存在
- ✅ 获取存储桶位置
- ✅ 支持区域、对象锁定等高级选项
Object 操作
- ✅ 上传/下载对象
- ✅ 流式上传下载(高效处理大文件)
- ✅ 获取对象信息和元数据
- ✅ 删除对象
- ✅ 列出对象(支持前缀过滤、递归列表)
- ✅ 复制对象(支持元数据操作)
分片上传
- ✅ 完整的分片上传流程
- ✅ 支持大文件并行上传
- ✅ 自动错误处理和重试
- ✅ 最小分片大小:5MB(除最后一个分片)
📚 文档和示例
完整示例
# 存储桶操作
go run -tags example examples/rustfs/bucketops.go
# 对象操作
go run -tags example examples/rustfs/objectops.go
# 分片上传
go run -tags example examples/rustfs/multipart.go
# 健康检查
go run -tags example examples/rustfs/health.go
# HTTP 追踪
go run -tags example examples/rustfs/trace.go文档
🔧 安装和使用
安装
go get github.com/Scorpio69t/rustfs-go快速开始
package main
import (
"context"
"fmt"
"log"
"github.com/Scorpio69t/rustfs-go"
"github.com/Scorpio69t/rustfs-go/pkg/credentials"
)
func main() {
// 初始化客户端
client, err := rustfs.New("127.0.0.1:9000", &rustfs.Options{
Credentials: credentials.NewStaticV4("access-key", "secret-key", ""),
Secure: false,
})
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// 创建存储桶
bucketSvc := client.Bucket()
if err := bucketSvc.Create(ctx, "my-bucket"); err != nil {
log.Fatal(err)
}
// 上传对象
objectSvc := client.Object()
data := strings.NewReader("Hello, RustFS!")
_, err = objectSvc.Put(ctx, "my-bucket", "hello.txt",
data, int64(data.Len()))
if err != nil {
log.Fatal(err)
}
fmt.Println("上传成功!")
}📊 测试和质量
测试覆盖
- ✅ 150+ 单元测试用例
- ✅ 测试覆盖率 > 60%
- ✅ 所有核心功能经过测试
- ✅ 集成测试验证实际场景
构建状态
$ go test ./...
ok github.com/Scorpio69t/rustfs-go 1.705s
ok github.com/Scorpio69t/rustfs-go/bucket 3.199s
ok github.com/Scorpio69t/rustfs-go/internal/core 11.139s
ok github.com/Scorpio69t/rustfs-go/internal/signer 4.544s
ok github.com/Scorpio69t/rustfs-go/internal/transport 4.604s
ok github.com/Scorpio69t/rustfs-go/object 4.247s🛣️ 路线图
v1.1.0 (下一个版本)
- 预签名 URL 支持
- 对象标签管理 API
- 更多的配置选项
v1.2.0 (未来)
- 存储桶策略管理
- 生命周期规则
- 服务端加密
- 对象版本控制
🤝 贡献
我们欢迎所有形式的贡献!
- 🐛 报告 Bug
- 💡 提出新功能建议
- 📝 改进文档
- 🔧 提交代码
请查看 CONTRIBUTING.md 了解详细信息。
📝 许可证
Apache License 2.0 - 详见 LICENSE 文件
🙏 致谢
感谢所有为这个项目做出贡献的开发者!
特别感谢:
- MinIO Go SDK - 提供了优秀的参考实现
- RustFS 团队 - 提供了高性能的对象存储服务
📞 支持
- 💬 GitHub Issues - 报告问题和提问
- 📧 Email: [your-email@example.com]
- 📖 文档
Happy Coding! 🚀