FastDFS 收藏起来,现在开始用 Minio 吧
一、Minio 介绍 MinIO 是全球领先的对象存储先锋,目前在全世界有数百万的用户。
高性能 ,在标准硬件上,读/写速度上高达 183GB/秒和 171GB/秒,拥有更高的吞吐量和更低的延迟可扩展性 ,为对象存储带来了简单的缩放模型,通过添加更多集群可以扩展空间简单 ,极简主义是 MinIO 的指导性设计原则,即可在几分钟内安装和配置与 Amazon S3 兼容 ,亚马逊云的 S3 API(接口协议)是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准数据安全 ,使用纠删码来保护数据免受硬件故障和无声数据损坏纠删码
纠删码是一种恢复丢失和损坏数据的数学算法, Minio 默认采用 Reed-Solomon code 将数据拆分成 N/2 个数据块和 N/2 个奇偶校验块。这就意味着如果是 16 块盘,一个对象会被分成 8 个数据块、8 个奇偶校验块,你可以丢失任意 8 块盘(不管其是存放的数据块还是校验块),你仍可以从剩下的盘中的数据进行恢复。
http://docs.minio.org.cn/docs/master/java-client-quickstart-guide
Minio 和 FastDFS 的对比
安装难度文档性能容器化支持 SDK 支持二、Minio 安装 为了快速搞定 Minio 的部署工作。我们通过 Docker-Compose 来一键快速部署操作
1.安装 DockerCompose 安装 DockerCompose 的前提是先安装一个 Docker 环境,如果还没安装的参考波哥的博客地址:https://blog.csdn.net/qq_38526573/category_9619681.html
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
一键启动所有的服务
DockerCompose 的使用步骤
创建对应的 DockerFile 文件创建 yml 文件,在 yml 文件中编排我们的服务通过 docker-compose up 命令 一键运行我们的容器官网地址:https://docs.docker.com/compose
下载地址:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose 修改文件夹权限
chmod +x /usr/local/bin/docker-compose 建立软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 检查是否安装成功
docker-compose --version2.安装 Minio 集群官方推荐 docker-compose.yaml:
稍加修改,内容如下:
version: '3.7'
所有容器通用的设置和配置
x-minio-common: &minio-commonimage: minio/miniocommand: server --console-address ":9001" http://minio{1...4}/dataexpose:- "9000"
environment:
healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3
启动 4 个 docker 容器运行 minio 服务器实例
使用 nginx 反向代理 9000 端口,负载均衡, 你可以通过 9001、9002、9003、9004 端口访问它们的 web console
services:minio1:<<: *minio-commonhostname: minio1ports:- "9001:9001"volumes:- ./data/data1:/data
minio2:<<: *minio-commonhostname: minio2ports:- "9002:9001"volumes:- ./data/data2:/data
minio3:<<: *minio-commonhostname: minio3ports:- "9003:9001"volumes:- ./data/data3:/data
minio4:<<: *minio-commonhostname: minio4ports:- "9004:9001"volumes:- ./data/data4:/data
nginx:image: nginx:1.19.2-alpinehostname: nginxvolumes:- ./config/nginx.conf:/etc/nginx/nginx.conf:roports:- "9000:9000"depends_on:- minio1- minio2- minio3- minio4 接着新建文件夹 config,新建配置 nginx.conf
user nginx;worker_processes auto;
error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;
events {worker_connections 4096;}
http {include /etc/nginx/mime.types;default_type application/octet-stream;
}然后执行对应的命令
docker-compose up -d
image.png
访问控制台:http://192.168.56.100:9000
image.png
账号密码为:minioadmin
image.png
三、Minio 客户端 然后我们可以创建一个 Java 项目来操作文件上传下载操作。
1.Bucket Bucket 是桶的意思。我们创建一个 Bucket
image.png
image.png
我们还可以直接上传图片文件等
image.png
image.png
2.用户管理 针对客户端的操作,我们需要维护相关的账号来管理。
image.png
直接点击创建相关的用户即可
image.png
用户创建完成后我们就可以通过客户端工具来操作了。
Java 项目 然后我们来看看如何在 Java 项目中来操作了。
首先添加必要的依赖
执行后成功:
image.png
image.png
搞定
4.获取图片地址 如果上传的是普通文件我们可以获取对应的字节流来操作,但是如果我们需要获取的是图片。只要访问就可以了,这时我们可以通过对应的 API 来获取图片的 URL 地址就可以了
image.png
但是在访问的时候缺提示访问不了
image.png
原因是我们需要设置下 Bucket 的策略
image.png
image.png
访问就可以了
评论