Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >放弃FastDFS,Spring Boot 整合 MinIO 实现分布式文件服务,真香!

放弃FastDFS,Spring Boot 整合 MinIO 实现分布式文件服务,真香!

作者头像
码猿技术专栏
发布于 2023-05-01 03:53:11
发布于 2023-05-01 03:53:11
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

今天分享一个非常不错且开源的分布式存储组件MinIO,有多人朋友在用,文末留言评价一下~

什么是MinIO?

Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、RedisMySQL等。

1. 应用场景

MinIO 的应用场景除了可以作为私有云的对象存储服务来使用,也可以作为云对象存储的网关层,无缝对接 Amazon S3 或者 MicroSoft Azure

2. 特点

  1. 高性能:作为一款高性能存储,在标准硬件条件下,其读写速率分别可以达到 55Gb/s35Gb/s。并且MinIO 支持一个对象文件可以是任意大小,从几kb到最大5T不等。
  2. 可扩展:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并且支持跨越多个数据中心
  3. 云原生容器化、基于K8S的编排、多租户支持。
  4. Amazon S3兼容:使用 Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK 和 AWS CLI 访问Minio服务器
  5. SDK支持
    1. GO SDK:https://github.com/minio/minio-go
    2. JavaSDK:https://github.com/minio/minio-java
    3. PythonSDK:https://github.com/minio/minio-py
  6. 图形化界面:有操作页面
  7. 支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据。

“功能很强大,本文只是抛砖引玉,有兴趣的朋友自己去探索吧~ ”

安装MinIO

安装非常简单,笔者这里使用docker安装,步骤如下:

1. 获取镜像

执行命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker pull minio/minio

2. 启动镜像

执行命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 docker run -p 9000:9000 -p 9001:9001 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin" -v /home/data:/data -v /home/config:/root/.minio minio/minio server --console-address ":9000" --address ":9001" /data

命令解释如下:

  • -p9000是图形界面的端口,9001是API的端口,在使用SDK连接需要用到
  • MINIO_ACCESS_KEY:指定图形界面的用户名
  • MINIO_SECRET_KEY:指定图形界面的密码

按照上述两个步骤启动成功即可。

3. 图形界面操作

安装成功后直接访问地址:http:/ip:9000/login,如下:

输入用户名和密码登录成功后,如下:

菜单很多,这里就不再详细介绍了,笔者这里直接在Buckets菜单中创建一个桶为test,如下图:

并且设置这个桶的隐私规则为public,如下:

“MinIO到此已经安装设置成功了 ”

Spring Boot 整合MinIO 上传文件

虽然MinIO在图形界面提供了手动上传的操作,但是也可以通过SDK的方式去上传,下面介绍一下Spring Boot 整合MinIO上传文件。

1. 获取accessKey和secretKey

这里的accessKeysecretKey并不是图形界面登录名和密码,获取很简单,直接在图形界面中操作,如下图:

2. 添加依赖

添加MinIO的依赖,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.2.1</version>
</dependency>

3. 添加配置

这里笔者对SDK做了简单的封装,案例源码都会提供,下面只列出部分代码。

aplication.yml配置中添加MInIO相关的配置,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
minio:
  # 访问的url
  endpoint: http://192.168.47.148
  # API的端口
  port: 9001
  # 秘钥
  accessKey: HQGWFYLWGC6FVJ0CQFOG
  secretKey: pUGhAgQhZDxJaLmN3uz65YX7Bb3FyLdLglBvcCr1
  secure: false
  bucket-name: test # 桶名 我这是给出了一个默认桶名
  image-size: 10485760 # 我在这里设定了 图片文件的最大大小
  file-size: 1073741824 # 此处是设定了文件的最大大小

4. 新建上传文件接口

笔者这里定义了一个上传文件接口,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @author 公众号:码猿技术专栏
 */
@RequestMapping("/minio")
@RestController
public class MinioController {

    @Autowired
    private  MinioService minioService;

