初了解minio

了解minio前,我们先介绍下什么是对象存储服务.

对象存储服务OSS(Object Storage Service)是⼀种海量、安全、低成本、⾼可靠的云存储服务,适合存放任意类型的⽂件。容量和处理能⼒弹性扩展,多种存储类型供选择,全⾯优化存储成本。

对象存储最⼤的优势就在于它可以存储⼤容量的⾮结构化数据,例如图⽚、视频、⽇志⽂件、备份数据和容器/虚拟机镜像等。对于⼤多数的企业来说,这可以说是最为理想的存储媒介了。

对于业务已在公有云上的企业来说,使⽤公有云提供的 OSS 服务,可以很好的节省存储的成本,且⼀般都提供易接⼊的 SDK,以阿⾥云的OSS 服务为例,在存储介质的上层封装可标注的 RESTful API 接⼝,使⽤起来⼗分⽅便。

但是对于⼀些没有选择业务上云或者想要下云的企业来说,要使⽤公有云的 OSS,在公⽹带宽⽅⾯就需要有⼀定的投⼊,毕竟需要通过公⽹传输,带宽太⼩,传输速度就会慢,且在传输过程中数据的安全性和完整性也有损失的风险,⾛专线的费⽤⼜⼗分昂贵,不实在。

这种情况下,MinIO 就是⼀个不错的选择,⿇雀虽⼩,五脏俱全,企业可以以此快速构建⾃⼰内部的对象存储服务。

<总之一句话:对象存储服务是一种云存储服务,用来存储对象(图⽚、视频、⽇志⽂件、备份数据)

minio是什么?

Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

Minio 是一个非常轻量的服务,可以很简单的和其他应用的结合使用,类似 NodeJS, Redis 或者 MySQL。Minio 不仅提供了服务器、Web 访问、客户端,还提供了 Docker 安装,各种语言的 SDK、实例、实战秘籍等等,支持分布式部署。

minio的作用?

存储对象在minio服务器就不用把数据存储在当前的服务器内存中,减轻了服务器的压力,提供可用性.

Minio 的特点
1 部署简单,支持各种平台
2 海量存储,支持单个对象最大5TB
3 兼容 Amazon S3接口
4 SDK 支持:有类似 Java、Python 或 Go 等语言的 sdk 支持
5.存储多种后端。

MinIO快速⼊门案例

第一步:创建maven项目,导入依赖

我们入门使用的依赖
      <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.3.3</version>
        </dependency>

本案例需要使用的辅助依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.7.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

再编写一个测试类

import io.minio.*;
import org.junit.jupiter.api.Test;

import java.io.File;
import java.io.FileInputStream;

public class MinioDemo {
    //1. 创建一个客户端
        //获取客户端对象
        MinioClient   client = MinioClient.builder().endpoint("http://localhost:9000") //本地ip+端口号
                .credentials("minioadmin", "minioadmin")  //用户名和密码
                .build();
    //2. 创建一个Bucket(桶)
    @Test
    public void createBucket() throws Exception{
        //这里参数就是很智能的可以生成.鼠标光标会放在.build前,我门只需要加上桶名就行
        client.makeBucket(MakeBucketArgs.builder().bucket("aaa").build());
    }
    
    //3. 判断这个桶是否存在
    @Test
    public void bucketExist() throws Exception{
        boolean result = client.bucketExists(BucketExistsArgs.builder().bucket("aaa").build());
        System.out.println(result);
    }

    //4. 给桶中放对象(文件) 有两种方法: 1.使用putObject() 2使用uploadObject() 有点小不同
    @Test
    public void reloadTest() throws Exception{
        //方法一 1.使用putObject()
        File file = new File("d:\\Pictures\\Camera Roll\\微信图片_20211106080029.png");
        FileInputStream fps = new FileInputStream(file);
        client.putObject(PutObjectArgs.builder()
                .bucket("aaa")   //桶名
                .object("ooo.jpg") //要生成的对象名
                .stream(fps,file.length(),-1)
                .contentType("image/jpeg")
                .build());

        //方法二2使用uploadObject()
        client.uploadObject(UploadObjectArgs.builder()
                .bucket("aaa")  //桶名
                .object("ppp.jpg")  //要生成的对象名
                .filename("d:\\Pictures\\Camera Roll\\1636156989(1).jpg")  //要上传的文件在本地的路径
                .build());

    }
}

这个代码可以分布完成,就比较清楚了,

  • 上面代码一二步骤执行完成后,我们可以先不用着急一步完成所有代码,先可以使用使用浏览器访问下linio服务器,登录成功可视化界面后可以看到[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qsVNjJ2N-1658915566173)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1658848276001.png)]

  • 我们的名字叫aaa的桶已经创建完成了,接下来再编写第三步的代码进行一个验证,看在控制台是否可以打印出true.

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kihfChVv-1658915566179)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1658848483791.png)]

  • 然后就可以编写第四步.完成后可以去浏览器中查看对象是否已经上传成功.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0RVFHiqe-1658915566181)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1658848678645.png)]

    如果没有显示的话可以刷新下网页,或者点击箭头指向的Browse进行查看.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-srh89Tca-1658915566183)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1658848941756.png)]

    这样就已经完成啦一个小小的案例编写.

    重复三遍就记住啦!!!

    <总之还是那句话:对象存储服务是一种云存储服务,用来存储对象(图⽚、视频、⽇志⽂件、备份数据)

    minio就是一种对象存储服务,用来存储对象

    这样就已经完成啦一个小小的案例编写.

    重复三遍就记住啦!!!

    <总之还是那句话:对象存储服务是一种云存储服务,用来存储对象(图⽚、视频、⽇志⽂件、备份数据)

    minio就是一种对象存储服务,用来存储对象

自己写着学习的,有问题的,请各位指正,感谢Thanks♪(・ω・)ノ

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