分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了

分布式文件存储系统MinIO

  • 目录
    • 1.分布式文件系统应用场景
      • 1.1 Minio介绍
        • Minio优点
      • 1.2 MinIO的基础概念
      • 1.3 纠删码EC(Erasure Code)
      • 1.4 存储形式
      • 1.5 存储方案
    • 2. Minio环境搭建
      • 2.1 单机部署
        • 基于centos7
        • 基于docker
      • 2.2 分布式集群部署
      • 2.3 Minio客户端使用
    • 3. Minio Java Client使用
      • 3.1 文件上传
      • 3.2 文件下载
      • 3.3 Spring boot整合minio

分布式文件系统MinIO教程,2021最新版【通俗易懂】


完整12P视频点此

目录

minio 版本:RELEASE.2021-07-*及以上

1.分布式文件系统应用场景

互联网海量非结构化数据的存储需求

  • 电商网站:海量商品图片
  • 视频网站:海量视频文件
  • 网盘 : 海量文件
  • 社交网站:海量图片

1.1 Minio介绍

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第1张图片
官网:https://min.io/ http://www.minio.org.cn/

对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服
务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成
本。

对于中小型企业,如果不选择存储上云,那么 Minio 是个不错的选择,麻雀虽小,五脏俱全。当然
Minio 除了直接作为对象存储使用,还可以作为云上对象存储服务的网关层,无缝对接到 Amazon S3、MicroSoft Azure。
在中国:阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等9000多家企业也都在使用MinIO产
品。

Minio优点

  • 部署简单: 一个single二进制文件即是一切,还可支持各种平台。
  • minio支持海量存储,可按zone扩展(原zone不受任何影响),支持单个对象最大5TB;
  • 兼容Amazon S3接口,充分考虑开发人员的需求和体验;
  • 低冗余且磁盘损坏高容忍,标准且最高的数据冗余系数为2(即存储一个1M的数据对象,实际占用
    磁盘空间为2M)。但在任意n/2块disk损坏的情况下依然可以读出数据(n为一个纠删码集合(Erasure
    Coding Set)中的disk数量)。并且这种损坏恢复是基于单个对象的,而不是基于整个存储卷的。
  • 读写性能优异
    分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第2张图片

1.2 MinIO的基础概念

  • Object:存储到 Minio 的基本对象,如文件、字节流,Anything…
  • Bucket:用来存储 Object 的逻辑空间。每个 Bucket 之间的数据是相互隔离的。对于客户端而
    言,就相当于一个存放文件的顶层文件夹。
  • Drive:即存储数据的磁盘,在 MinIO 启动时,以参数的方式传入。Minio 中所有的对象数据都会
    存储在 Drive 里。
  • Set :即一组 Drive 的集合,分布式部署根据集群规模自动划分一个或多个 Set ,每个 Set 中的
    Drive 分布在不同位置。一个对象存储在一个 Set 上。(For example: {1…64} is divided into 4
    sets each of size 16.)
    在这里插入图片描述

1.3 纠删码EC(Erasure Code)

MinIO 使用纠删码机制来保证高可靠性,使用 highwayhash 来处理数据损坏( Bit Rot Protection )。关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

1.4 存储形式

文件对象上传到 MinIO ,会在对应的数据存储磁盘中,以 Bucket 名称为目录,文件名称为下一级目
录,文件名下是 part.1 和 xl.meta(老版本,最新版本如下图),前者是编码数据块及检验块,后者是元数据文件。
分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第3张图片

1.5 存储方案

分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第4张图片

2. Minio环境搭建

官方文档:https://docs.min.io/docs/
中文文档:http://docs.minio.org.cn/docs/ (没有及时更新,容易被坑)
minio支持多种server启动模式:
分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第5张图片

2.1 单机部署

minio server的standalone模式,即要管理的磁盘都在host本地。该启动模式一般仅用于实验环境、测
试环境的验证和学习使用。在standalone模式下,还可以分为non-erasure code modeerasure code mode
non-erasure code mode
在此启动模式下,对于每一份对象数据,minio直接在data下面存储这份数据,不会建立副本,也不会
启用纠删码机制。因此,这种模式无论是服务实例还是磁盘都是“单点”,无任何高可用保障,磁盘损坏就表示数据丢失。
erasure code mode
此模式为minio server实例传入多个本地磁盘参数。一旦遇到多于一个磁盘参数,minio server会自动
启用erasure code mode。erasure code对磁盘的个数是有要求的,如不满足要求,实例启动将失
败。 erasure code启用后,要求传给minio server的endpoint(standalone模式下,即本地磁盘上的目
录)至少为4个。

基于centos7

分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第6张图片
分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第7张图片
默认用户名密码minioadmin:minioadmin,修改默认用户名密码可以使用:

export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678

默认的配置目录是${HOME}/.minio,可以通过–config-dir命令自定义配置目录:

./minio server --config-dir /mnt/config /mnt/data

控制台监听端口是动态生成的,可以通过–console-address ":port"指定静态端口

./minio server --console-address ":50000" /mnt/data

分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第8张图片
访问minio控制台: http://192.168.3.14:50000/dashboard
分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第9张图片

基于docker

docker run -p 9000:9000 --name minio \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server /data

存在问题: 浏览器无法访问minio控制台,因为没有对外暴露控制台端口
对外暴露minio控制台的端口,通过–console-address ":50000"指定控制台端口为静态端口

docker run -p 9000:9000 -p 50000:50000 --name minio \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
minio/minio server --console-address ":50000" /data

分布式文件存储系统Minio从入门到实战教程,看这篇文章就够了_第10张图片

2.2 分布式集群部署

2.3 Minio客户端使用

3. Minio Java Client使用

3.1 文件上传

3.2 文件下载

3.3 Spring boot整合minio

未完待续…

你可能感兴趣的:(java)