MinIO

1、MinIO简介

MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。

  • Golang语言实现,配置简单,单行命令可以运行起来。
  • MinIO兼容亚马逊S3云存储服务接口,适合于存储大容量非结构化的数据,一个对象文件可以是任意大小,从几kb到最大5T不等。
  • 官网文档:http://docs.minio.org.cn/docs/。

2、对象存储的方式对比

MinIO_第1张图片

3、分布式文件系统对比

MinIO_第2张图片

4、Docker安装MinIO

  • 拉取镜像
docker pull minio/minio
  • 创建容器
docker run minio服务端;
-p 9000:9000 --console-address ":9000" 挂载9000端口为web端口; 
-p 9001:9001 --address ":9001" 挂载9001端口为客户端(如Java客户端)访问的端口;
-e 设置9000端口web访问的 账号和密码;
-v 挂载数据和配置地址;

docker run -p 9000:9000 -p 9001:9001 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /home/data:/data \
-v /home/config:/root/.minio \
minio/minio server --console-address ":9000" --address ":9001" /data

5、基本概念

  • bucket – 类比于文件系统的目录
  • Object – 类比文件系统的文件
  • Keys – 类比文件名

6、快速入门

6.1、上传文件
  • 导入坐标
 <dependency>
    <groupId>io.miniogroupId>
    <artifactId>minioartifactId>
    <version>7.1.0version>       
dependency>
  • 代码实现
 public static void main(String[] args) {

        FileInputStream fileInputStream = null;
        try {

            fileInputStream =  new FileInputStream("D:\\list.html");;

            //1.创建minio链接客户端
            MinioClient minioClient = MinioClient.builder().credentials("minio", "minio123")
                    //注意这个端口是客户端的访问端口
                    .endpoint("http://192.168.1.150:9001")
                    .build();
            //2.上传
            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                    .object("list.html")//文件名
                    .contentType("text/html")//文件类型
                    .bucket("article")//桶名词  与minio创建的名词一致
                    .stream(fileInputStream, fileInputStream.available(), -1) //文件流
                    .build();
            minioClient.putObject(putObjectArgs);
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

参考:

  • https://blog.csdn.net/it_lihongmin/article/details/123810072
  • https://www.bilibili.com/video/BV1Qs4y1v7x4/?p=37&vd_source=be5b84948fa1fe2b38c555aa889eee03

你可能感兴趣的:(项目,java,docker,开发语言)