[AIGC ]详解MinIO:特性,Docker部署和Spring Boot集成

[AIGC ]详解MinIO:特性,Docker部署和Spring Boot集成

    正在检查是否收录...

MinIO是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合存储大容量非结构化的数据,如图片、视频、日志文件、备份数据、容器/虚机镜像等,而且MinIO非常轻量,只有一个单独的二进制文件。它的设计目标是实现轻量、快速和最佳的云存储体验。接下来,我们将详细介绍MinIO的特性,并演示如何使用Docker进行部署,还会给出如何在Spring Boot项目中集成它。

文章目录

MinIO的特性概述 高性能 S3兼容 数据保护 身份管理 Docker部署MinIO Spring Boot集成MinIO 测试类

MinIO的特性概述

高性能

MinIO是高性能对象存储服务器,适合大规模数据存储。它的数据管理非常简单而且快速,可以存储在本地(例如,硬盘)或网络(例如,S3兼容的存储服务)上。

S3兼容

MinIO提供了S3兼容的API,允许我们使用现有的S3库(如boto和s3cmd)与它进行交互。

数据保护

MinIO使用Erasure Code和Bitrot Protection技术来保护数据。Erasure Code技术可以抗硬盘故障,而Bitrot Protection则能够保护和修复损坏的数据。

身份管理

MinIO支持用户和组的身份管理,以配合企业的安全策略。

现在我们已经对MinIO有了基本了解,接下来我们来看如何进行单机部署。

Docker部署MinIO

docker run -p 9000:9000 -p 9090:9090 --name minio1 \ -e "MINIO_ROOT_USER=root" \ -e "MINIO_ROOT_PASSWORD=rootpwd1234" \ -v ./file:/data \ minio/minio server /data --console-address ":9090" 

在这段代码中,我们让Docker拉取了最新版的MinIO镜像,并创建名为minio1的容器。我们在9000端口启动了MinIO服务器,并映射到宿主机的同一端口。然后我们通过MINIO_ROOT_USERMINIO_ROOT_PASSWORD环境变量设置了MinIO的用户名和密码。最后,我们将服务器的数据文件挂在到了宿主机的/mnt/data目录。

启动之后,你可以通过浏览器访问 http://localhost:9000,然后用之前设置的用户和密码登录。

接下来我们看看如何在Spring Boot项目中集成MinIO。

Spring Boot集成MinIO

在Spring Boot项目中,我们可以使用MinioClient与MinIO服务器进行交互。首先,我们需要在pom.xml文件中引入minio的maven依赖:

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

然后,我们在Spring Boot的配置文件中加入MinIO服务器的信息:

minio: endpoint: http://localhost:9000 rootUser: UXGsBs0f6KOq3wQwrwa0 rootPassword: xx 

注意打开miniio控制台页面,申请访问key,替换上面的rootUser, rootPassword

接着,我们创建一个配置类,将MinioClient配置为一个Bean:

@Configuration public class MinioConfig { @Value("${minio.endpoint}") private String endpoint; @Value("${minio.rootUser}") private String rootUser; @Value("${minio.rootPassword}") private String rootPassword; @Bean public MinioClient minioClient() { return MinioClient.builder() .endpoint(endpoint) .credentials(rootUser, rootPassword) .build(); } } 

现在,我们可以在Spring Boot项目中自动装配MinioClient,并使用它与MinIO服务器进行交互了。

@Service public class StorageService { private final MinioClient minioClient; public StorageService(MinioClient minioClient) { this.minioClient = minioClient; } public boolean isObjectExist(String bucketName, String objectName) throws Exception { return minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(objectName).build()); } } 

测试类

上传一个文件,检查文件是否存在

package com.example.easyminiio; import jakarta.annotation.Resource; import lombok.SneakyThrows; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class EasyMiniIoApplicationTests { @Resource StorageService storageService; @Test void contextLoads() { } @Test @SneakyThrows public void test() { storageService.isObjectExist("mall", "Snipaste_2024-05-15_22-31-25.png"); } } 

运行结果:

希望以上介绍和案例可以帮助你更好地理解和使用MinIO。 MinIO作为一个强大而易用的对象存储服务,将会在云计算领域发挥更大的作用。

cliwordotp服务器docdockerragiva对象存储高性能codespringboot云存储数据保护api大规模数据unitapp浏览器数据管理
  • 本文作者:李琛
  • 本文链接: https://wapzz.net/post-14810.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.3W+
5
0
1
WAP站长官方

“meedu爬虫”探秘:技术双刃剑下的数据与信息安全

上一篇

深入解析“Discuz爬虫”:原理、应用与风险防范

下一篇
  • 复制图片
按住ctrl可打开默认菜单