minio的安装及使用
目录
- 一、概述
- 二、下载二进制文件安装minio
- 三、spring boot整合使用minio
- 1、使用maven引入minio依赖
- 2、在`application.yml`中定义连接`minio`的参数
- 3、定义一个`MinioUtil.java`工具类
- 四、总结
一、概述
最近在学习使用minio
,在这里对自己的学习过程做一个记录和总结,方便自己查阅。
Minio
是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio
兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java、Python、Javacript、 Golang语言。
Minio
可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows、Linux、 OS X和FreeBSD上。安装和配置非常简单,基本是复制可执行程序,单行命令就可以运行起来。minio
还可以通过容器部署以及部署到k8s
集群,详细部署方式可以查看官方文档。
minio中文官方文档地址: https://docs.min.io/cn/
minio的源码地址:https://github.com/minio/minio
二、下载二进制文件安装minio
使用如下命令快速安装一个单机minio
# 下载 minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 添加可执行权限
chmod +x minio
# 设置登录minio的 access key
export MINIO_ACCESS_KEY=minioadmin
# 设置登录minio的 secret key
export MINIO_SECRET_KEY=minioadmin
# 启动 minio
./minio server /data
安装后使用浏览器访问http://127.0.0.1:9000,如果可以访问,则表示minio已经安装成功。输入上面自定义的access key 和 secret key就可以登录了。
三、spring boot整合使用minio
1、使用maven引入minio依赖
在pom.xml中添加如下依赖,minio的最新依赖版本可以到maven中央仓库搜索,这里使用的最新版7.1.0
<properties><minio.version>7.1.0</minio.version>
</properties><!-- minio -->
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version>
</dependency>
2、在application.yml
中定义连接minio
的参数
# minio 连接参数
minio:endpoint: 127.0.0.1port: 9000accessKey: minioadminsecretKey: minioadminbucketName: image
3、定义一个MinioUtil.java
工具类
@Slf4j
@Component
public class MinioUtils {@Value("${minio.endpoint}")private String endpoint;@Value("${minio.port}")private Integer port;@Value("${minio.accessKey}")private String accessKey;@Value("${minio.secretKey}")private String secretKey;@Value("${minio.bucketName}")private String bucketName;private static MinioClient minioClient;public MinioClient getInstance() {if (minioClient == null) {minioClient = MinioClient.builder().endpoint(endpoint, port, false).credentials(accessKey, secretKey).build();}return minioClient;}/*** * @Description 获取minio所有的桶* @return java.util.List<io.minio.messages.Bucket>**/public List<Bucket> getAllBucket() throws Exception {// 获取minio中所以的bucketList<Bucket> buckets = getInstance().listBuckets();for (Bucket bucket : buckets) {log.info("bucket 名称: {} bucket 创建时间: {}", bucket.name(), bucket.creationDate());}return buckets;}/**** @Description 将图片上传到minio服务器* @param inputStream: 输入流* @param objectName: 对象名称* @return void**/public void uploadToMinio(InputStream inputStream, String objectName) {try {long size = inputStream.available();PutObjectArgs putObjectArgs = PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(inputStream, size, -1).build();// 上传到miniogetInstance().putObject(putObjectArgs);inputStream.close();} catch (Exception e) {log.error(e.getMessage());e.printStackTrace();}}/**** @Description 根据指定的objectName获取下载链接,需要bucket设置可下载的策略* @param objectName: 对象的名称* @return java.lang.String**/public String getUrlByObjectName(String objectName) {String objectUrl = null;try {objectUrl = getInstance().getObjectUrl(bucketName, objectName);} catch (Exception e) {log.error(e.getMessage());e.printStackTrace();}return objectUrl;}/*** * @Description 根据objectName从minio中下载文件到指定的目录* @param objectName: objectName* @param fileName: 文件名称* @param dir: 文件目录* @return void**/public void downloadImageFromMinioToFile(String objectName, String fileName, String dir) throws Exception {GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(bucketName).object(objectName).build();File file = new File(dir);if (!file.exists()) {file.mkdirs();}InputStream inputStream = getInstance().getObject(objectArgs);FileOutputStream outputStream = new FileOutputStream(new File(dir, fileName.substring(fileName.lastIndexOf("/")+1)));int length;byte[] buffer = new byte[1024];while ((length = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, length);}outputStream.close();inputStream.close();}}
四、总结
最后做一个总结,这里只是对minio做一个简单的介绍和使用,详细的使用方式需要查阅官方文档。对于一些新的api的学习,最好是直接通过IDE(推荐使用Intellij IDEA)下载源码查看java doc 进行学习,举个例子:当使用minio上传对象,我们不知道该怎么传递参数的时候,我们可以通过IDEA提供的快捷键(ctrl + Q)查看api的java doc, 如下图所示:
这样对于快速掌握api的使用是非常有帮助的。
minio参考学习资料:
minio白皮书:http://www.cloudbin.cn/?p=2917
minio的安装及使用相关推荐
- minio 单机版安装
Minio 单机版安装 1.linux下载minio二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/minio 官网下载不下 ...
- minio:安装部署并安装成windows服务
前言 关于分布式文件存储,之前我也是使用fastdfs,那为什么突然选择minio? 1.它可以多平台部署 2.搭建起来不是很复杂 3.github近30K的star 什么是minio? 构建高性能的 ...
- minio下载安装与API操作
前言 minio github 地址:https://github.com/minio/minio minio 官网安装包下载地址:https://dl.min.io/server/minio/ mi ...
- minio的安装和springboot集成minio
文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...
- MinIO 客户端安装与使用教程
文章目录 1. 下载安装 1.1 Mac系统 1.2 Windows系统 1.3 Linux系统 2. 使用 2.1 配置MinIO服务器 2.2 创建桶 2.3 查询桶 2.4 命令汇总 3. 参考 ...
- minio 单机安装、部署 centos7环境
文章目录 一.默认模式下载运行 1. 下载 2. 访问minio控制台 3. 创建目录 3. 上传文件 二.企业自定义模式 2.1. 指定用户密码 2.2. 配置目录 2.3. 控制台端口 2.4. ...
- 分布式文件存储MinIO、安装和使用
1.MinIO简介 MinIO是高性能的对象存储,单个对象最大可达5TB.适合存储图片.视频.文档.备份数据.安装包等一系列文件.是一款主要采用Golang语言实现发开的高性能.分布式的对象存储系统. ...
- window10安装minio
1.首先第一步我们先下载minio 可以从官网上下不同的版本 下载地址:MinIO | Code and downloads to create high performance object sto ...
- MinIO文件服务器,从安装到使用
以往的项目,用的比较多的OSS服务是腾讯云和阿里云的存储服务,不过从去年到今年,最近的几个项目,普遍要使用Minio,所以我在开发服务器和测试服务器上都装上了minio 一.首先minio的安装 MI ...
最新文章
- Python 办公自动化,一键给PDF文件加密,超方便
- 机器学习_周志华_问题汇总_第2周
- 计算机音乐乐谱再也没有,再也没有简谱-Ryan.B/杨佬叁演唱-孙世彦制谱
- 获取某个周在本年的开始日期和结束日期
- Java动态代理全面分析
- 系统调用----sandir
- 服务器搭建对讲机系统,传统对讲机系统如何接入到融合通信系统?
- 中对缺失数据的预处理_数据预处理也有套路的
- boost::heap::binomial_heap用法的测试程序
- Torus登场:CoreOS打造的新一代分布式存储系统
- React 源码系列 | React Context 详解
- java pdf stamper_使用pdfstamper(Itext)将页码添加到pdf
- Linux之将系统时间设定为24小时制
- 你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?
- 天文专业转计算机专业,计算机专业以后可以向天文学方向发展吗
- 蓝桥杯 填写乘法算式
- 关于路缘石滑模机在施工中工艺的一些普及
- 近25年科技成果大盘点,有几大重要领域不得不看
- 【YOLOP 解读】You Only Look Once for Panoptic Driving Perception
- 机顶盒的种类有哪些?