1、MinIO简介
MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。
- Golang语言实现,配置简单,单行命令可以运行起来。
- MinIO兼容亚马逊S3云存储服务接口,适合于存储大容量非结构化的数据,一个对象文件可以是任意大小,从几kb到最大5T不等。
- 官网文档:http://docs.minio.org.cn/docs/。
2、对象存储的方式对比
3、分布式文件系统对比
4、Docker安装MinIO
- 拉取镜像
docker pull minio/minio
- 创建容器
docker run minio服务端;
-p 9000:9000 --console-address ":9000" 挂载9000端口为web端口;
-p 9001:9001 --address ":9001" 挂载9001端口为客户端(如Java客户端)访问的端口;
-e 设置9000端口web访问的 账号和密码;
-v 挂载数据和配置地址;
docker run -p 9000:9000 -p 9001:9001 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /home/data:/data \
-v /home/config:/root/.minio \
minio/minio server --console-address ":9000" --address ":9001" /data
5、基本概念
- bucket – 类比于文件系统的目录
- Object – 类比文件系统的文件
- Keys – 类比文件名
6、快速入门
6.1、上传文件
- 导入坐标
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>
- 代码实现
public static void main(String[] args) {
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("D:\\list.html");;
//1.创建minio链接客户端
MinioClient minioClient = MinioClient.builder().credentials("minio", "minio123")
//注意这个端口是客户端的访问端口
.endpoint("http://192.168.1.150:9001")
.build();
//2.上传
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object("list.html")//文件名
.contentType("text/html")//文件类型
.bucket("article")//桶名词 与minio创建的名词一致
.stream(fileInputStream, fileInputStream.available(), -1) //文件流
.build();
minioClient.putObject(putObjectArgs);
} catch (Exception ex) {
ex.printStackTrace();
}
}
参考:
- https://blog.csdn.net/it_lihongmin/article/details/123810072
- https://www.bilibili.com/video/BV1Qs4y1v7x4/?p=37&vd_source=be5b84948fa1fe2b38c555aa889eee03