Minio上传文件慢优化

问题:在大数据项目中,AI服务每秒产生50张图片(几十或几百K),但是Minio上传图片平均时间在0.1s每张,如何在1秒内完成50张图片上传;

解决思路:1、使用多线程;2、Minio搭建集群;3、单独开发一套服务就是Minio上传图片,然后将此服务集群部署

结果:第1种方案:使用多线程和使用单线程结果差不多,并没有提高上传效率;原因:MinioClient是单例模式,不能创建过个对象,即使使用多线程或线程池Minio存储也是串行的;

     第2种方案:Minio搭建集群,只能提高查询效率和高可用,不能提高上传效率;原因:MinioClient是单例模式,不能创建过个对象,即使Minio搭建集群,也是先往主节点串行存储,然后再同步子节点;

     第3种方案:可以提高效率;原因:MinioClient在集群服务中都是独立的对象,可以达到类似于多线程的目的;

 

package com.minio.zcminio.config;

import io.minio.MinioClient;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * @Author zc
 * @Datetime 2022/5/21 16:54
 */
@Data
@Component
public class MinIoClientConfig {
    @Value("${minio.endpoint}")
    private String endpoint;
    @Value("${minio.accessKey}")
    private String accessKey;
    @Value("${minio.secretKey}")
    private String secretKey;

    /**
     * 注入minio 客户端【MinioClient是单例模式,不能创建过个对象】
     * @return
     */
    @Bean
    public MinioClient minioClient1(){

        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }

}

 

posted @ 2022-07-26 20:13  不良帅~  阅读(7331)  评论(1编辑  收藏  举报