本文源码:GitHub·点这里 || GitEE·点这里
一、MinIO 简介
1、根底形容
MinIO 是一个开源的对象存储服务。适宜于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器 / 虚拟机镜像等,而一个对象文件能够是任意大小,从几 kb 到最大 5T 不等。
MinIO 是一个十分轻量的服务, 能够很简略的和其余利用的联合,相似 NodeJS, Redis 或者 MySQL。
2、存储机制
MinIO 应用按对象的嵌入式擦除编码爱护数据,该编码以汇编代码编写,可提供最高的性能。MinIO 应用 Reed-Solomon 代码将对象划分为 n / 2 个数据和 n / 2 个奇偶校验块 - 只管能够将它们配置为任何所需的冗余级别。这意味着在 12 个驱动器设置中,将一个对象分片为 6 个数据和 6 个奇偶校验块。即便失落了多达 5 个 ((n/2)–1) 个驱动器(无论是奇偶校验还是数据),依然能够从其余驱动器牢靠地重建数据。MinIO 的实现可确保即便失落或无奈应用多个设施,也能够读取对象或写入新对象。最初,MinIO 的擦除代码位于对象级别,并且能够一次修复一个对象。
二、MinIO 环境搭建
1、安装包下载
https://dl.min.io/server/minio/release/linux-amd64/minio
倡议应用某雷下载,速度会快点,下载包上传到 /opt/minioconfig/run
目录下。
2、创立数据存储目录
mkdir -p /data/minio/data
3、服务启动
启动并指定数据寄存地址
/opt/minioconfig/run/minio server /data/minio/data/
输入日志
Endpoint: http://localhost:9000 http://127.0.0.1:9000
AccessKey: minioadmin
SecretKey: minioadmin
这里就是登录地址和账号密码。
三、整合 SpringBoot 环境
1、根底依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>3.0.12</version>
</dependency>
2、根底配置
配置因素:地址和端口,登录名,明码,HTML 存储桶,图片存储桶。
minio:
endpoint: http://192.168.72.133:9000
accessKey: minioadmin
secretKey: minioadmin
bucketNameHtml: html
bucketNameImage: image
文件上传之后,能够基于文件地址间接拜访,然而须要在 MinIO 中配置文件的读写权限:
3、配置参数类
@Component
@ConfigurationProperties(prefix = "minio")
public class ParamConfig {
private String endpoint ;
private String accessKey ;
private String secretKey ;
private String bucketNameHtml ;
private String bucketNameImage ;
// 省略 get 和 set 办法
}
4、基于 MinIO 配置类
封装 MinIO 客户端连贯工具,文件上传的根底办法,返回文件在 MinIO 服务上的 URL 地址。
import io.minio.MinioClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@Component
public class MinIOConfig {private static final Logger LOGGER = LoggerFactory.getLogger(MinIOConfig.class) ;
@Resource
private ParamConfig paramConfig ;
private MinioClient minioClient ;
/**
* 初始化 MinIO 客户端
*/
@PostConstruct
private void init(){
try {minioClient = new MinioClient(paramConfig.getEndpoint(),
paramConfig.getAccessKey(),
paramConfig.getSecretKey());
} catch (Exception e) {e.printStackTrace();
LOGGER.info("MinIoClient init fail ...");
}
}
/**
* 上传 <html> 页面
*/
public String uploadHtml (String fileName, String filePath) throws Exception {minioClient.putObject(paramConfig.getBucketNameHtml(),fileName,filePath);
return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameHtml()+"/"+fileName ;
}
/**
* 上传 <img> 图片
*/
public String uploadImg (String imgName, String imgPath) throws Exception {minioClient.putObject(paramConfig.getBucketNameImage(),imgName,imgPath);
return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameImage()+"/"+imgName ;
}
}
5、服务实现
提供两个根底办法:HTML 和图片上传,存储在不同地位。
import com.minio.file.config.MinIOConfig;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class UploadServiceImpl implements UploadService {
@Resource
private MinIOConfig minIOConfig ;
// 上传 <html> , 返回服务器地址
@Override
public String uploadHtml(String fileName, String filePath) throws Exception {return minIOConfig.uploadHtml(fileName,filePath);
}
// 上传 <img> , 返回服务器地址
@Override
public String uploadImg(String imgName, String imgPath) throws Exception {return minIOConfig.uploadImg(imgName,imgPath);
}
}
上传之后,基于浏览器拜访接口返回的 url,查看成果:
四、源代码地址
GitHub·地址
https://github.com/cicadasmile/middle-ware-parent
GitEE·地址
https://gitee.com/cicadasmile/middle-ware-parent
举荐浏览:SpringBoot 进阶系列
序号 | 文章题目 |
---|---|
01 | Boot2 整合 shard-jdbc 中间件,实现数据分库分表 |
02 | Boot2 整合 JavaMail , 实现异步发送邮件性能 |
03 | Boot2 整合 RocketMQ , 实现申请异步解决 |
04 | Boot2 整合 Swagger2 , 构建接口治理界面 |
05 | Boot2 整合 QuartJob , 实现定时器实时治理 |
06 | Boot2 整合 Redis 集群 , 实现音讯队列场景 |
07 | Boot2 整合 Dubbo 框架 , 实现 RPC 服务近程调用 |
08 | Boot2 整合 ElasticSearch 框架, 实现高性能搜索引擎 |
09 | Boot2 整合 JWT 框架, 解决 Token 跨域验证问题 |
10 | Boot2 整合 FastDFS 中间件,实现文件散布治理 |
11 | Boot2 整合 Shiro 框架,实现用户权限治理 |
12 | Boot2 整合 Security 框架,实现用户权限治理 |
13 | Boot2 整合 ClickHouse 数据库,实现数据高性能查问剖析 |
14 | Boot2 整合 Drools 规定引擎,实现高效的业务规定 |
15 | Boot2 整合 多数据源,配置 MybatisPlus 加强插件 |
16 | Boot2 整合 Zookeeper 组件,治理架构中服务协调 |
17 | Boot2 整合 Nacos 组件,环境搭建和入门案例详解 |
18 | 文件系统(01):基于 Boot2 框架,治理 Excel 和 PDF |
18 | 文件系统(02):基于 Boot2 框架,治理 Xml 和 CSV |
19 | Boot2 整合 Kafka 组件,利用案例和流程详解 |
20 | Boot2 整合 ElasticJob 框架,定制化治理流程 |
21 | Boot2 整合 JTA 组件,多数据源事务管理 |
22 | Boot2 整合 FreeMarker 模板,实现页面动态化解决 |