关于java:Github标星28K这款可视化的对象存储服务真香

在咱们平时做我的项目的时候,文件存储是个很常见的需要。这时候咱们就会用到对象存储服务,平时咱们可能会抉择OSS、AWS S3这类第三方服务。明天带大家搭建一款本人的对象存储服务,带可视化治理,用起来也挺简略!

SpringBoot实战电商我的项目mall(50k+star)地址:https://github.com/macrozheng/mall

MinIO简介

MinIO 是一款基于Go语言的高性能对象存储服务,在Github上已有28K+Star。它采纳了Apache License v2.0开源协定,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

装置

应用Docker装置MinIO服务非常简单,几个命令就能够搞定!

  • 首先下载MinIO的Docker镜像;
docker pull minio/minio
  • 下载实现后应用如下命令运行MinIO服务,留神应用--console-address指定MinIO Console的运行端口(否则会随机端口运行):
docker run -p 9090:9000 -p 9001:9001 --name minio \
-v /mydata/minio/data:/data \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
-d minio/minio server /data --console-address ":9001"
  • 运行胜利后就可拜访MinIO Console的治理界面了,输出账号密码minioadmin:minioadmin即可登录,拜访地址:http://192.168.7.142:9090

MinIO Console应用

MinIO Console是MinIO自带的可视化管理工具,比起上一代的可视化工具性能还是弱小了不少的,上面咱们来体验下这个工具。

  • 先来看下上一代的MinIO Browser,根本只反对存储桶及文件的治理性能;

  • 再来看下MinIO Console,不仅反对了存储桶、文件的治理,还减少了用户、权限、日志等治理性能,强了不少;

  • 在存储文件之前,咱们首先得创立一个存储桶;

  • 创立胜利后,再上传一个文件;

  • 上传胜利后如果你想从内部拜访文件的话,须要把拜访策略设置为公开,这里的策略只有公开和公有两种,感觉不太灵便;

  • 之后把地址改为外网拜访地址即可拜访图片,默认只能下载不能间接查看(这个问题咱们上面再解决),外网拜访地址:http://192.168.7.142:9090/blo…

客户端应用

其实对于对象存储来说,MinIO Console的性能还是不够用的,所以官网还提供了基于命令行的客户端MinIO Client(简称mc),上面咱们来讲讲它的应用办法。

常用命令

咱们先来相熟下mc的命令,这些命令和Linux中的命令有很多相似之处。

命令 作用
ls 列出文件和文件夹
mb 创立一个存储桶或一个文件夹
rb 删除一个存储桶或一个文件夹
cat 显示文件和对象内容
pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT
share 生成用于共享的URL
cp 拷贝文件和对象
mirror 给存储桶和文件夹做镜像
find 基于参数查找文件
diff 对两个文件夹或者存储桶比拟差别
rm 删除文件和对象
events 治理对象告诉
watch 监听文件和对象的事件
policy 治理拜访策略
session 为cp命令治理保留的会话
config 治理mc配置文件
update 查看软件更新
version 输入版本信息

装置及配置

因为MinIO服务端中并没有自带客户端,所以咱们须要装置并配置完客户端后能力应用,这里以Docker环境下的装置为例。

  • 下载MinIO Client 的Docker镜像;
docker pull minio/mc
  • 在Docker容器中运行mc;
docker run -it --entrypoint=/bin/sh minio/mc
  • 运行实现后咱们须要进行配置,将咱们本人的MinIO服务配置到客户端下来,配置的格局如下;
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY>
  • 对于咱们的MinIO服务能够这样配置。
mc config host add minio http://192.168.7.142:9090 minioadmin minioadmin

罕用操作

  • 查看存储桶和查看存储桶中存在的文件;
# 查看存储桶
mc ls minio
# 查看存储桶中存在的文件
mc ls minio/blog

  • 创立一个名为test的存储桶;
mc mb minio/test

  • 共享avatar.png文件的下载门路;
mc share download minio/blog/avatar.png

  • 查找blog存储桶中的png文件;
mc find minio/blog --name "*.png"

  • 设置test存储桶的拜访权限为只读
# 目前能够设置这四种权限:none, download, upload, public
mc policy set download minio/test/
# 查看存储桶以后权限
mc policy list minio/test/

兼容AWS S3

当咱们对接第三方服务要用到对象存储时,这些服务往往都是反对AWS S3的。比如说一个直播的回放性能,须要对象存储来存储回放的视频,因为MinIO兼容AWS S3的大多数API,咱们能够间接拿它当AWS S3来应用。

  • 咱们能够下载个AWS S3的客户端来试试,MinIO到底能不能反对S3的API,这里应用的是S3 Browser,下载地址:https://s3browser.com/

  • 装置好S3 Browser之后,增加一个Account,输出相干登录信息,留神抉择Account类型为S3 Compatible Storage

  • 连贯胜利后,咱们能够看见之前咱们创立的存储桶和上传的文件;

  • S3 Browser这个工具性能还是很弱小的,MinIO Console和它比起来切实太弱了;

  • 下面有提到一个问题,图片文件无奈间接查看,其实是因为拜访图片文件时,MinIO返回的Content-Type为application/octet-stream导致的;

  • 接下来咱们能够通过S3 Browser来批改默认返回的响应头;

  • 而后将.png结尾的文件的响应头改为image/png就能够了;

  • 须要留神的是之前上传的文件须要从新上传下才能够失效,此时拜访链接就能够间接查看图片了;

  • 如果你想批改存储桶的拜访权限的话间接通过Permissions标签批改即可,是不是比MinIO Console灵便多了。

总结

如果你想自建对象存储服务的话,MinIO的确是首选。它能兼容AWS S3的API,应用MinIO相当于是在应用AWS S3,能兼容一些支流的第三方服务。不过它自带的客户端MinIO Console的确有点鸡肋,还好反对了AWS S3,能够应用一些功能强大的S3客户端工具。

参考资料

官网文档:https://docs.min.io/

本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家Star!

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理