MinIO的基本安装与使用

13 篇文章 0 订阅

MinIO

业务中常常涉及文件的操作,公司服务器在上百万个面单文件的压力下常常处于高负载的边缘,于是采用了MinIO寻求解决方案!

概述

MinIO 是一个高性能的对象存储服务,非常适合于存储大容量非结构化的数据。例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等,进而减小服务器的压力

官网

官网地址:https://min.io/

文档地址:https://docs.min.io/

下载地址:https://min.io/download#/windows

MinIO的部署

这里推荐使用Docker部署,简单方便快捷。还没安装Docker的伙伴看下我的Docker入门教程。

docker搜索拉取镜像

[root@pihao /]# docker search minio
NAME                           DESCRIPTION                                     STARS     
minio/minio                    Minio is an Amazon S3 compatible object stor…   396       
minio/mc                       Minio Client (mc) provides a modern alternat…   20         
jessestuart/minio              Minio server — supports arm (arm32v6, arm32v…   5
pixelchrome/minio-arm          This Dockerfile installs Minio on your ARM-P…   4
[root@pihao /]# docker pull minio/minio 直接下载第一个镜像
    .
    .
    .
下载完毕

启动minio的镜像

# port 端口映射
# -d 后台运行
# --name 取别名
# -v 将容器中 /data 目录下的文件挂载到本机防止文件丢失
# MINIO_ACCESS_KEY 相当于用户名
# MINIO_SECRET_KEY 相当于密码 (Access key length should be at least 3, and secret key length at least 8 characters,注意:账号至少3位,密码至少8位)

[root@pihao /]# docker run -p 9000:9000 -d \
        --name my_minio \
        -v /home/minio/data:/data \
        -e "MINIO_ACCESS_KEY=pihao" \
        -e "MINIO_SECRET_KEY=1234abcd" \
        minio/minio server /data
[root@pihao /]#

查看启动的容器

[root@pihao /]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                                                  NAMES
fd932e49828e        minio/minio           "/usr/bin/docker-ent…"   5 seconds ago       Up 3 seconds        0.0.0.0:9000->9000/tcp                                                 my_minio
[root@pihao /]# 启动正常,接着访问 MinIO的Web页面

访问MinIO的页面

# 服务器地址:9000/
http://112.74.167.52:9000/

页面如图

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

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

ok,现在MinIO的部署和测试完成。接下来就是调用其API完成文件的上传与下载

Java SDK

使用java测试文件上传与下载

添加maven依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.0.3</version>
</dependency>

文件上传

/**
 * 上传本地文件,通过文件路径的方式
 */
@Test
    public void uploadFileByFile() throws Exception{
        MinioClient minioClient = null;
        try {
            minioClient = new MinioClient("http://112.74.167.52:9000/", "pihao", "1234abcd");
            // 检查存储桶是否已经存在
            String bucketName = "pihao";
            boolean isExist = minioClient.bucketExists(bucketName);
            if(isExist) {
                log.info("该存储桶已经存在: {}",bucketName);
            } else {
                // 创建存储桶,用于存储文件。
                minioClient.makeBucket(bucketName);
                log.info("存储桶创建成功:{}",bucketName);
            }

            //上传本地文件
            String fileName = "AS830627419CN.pdf";
            minioClient.putObject(bucketName,fileName, "D:\\labelTest\\AS830627419CN.pdf");
            log.info("文件上传成功:{}",fileName);

        } catch (Exception e){
            log.info("文件上传失败:{}",e.getMessage());
        }

    }

文件下载


/**
     * 通过流的方式上传文件
     */
    @Test
    public void uploadFileByStream() throws  Exception{
        FileInputStream fis = new FileInputStream(new File("D:\\labelTest\\AS830627419CN.pdf"));
        MinioClient  minioClient = null;
        String fileName = "AS830627419CN-2.pdf";
        String bucketName = "pihao";

        try {
            minioClient = new MinioClient("http://112.74.167.52:9000/", "pihao", "1234abcd");
            minioClient.putObject(bucketName,fileName,fis,fis.available(),"application/octet-stream");
            log.info("文件上传成功:{}",fileName);
        } catch (Exception e){
            log.error("文件上传失败: {}",e.getMessage());
        } finally {
            fis.close();
        }
/**
     * 下载对象
     * @throws Exception
     */
    @Test
    public void downLoadFileFromMiniIO() throws Exception{
        MinioClient minioClient = null;
        String bucketName = "pihao";
        String fileName = "AS830627419CN-2.pdf";
        try {
            minioClient = new MinioClient("http://112.74.167.52:9000/", "pihao", "1234abcd");
            minioClient.statObject(bucketName, fileName); //判断桶中的这个文件存不存在,如果不存在会报错
            // 获取文件的输入流。
            InputStream stream = minioClient.getObject(bucketName, fileName);
            FileOutputStream fos = new FileOutputStream("C:\\Users\\pihao\\Desktop\\"+fileName);
            //下载到本地
            IOUtils.write(IOUtils.toByteArray(stream),fos);
            log.info("文件下载成功:{}",fileName);
        } catch (Exception e){
            log.error("文件下载失败: {}",e.getMessage());
        }
    }

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

整个过程还是相当简单的,至于后面的集群以及分部署部署方式,后面再研究下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值