一、认识minio
Minio 是一个基于开源协议的云存储服务,首先,Minio 的开源性质是其一大亮点。这意味着开发者和企业可以自由获取其源代码,并根据自身的需求进行定制和改进。这种开放性不仅降低了使用成本,还促进了技术的创新和社区的活跃发展。
在性能方面,Minio表现出色。它能够快速处理大量的数据读写请求,无论是小型项目中的少量数据,还是大型企业中的海量数据,Minio 都能游刃有余。比如说,在一个拥有高并发访问的在线教育平台上,Minio 可以确保学生们能够快速加载课程视频和资料,不会因为数据访问的延迟而影响学习体验。
Minio 的可扩展性更是令人印象深刻。当业务不断增长,数据量急剧增加时,只需简单地添加服务器节点,就能够轻松实现存储容量和性能的线性扩展。这就好比为不断扩张的城市修建更多的道路,以确保交通的顺畅。
此外,Minio 对多种操作系统的支持,使其具有广泛的适用性。无论您是在 Windows 环境下进行开发,还是在 Linux 服务器上部署应用,Minio 都能完美兼容,为您提供稳定可靠的数据存储服务。
二、部署minio
查看当前docker支持的minio版本
docker search minio
这里我们选择官方的mionio
docker pull minio/minio
启动并配置相关环境
docker run -p 9000:9000 -p 9090:9090 \ --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=123" \ -v /mydata/minio/data:/data \ minio/minio server \ /data --console-address ":9090" -address ":9000"
注:端口9000是api地址,9090是后台管理界面地址,账号密码、映射文件地址可以更改。
启动后,访问机器ip+9090,进入minio的界面,输入用户名或密码后可以访问。
进入以后,我们在图中位置新建一个bucket,然后可以往其中新存入一张图片作为测试
三、整合Springboot
1、添加依赖
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.2.0</version> </dependency>
2、创建minioConfig配置类
@Configuration
public class MinioConfig {/**
*minio url
*/
@Value("${minio.url}")
private String url;/**
*minio账户
*/
@Value("${minio.accessKey}")
private String accessKey;/**
* minio密码
*/
@Value("${minio.secretKey}")
private String secretKey;/**
* 构建 minioClient
* @return
*/
@Bean
public MinioClient getMinioClient(){
return MinioClient.builder().endpoint(url).credentials(accessKey,secretKey).build();
}
3、配置application.yml
server: port: 4000 minio: url: http://服务器地址:9000 accessKey: admin secretKey: 123456
4、然后写一个util类为我们提供一些业务方法
@Component public class MinioUtil { @Resource private MinioClient minioClient; /** * 列出所有桶 */ public List<String> getAllBucket() throws Exception { List<Bucket> buckets = minioClient.listBuckets(); return buckets.stream().map(Bucket::name).collect(Collectors.toList()); }}
5、最后我们通过一个controller接口来测试一下我们是否能够访问到我们刚刚所上传的图片
@RestController public class FileController { @Resource private MinioUtil minioUtil; @RequestMapping("/testGetAllBuckets") public String testGetAllBuckets() throws Exception { List<String> bucket = minioUtil.getAllBucket(); return bucket.get(0); } }
至此,一个简单的spring boot整合minio的demo案例已经搭建完成啦,而且大家也拥有了属于自己的oss对象存储服务器