    @PostMapping("/upload")
    public String uploadFile(MultipartFile file, String bucketName) {
        String fileType = FileTypeUtils.getFileType(file);
        if (fileType != null) {
            return minioService.putObject(file, bucketName, fileType);
        }
        return "不支持的文件格式。请确认格式,重新上传!!!";
    }
}

“源码已经上传GitHub,关注公众号:码猿技术专栏,回复关键词:9535 获取! ”

5. 测试

上述4个步骤已经整合完成了,下面直接调用接口上传一张图片试一下,如下:

接口返回的URL就是文件的访问地址,直接输入浏览器访问即可。

在MInIO中也可以看到存储的文件,如下图:

如果你需要分享给别人,也可以手动分享,有效期是7天,一旦过了这个有效期将会失效,如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码猿技术专栏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。
别惹CC
2025/03/05
3700
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
Spring Boot集成MinIO
在Spring Boot项目中集成MinIO(一个高性能的分布式对象存储服务)是一个相对简单的过程。以下是一个详细的步骤指南,帮助你完成这个集成。
科技新语
2024/12/02
2540
Spring Boot集成MinIO
SpringBoot 2.x 开发案例之整合MinIo文件服务
在之前的图床开发中撸主曾使用了分布式文件服务FASTDFS和阿里云的OSS对象存储来存储妹子图。奈何OSS太贵,FASTDFS搭建配置又太繁琐,今天给大家推荐一款极易上手的高性能对象存储服务MinIO 。
小柒2012
2020/05/09
5.8K0
SpringBoot 2.x 开发案例之整合MinIo文件服务
Github 标星 32K+Star,16 分钟搭建高性能的文件服务器!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/04/25
11.9K0
Github 标星 32K+Star,16 分钟搭建高性能的文件服务器!
SpringBoot + Minio 实现文件切片极速上传技术(实战典藏版)
提示:请不要多个博客来回跳着看,此文章之详细绝无仅有,融合多家之长,如果遇见报错,请仔细捋一遍文章,不要忽略!我在写的时候因为许多文章不全面,来回跳遇见许多坑,希望大家可以避免,本文章中悉数做了标注提醒!!!
码猿技术专栏
2024/07/08
1.7K0
SpringBoot + Minio 实现文件切片极速上传技术(实战典藏版)
Spring Boot整合MinIO实现文件上传和下载
家人们啦!,上篇文章了,我们讲了如何使用docker-compose快速部署MinIO,在今天的文章中,我将向大家介绍如何将Spring Boot与MinIO进行无缝整合,以便高效地管理和操作文件存储。通过这个整合,你将能够轻松地在Spring Boot应用程序中实现文件的上传和下载等功能。让我们开始吧
修己xj
2023/08/25
1K0
Spring Boot整合MinIO实现文件上传和下载
蘑菇博客如何集成Minio对象存储服务器
今天我们来讲讲蘑菇博客中的文件存储,蘑菇博客目前使用了本地文件存储,七牛云存储和Minio存储,下面是每种存储服务之间的优缺点,让我们一起来康康吧
陌溪
2021/04/09
1.6K0
蘑菇博客如何集成Minio对象存储服务器
MinIO对象存储
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
别团等shy哥发育
2023/03/30
7.3K0
MinIO对象存储
【minio】Ubuntu安装MinIO文件服务器并通过C++上传下载
MinIO是一种高性能、可扩展的对象存储服务,它可以在私有云、公共云和边缘计算环境中运行。MinIO的设计目标是为了满足现代应用程序对数据存储的需求,例如视频流处理、机器学习、大数据分析等。
DevFrank
2024/07/24
5120
使用minio搭建私有化对象存储服务
在工作中我们或多或少都会接触到对象存储,但是这些对象存储大部分都是云服务,对外的项目还可以使用,但是遇到一些需要私有化部署的,我们还想继续使用对象存储怎么办呢?
咪啪咪啪
2020/06/18
6.4K0
使用minio搭建私有化对象存储服务
分布式文件系统 Minio
Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容 AWS S3 云存储服务接口,非常适合存储大容量非结构化的数据,如图片、视频、日志文件、备份数据等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
陳斯托洛夫斯記
2024/08/07
1.3K0
基于Docker Compose部署分布式MinIO集群
Minio 是一个基于Go语言的对象存储服务。它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。区别于分布式存储系统,minio的特色在于简单、轻量级,对开发者友好,认为存储应该是一个开发问题而不是一个运维问题。
py3study
2020/08/05
4.5K0
基于Docker Compose部署分布式MinIO集群
linux安装MinIo高性能文件上传服务器
我这也有准备好的: 链接: https://www.sky12580.cn/upload/2022/04/minio
高大北
2022/06/14
2.1K0
分布式文件系统实战,使用MinIO构建分布式文件系统!
随着文件数据的越来越多,传统的文件存储方式通过tomcat或nginx虚拟化的静态资源文件在单一的服务器节点内已经无法满足系统需求,也不利于文件的管理和维护,这就需要一个系统来管理多台计算机节点上的文件数据,这就是分布式文件系统。
架构师精进
2023/03/23
5K0
分布式文件系统实战,使用MinIO构建分布式文件系统!
开源分布式对象存储-MinIO 顶
Minio可能在国内知道和用的人不是很多,我第一次接触Minio是也是当时我们需要使用Spinnaker集群来管理和维护内部的Kubernetes集群,而Spinnaker的中的持久化存储就使用的是Minio Spinnaker集群搭建。
BGBiao
2020/02/18
4.4K3
开源分布式对象存储-MinIO
                                                                            顶
