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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: MinIO:基于Go实现的高性能、兼容S3协议的对象存储

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");

   }

}


可以在浏览器看到刚上传的文件


1223d23adb7d597a7062e9d0b10568ef_084821a1a33343fb8fe4cbbe1e9f2c47.png

参考

SpringBoot + minio实现分片上传、秒传、续传

————————————————

版权声明:本文为CSDN博主「彭世瑜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mouday/article/details/130931211

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
1月前
|
存储 Java API
开源对象存储服务(MinIO),正在备受欢迎!
本文介绍了MinIO,一个高性能、开源的对象存储服务器,兼容Amazon S3 API,适合存储大量非结构化数据。文章详细讲解了MinIO在Java中的使用方法,包括添加依赖、初始化客户端、基本操作(创建桶、上传/下载/删除对象)和高级功能(设置桶策略、使用预签名URL),并提供了Spring Boot集成MinIO的示例。
102 4
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
51 13
|
1月前
|
安全 Go 调度
Go语言中的并发编程:解锁高性能程序设计之门####
探索Go语言如何以简洁高效的并发模型,重新定义现代软件开发的边界。本文将深入剖析Goroutines与Channels的工作原理,揭秘它们为何成为实现高并发、高性能应用的关键。跟随我们的旅程,从基础概念到实战技巧,一步步揭开Go并发编程的神秘面纱,让您的代码在多核时代翩翩起舞。 ####
|
2月前
|
中间件 Go API
使用Go语言构建高性能RESTful API
在现代软件开发中,RESTful API因其简洁和高效而成为构建网络服务的首选。Go语言以其并发处理能力和高性能著称,是开发RESTful API的理想选择。本文将介绍如何使用Go语言构建RESTful API,包括基础的路由设置、中间件的使用、数据验证、错误处理以及性能优化。通过实际代码示例,我们将展示Go语言在API开发中的强大功能和灵活性。
|
3月前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
4月前
|
安全 Java 测试技术
Go 高性能编程心法探秘
文章深入探讨了Go语言在高性能编程中的各种技巧,包括常用数据结构的使用、内存管理、并发编程策略,以及如何通过减少锁的使用、有效利用sync包中的工具来优化程序性能。
23 0
|
6月前
|
缓存 Java Go
如何用Go语言构建高性能服务
【6月更文挑战第8天】Go语言凭借其并发能力和简洁语法,成为构建高性能服务的首选。本文关注使用Go语言的关键设计原则(简洁、并发、错误处理和资源管理)、性能优化技巧(减少内存分配、使用缓存、避免锁竞争、优化数据结构和利用并发模式)以及代码示例,展示如何构建HTTP服务器。通过遵循这些原则和技巧,可创建出稳定、高效的Go服务。
|
7月前
|
缓存 负载均衡 网络协议
使用Go语言开发高性能服务的深度解析
【5月更文挑战第21天】本文深入探讨了使用Go语言开发高性能服务的技巧,强调了Go的并发性能、内存管理和网络编程优势。关键点包括:1) 利用goroutine和channel进行并发处理,通过goroutine池优化资源;2) 注意内存管理,减少不必要的分配和释放,使用pprof分析;3) 使用非阻塞I/O和连接池提升网络性能,结合HTTP/2和负载均衡技术;4) 通过性能分析、代码优化、缓存和压缩等手段进一步提升服务性能。掌握这些技术能帮助开发者构建更高效稳定的服务。
|
7月前
|
负载均衡 Go 调度
使用Go语言构建高性能的Web服务器:协程与Channel的深度解析
在追求高性能Web服务的今天,Go语言以其强大的并发性能和简洁的语法赢得了开发者的青睐。本文将深入探讨Go语言在构建高性能Web服务器方面的应用,特别是协程(goroutine)和通道(channel)这两个核心概念。我们将通过示例代码,展示如何利用协程处理并发请求,并通过通道实现协程间的通信和同步,从而构建出高效、稳定的Web服务器。
|
7月前
|
存储 Java 开发工具
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南
701 0
轻松搭建分布式对象存储:Spring Boot整合MinIO的快速指南