• 【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
    
    • 1

    在这里插入图片描述

    启动镜像,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"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    启动成功后,就可以通过浏览器来登录minio后台管理。
    浏览器查询, http://localhost:9300/login ,输入账号密码后登录。

    在这里插入图片描述
    在这里插入图片描述
    到这里基本就搭建完成一个单机版的文件系统了。

    四、springboot快速接入minio

    最低需求

    Java 1.8或更高版本:

    • OracleJDK 8.0
    • OpenJDK8.0

    使用maven

    
        io.minio
        minio
        7.0.2
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用gradle

    dependencies {
        compile 'io.minio:minio:7.0.2'
    }
    
    • 1
    • 2
    • 3

    快速入门示例-文件上传

    本示例程序连接到一个对象存储服务,创建一个存储桶并上传一个文件到该桶中。

    你需要有存储服务的三个参数才能连接到该服务。

    参数说明
    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);
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    更多api文档请看 官网

    http://docs.minio.org.cn/docs/master/java-client-quickstart-guide

    http://docs.minio.org.cn/docs/master/java-client-api-reference

    五、小结

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

  • 相关阅读:
    Redis的特性以及使用场景
    Spring数据库数据源JDBC连接池连接MySQL的超时问题
    load 镜像及 疑难杂症(一)
    openssl在window下的编译方法
    前端技能树,面试复习第 45 天—— Vue 基础 | 模版编译原理 | mixin | use 原理 | 源码解析
    一文带你梳理Python的中级知识
    网络威胁防御+资产测绘系统-Golang开发
    CTFHub | 过滤空格
    xml schema中的all元素
    十四天学会C++之第一天(入门和基本语法)
  • 原文地址:https://blog.csdn.net/kisscatforever/article/details/127720893