分布式文件系统MinIO
我们的系统离不开文件存储系统,因为系统会存储各种文件,所以选择一个好的文件存储系统是十分有必要的,我们选择文件系统一般需要看其使用是否简单,是否可靠,对各种环境是否适配,社区是否活跃,分布式等,随着云的普及,现在很多云厂商提供了文件存储服务,我们成为OSS,我们的文件由云厂商进行托管,我们只需要按时按量付费,这就是SAAS模式,使用OSS,那么自然得付费,加上文件是存储在别人家,对于很多行业来说,文件得存储在自己的网络,所以OSS自然不行,所以我们得搭建自己的文件服务器,常见的分布式文件服务器有HDFS,FastDFS等,不过对于HDFS,FastDFS,他们的学习成本有点高,加上随着云原生的普及,可能就不太适合我们现在使用,所以我们就说到了MinIO。
小四的技术之旅
2022/07/26
4.9K0
分布式文件系统MinIO
云原生 | 从零开始,Minio 高性能分布式对象存储快速入手指南
描述: 对象存储(Object Storage)是一种存储数据的计算机体系结构,它以对象的形式存储和管理数据。与传统的文件系统和块存储不同,对象存储将数据作为对象存储在分布式的存储集群中,每个对象都有一个唯一的标识符(通常是一个URL),并且可以通过这个标识符来访问和检索数据。
全栈工程师修炼指南
2023/10/31
9.2K1
云原生 | 从零开始,Minio 高性能分布式对象存储快速入手指南
SpringBoot 整合 Minio
MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议,项目地址是 https://github.com/minio/minio 。
默存
2023/09/01
4940
SpringBoot 整合 Minio
minio 对象存储 单机部署
一. 简介 Minio是Apache License v2.0下发布的对象存储服务器。它与Amazon S3云存储服务兼容。它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM映像。对象的大小可以从几KB到最大5TB Minio服务器足够轻,可以与应用程序堆栈捆绑在一起,类似于NodeJS,Redis和MySQL。https://docs.minio.io/
Freedom123
2024/03/29
3800
mac 上学习k8s系列(12)minio
Minio (https://github.com/minio/minio)提供对象存储服务,兼容了 AWS S3 存储协议,用于非结构化的数据存。非结构化对象,比如图像,音、视频,日志文件,备份镜像…等等管理不方便,不定长,大小变化大、类型多,云端的访问复杂,minio就是来解决这种场景的。非结构化的文件从数KB到5TB都能很好的支持。开源并且用Go语言开发,有web操作界面,我们可以用它来搭建兼容S3协议的存储云服务。
golangLeetcode
2022/08/02
7350
相关推荐
🗄️Spring Boot 3 整合 MinIO 实现分布式文件存储
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验