应用场景
- 需要存储海量的图片
- 需要存储大量的视频
可以存储海量的非结构化数据存储需求。
应用的网站如:网盘网站,可以去存储大量的文件。
MinIO介绍
MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储。 它是与 Amazon S3 云存储服务兼容的 API。 使用 MinIO 为机器学习、分析和应用程序数据工作负载构建高性能基础架构。
Bucket:桶,通俗来说相当与文件的顶层目录。
Object:存放到MinIO的基本对象。如文件、字节流等
Drive:即存储数据的磁盘。Minio 中所有的对象数据都会存储在Drive里。
Set :即一组Drive的集合,分布式部署根据集群规模自动划分一个或多个Set,一个对象存储在一个Set里面
纠删码
Minio使用纠删码Erasure Code
和校验和checksum
来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。Erasure Coding 是一种数据冗余和可用性功能,它允许 MinIO 部署即时自动重建对象,尽管集群中丢失了多个驱动器或节点。与 RAID 或复制等相邻技术相比,纠删码提供对象级修复,开销更少。
存储形式
MinIO 将每个新对象拆分为数据块和奇偶校验块,其中奇偶校验块支持对丢失或损坏的数据块的修复。在最大奇偶校验时,MinIO 可以容忍每个纠删集 丢失多达一半的驱动器( N/2-1) ,并且仍然执行读取和写入操作。
对于给定的纠删集大小为M,MinIO 将对象拆分为N奇偶校验块和M-N数据块。MinIO 使用该EC:N符号来表示N部署中的奇偶校验块的数量。MinIO 默认为EC:4每个对象 4 个奇偶校验块。
微软Windows部署
下载
蓝奏下载
密码:1uja
当然也可以进入以下网址下载,蓝奏要比下面快一点。
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
设置环境变量
假如下载后文件的存放路径为D:\app\MinIO
,在环境变量path里面添加该路径就可以了。
下面是设置MinIO存储数据的驱动器或目录的路径
minio.exe server D:\MinIO
D:\MinIO为我设置的MinIO存储数据的驱动器或目录的路径,可自行修改。
默认的账号密码是minioadmin
,通过控制台的网址来访问。
Java客户端API
官方文档
文档提供了很多API来供我们调用,如基本的上传和删除。
自己写了简单的上传和删除例子(已经结合SpinrgBoot),可以自行修改工具类去实现功能。
使用前尽量将Access Policy
设置为public
将Access Policy设置为public
将桶的Access Policy设置为public即可访问图片。
实战使用
结合Springboot使用MinIO
更新操作
可以通过返回的网址,直接访问图片(图片已经删除了,就换个图片展示)。
预览(端口加上文件路径)
删除操作
代码
总体来说使用体验不错,文件上传速度特别快,可以用来代替OSS使用,关键还是免费的。