Minio新一代自建文件系统——Minio
Posted 你个佬六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Minio新一代自建文件系统——Minio相关的知识,希望对你有一定的参考价值。
一、前言
说到文件,我们做技术开发,经常会把文件放到文件服务。常用的文件服务我们一般会用自建的,或者是云文件服务。常见的自建文件服务,一般我们会做机器挂载、自建文件服务器;而云文件服务,我们一般会用到第三方的文件服务,如七牛,阿里文件服务,或者是各种第三方的CDN。
这里呢,我们就跟大家来说一下自建文件服务。在小编前面的博客中介绍过FastDFS。从搭建的博客中,大家可以感觉到,FastDFS搭建就比较复杂,处理文件也比较复杂。
所以呢,在后面技术方案迭代中,Minio就孵化出来了。这票博客小编就跟大家介绍一下Minio。说说他的应用,以及应用中可能会遇到的问题。
【FastDFS】分布式文件系统简介
【FastDFS】搭建一台结构简单的FastDFS图片服务器
【FastDFS】maven项目使用FastDFS上传和读取图片
二、Minio有什么改进?
三、Docker快速安装Minio
关于daoker的安装,大家可以参考这两篇博客:
【Docker】容器技术黑马Docker(一)——了解容器技术,了解Docker
【Docker】容器技术黑马Docker(二)——入门
首先拉取minio镜像,我们可以用最新版本的
docker pull minio/minio
启动镜像,minio默认的端口是9000,我们通过9300来映射镜像中的9000.
配置minio的登录账号为 minio (最少3位) 和密码为 adminminio (最少8位)
docker run -d -p 9300:9000 --name minio \\
-e "MINIO_ACCESS_KEY=minio" \\
-e "MINIO_SECRET_KEY=adminminio" \\
-v /Users/wanglei/Documents/file/minio/data:/data \\
-v /Users/wanglei/Documents/file/minio/config:/root/.minio \\
minio/minio server /data \\
--console-address ":9000" --address ":9090"
启动成功后,就可以通过浏览器来登录minio后台管理。
浏览器查询, http://localhost:9300/login ,输入账号密码后登录。
到这里基本就搭建完成一个单机版的文件系统了。
四、springboot快速接入minio
最低需求
Java 1.8或更高版本:
- OracleJDK 8.0
- OpenJDK8.0
使用maven
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
使用gradle
dependencies
compile 'io.minio:minio:7.0.2'
快速入门示例-文件上传
本示例程序连接到一个对象存储服务,创建一个存储桶并上传一个文件到该桶中。
你需要有存储服务的三个参数才能连接到该服务。
参数 | 说明 |
---|---|
Endpoint | 对象存储服务的URL |
Access Key | Access key就像用户ID,可以唯一标识你的账户。 |
Secret Key | Secret key是你账户的密码。 |
FileUploader.java
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import org.xmlpull.v1.XmlPullParserException;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
public class FileUploader
public static void main(String[] args) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException
try
// 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
MinioClient minioClient = new MinioClient("https://play.min.io", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");
// 检查存储桶是否已经存在
boolean isExist = minioClient.bucketExists("asiatrip");
if(isExist)
System.out.println("Bucket already exists.");
else
// 创建一个名为asiatrip的存储桶,用于存储照片的zip文件。
minioClient.makeBucket("asiatrip");
// 使用putObject上传一个文件到存储桶中。
minioClient.putObject("asiatrip","asiaphotos.zip", "/home/user/Photos/asiaphotos.zip");
System.out.println("/home/user/Photos/asiaphotos.zip is successfully uploaded as asiaphotos.zip to `asiatrip` bucket.");
catch(MinioException e)
System.out.println("Error occurred: " + e);
更多api文档请看 官网
http://docs.minio.org.cn/docs/master/java-client-quickstart-guide
http://docs.minio.org.cn/docs/master/java-client-api-reference
五、小结
持续学习吧,总有新的技术会迭代。另外,我们都要全面性的思考,可以更好的应用。
以上是关于Minio新一代自建文件系统——Minio的主要内容,如果未能解决你的问题,请参考以下文章