High Performance Object Storage for AI
译文:MinIO是一个基于Go实现的高性能、兼容S3协议的对象存储
文档
- 项目地址:https://github.com/minio/minio
- 官网地址:https://min.io/
- 文档地址:https://docs.min.io/
- Software Development Kits (SDK)
- 下载地址:https://min.io/download#/docker
目录
- 启动服务端
- 客户端
启动服务端
使用Docker启动minio服务端
docker run \
-p 9000:9000 \
-p 9090:9090 \
--name minio \
-e "MINIO_ROOT_USER=ROOTUSER" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
-v $(pwd)/data:/data \
quay.io/minio/minio server /data \
--console-address ":9090"
浏览器访问:http://localhost:9090
如果自己不想搭建服务,可以直接使用官方提供的测试服务
参数 | 值 |
---|---|
Endpoint | https://play.min.io |
Access Key | Q3AM3UQ867SPQQA43P2F |
Secret Key | zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG |
客户端
官方提供了多种语言的客户端
- .NET (minio-dotnet)
- Go (minio-go)
- Haskell (minio-hs)
- Java (minio-java)
- JavaScript (minio-js)
- Python (minio-py)
以Java客户端为例
依赖
<!-- 操作minio的java客户端-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
</dependency>
Java客户端上传文件示例代码
package com.example.demo;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
public class FileUploader {
public static void makeSureBucketExists(MinioClient minioClient, String bucketName) throws Exception {
// 确保 bucketName 存在,否则会报错
boolean found = minioClient.bucketExists(
BucketExistsArgs.builder()
.bucket(bucketName)
.build());
if (!found) {
minioClient.makeBucket(
MakeBucketArgs.builder()
.bucket(bucketName)
.build());
} else {
System.out.println("Bucket already exists.");
}
}
public static void main(String[] args)
throws Exception {
// 客户端
MinioClient minioClient = MinioClient.builder()
.endpoint("http://127.0.0.1:9000")
.credentials("ROOTUSER", "CHANGEME123")
.build();
// bucket
String bucketName = "bucket";
// 确保bucket存在
makeSureBucketExists(minioClient, bucketName);
// 参数
UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder()
.bucket(bucketName)
.object("demo.txt")
.filename("demo.txt")
.build();
// 上传文件
minioClient.uploadObject(uploadObjectArgs);
System.out.println("upload success");
}
}
可以在浏览器看到刚上传的文件
参考
SpringBoot + minio实现分片上传、秒传、续传