乐趣区

关于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!

退出移动版