【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 KeyAccess key就像用户ID,可以唯一标识你的账户。
Secret KeySecret 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

五、小结

持续学习吧,总有新的技术会迭代。另外,我们都要全面性的思考,可以更好的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值