Minio

一  Minio介绍

1  minio是什么

官网:https://www.minio.org.cn/

官方示例代码演示:Java Quickstart Guide — MinIO Object Storage for Linux

MinIO是一个开源的分布式对象存储服务器,支持S3协议并且可以在多节点上实现数据的高可用和容错。它采用Go语言开发,拥有轻量级、高性能、易部署等特点,并且可以自由选择底层存储介质。

2  主要特点

MinIO的主要特点包括:

1、高性能:MinIO基于GO语言编写,具有高速、轻量级、高并发等性能特点,还支持多线程和缓存等机制进行优化,可以快速地处理大规模数据。

2、可扩展性:MinIO采用分布式存储模式,支持水平扩展,通过增加节点数量来扩展存储容量和性能,支持自动数据迁移和负载均衡。

3、安全性:MinIO提供了多种安全策略,如访问控制列表(ACL)、服务端加密(SSE)、传输层安全性(TLS)等,可以保障数据安全和隐私。

4、兼容性:MinIO兼容AWS S3 API,还支持其他云服务提供商的API,比如GCP、Azure等,可以通过简单的配置实现互操作性。

5、简单易用:MinIO的部署和管理非常简单,只需要运行一个二进制包即可启动服务,同时提供了Web界面和命令行工具等方便的管理工具。

S3协议 :是Amazon Web Services (AWS) 提供的对象存储服务(Simple Storage Service)的API协议。它是一种 RESTful风格的Web服务接口,使用HTTP/HTTPS协议进行通信,支持多种编程语言和操作系统,并实现了数据的可靠存储、高扩展性以及良好的可用性。

二  安装与启动

1  linux

1.1  创建数据存储目录

mkdir -p ~/minio/data

1.2  创建minio

docker run \
-p 9000:9000 \
-p 9090:9090 \
--name minio \
-v ~/minio/data:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123456" \
-d \
quay.io/minio/minio server /data --console-address ":9090"

1.3  访问地址

linux的ip加上端口号9000

http://192.168.6.100:9090/

2  window

2.1  下载minio的下载文件

2.2  创建空文件夹,作为数据存储目录

2.3  在windows使用命令启动Minio服务

后面的地址是创建数据存储目录的地址

-- minio.exe server E:\minio\date

2.4  访问

* 访问Minio控制台  ip:9000

* 默认控制台用户名和密码都是 :minioadmin

3  前提准备

步骤一  在minio控制台创建buckets,点击创建bucket

步骤二  输入名字点击创建

步骤三  点进text桶里面改权限

将private改成public

三  上传文件

 官方示例代码演示:Java Quickstart Guide — MinIO Object Storage for Linux

1  在配置文件配置相关信息

minio:
  endpointUrl: http://192.168.6.129:9000
  accessKey: minioadmin
  secreKey: minioadmin
  bucketName: daijia

2  定义配置类读取配置信息

@Configuration
@ConfigurationProperties(prefix="minio") //读取节点
@Data
public class MinioProperties {

    private String endpointUrl;
    private String accessKey;
    private String secreKey;
    private String bucketName;
}

3  编写上传文件逻辑

将配置信息注入类中使用

@Autowired
    private MinioProperties minioProperties;

    @Override
    public String upload(MultipartFile file) {
        /*
        步骤:
        1 创建MinIO客户端并配置。
        2 检查和创建桶(如果不存在)。
        3 生成唯一的文件名和路径。
        4 上传文件到MinIO。
        5 返回文件的访问URL。
        6 处理上传过程中可能发生的异常。
         */
        try {
            // 创建一个Minio的客户端对象
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(minioProperties.getEndpointUrl())
                    .credentials(minioProperties.getAccessKey(), minioProperties.getSecreKey())
                    .build();

            //2 检查和创建桶(如果不存在)。
            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(minioProperties.getBucketName()).build());
            if (!found) {       // 如果不存在,那么此时就创建一个新的桶
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(minioProperties.getBucketName()).build());
            } else {  // 如果存在打印信息
                System.out.println("Bucket 'daijia' already exists.");
            }

            //3 生成唯一的文件名和路径。
            String extFileName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
            String fileName = new SimpleDateFormat("yyyyMMdd")
                    .format(new Date()) + "/" + UUID.randomUUID().toString().replace("-" , "") + "." + extFileName;
            //4 上传文件到MinIO。
            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                    .bucket(minioProperties.getBucketName())
                    .stream(file.getInputStream(), file.getSize(), -1)
                    .object(fileName)
                    .build();
            minioClient.putObject(putObjectArgs) ;

            //5 返回文件的访问URL。
            return minioProperties.getEndpointUrl() + "/" + minioProperties.getBucketName() + "/" + fileName ;

        } catch (Exception e) {
            //6 处理上传过程中可能发生的异常。
            throw new GuiguException(ResultCodeEnum.DATA_ERROR);
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值