您现在的位置是:首页 >技术交流 >MinIO:基于Go实现的高性能、兼容S3协议的对象存储网站首页技术交流

MinIO:基于Go实现的高性能、兼容S3协议的对象存储

彭世瑜 2024-07-02 06:01:02
简介MinIO:基于Go实现的高性能、兼容S3协议的对象存储

High Performance Object Storage for AI

译文:MinIO是一个基于Go实现的高性能、兼容S3协议的对象存储

文档

启动服务端

使用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

如果自己不想搭建服务,可以直接使用官方提供的测试服务

参数
Endpointhttps://play.min.io
Access KeyQ3AM3UQ867SPQQA43P2F
Secret Keyzuf+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实现分片上传、秒传、续传

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。