• 高性能对象存储minio


    MinIO介绍

    MinIO 是在 Apache License v2.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。MinIO 是一个高性能的对象存储原生支持 Kubernetes 部署的解决方案。

    Minio 是一个非常轻量的服务,它可以存储⼤容量的⾮结构化数据,例如图⽚、视频、⽇志⽂件、备份数据和容器/虚拟机镜像等。对于⼤多数的企业来说,这可以说是最为理想的存储媒介了。而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

    MinIO具备如下特性

    • 部署简单,支持各种平台
    • 高性能海量存储,支持单个对象最大5TB
    • 兼容 Amazon S3接口
    • SDK 支持:有类似 Java、Python 或 Go 等语言的 sdk 支持
    • 数据保护:即使损坏一般的磁盘依然可用数据恢复
    • 高性能:可用达到55G每秒读,35G每秒写的速度

    使用Docker 安装 MinIO

    第一步:启动一个miniio容器 , 官方文档

    docker run --name minio -p 9090:9000 -p 9999:9999 -d \
    --restart=always -e \
    "MINIO_ROOT_USER=minioadmin" \
    -e "MINIO_ROOT_PASSWORD=minioadmin123?" \
    -v /home/minio/data:/data \
    -v /home/minio/config:/root/.minio minio/minio server /data --console-address '0.0.0.0:9999'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    第二步:访问minio管理界面 ,端口9090

    在这里插入图片描述

    点击 create a Bucket 创建一个bucket(桶), 这里的Bucket 我们可以理解为文件存储的目录

    在这里插入图片描述

    输入 bucket name ,点击create bucket 。可以通过 upload 上传文件到bucket中。

    在这里插入图片描述

    Java 上传文件到minio

    第一步:导入minio的依赖 ,参考文档 Minio官方文档

    <dependency>
        <groupId>io.miniogroupId>
        <artifactId>minioartifactId>
        <version>7.1.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第二步:编写一个测试类

    public static void main(String[] args) throws Exception {
            try {
            
                // 构建一个Minio客户端
                MinioClient minioClient = MinioClient.builder()
                		//创建容器时指定的账号
                        .credentials("minioadmin", "minioadmin123?")
                        //上传地址
                        .endpoint("http://minio服务器IP:9090").build();
    
                File file = new File("d:/图片.jpg");
    
                PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                        .object("图片.jpg")	//文件名
                        .contentType("image/jpeg")	//文件类型
                        .bucket("bucket-test")  //存储目录名
                        .stream(new FileInputStream(file), file.length(), -1).build(); //文件流,以及大小,-1代表不分片
    
    			//执行上传
                ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs);
                System.out.println("上传结果 "+objectWriteResponse);
    			//上传之后的文件地址是:
                String filePath = "http://115.159.88.63:9090/bucket-test/图片.jpg";
    
            } 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

    执行测试代码之后,观看minio管理界面,多了一个图片
    在这里插入图片描述

    配置权限

    我这里上传了一个图片,上传之后,图片的访问地址是:  http://minio服务器ip:9090/存储目录/文件名,但是你访问的时候会出现这样的错误 ,那是因为匿名(游客没登录)用户没有访问权限

    在这里插入图片描述

    如果我们需要我们上传的文件可以被匿名用户访问,那么需要添加访问权限:找到文件存储目录,点击manager

    在这里插入图片描述
    然后找到access Rules添加访问规则如下:
    在这里插入图片描述

    然后再次访问,就可以看到上传的图片了

    在这里插入图片描述
    文章就到这里把,喜欢的话建议收藏,顺便给个好评哦,一键三连就更好啦!!!

  • 相关阅读:
    【微服务 31】超细的Spring Cloud 整合Seata实现分布式事务(排坑版)【云原生】
    Linux篇-善用威胁情报
    【分布式】BASE理论详解
    Vue2 02 基本语法和事件绑定
    计算机毕设(附源码)JAVA-SSM基于的图书馆管理系统
    图学习【参考资料2】-知识补充与node2vec代码注解
    k8s存储卷 PV和PVC
    NVIDIA Jetson Nano 2GB 官方系列文章汇总
    基于java+springmvc+mybatis+vue+mysql的车辆违章处理系统
    SQL 注入复习总结
  • 原文地址:https://blog.csdn.net/u014494148/article/details/126387428