MinIO介绍


介绍

MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。

基本概念

  • Object:存储到minio的基本对象,如文件,字节流,Anything。。。。
  • Bucket:用来存储Object的逻辑空间。每个Bucket之间的数据是互相隔离的。对于客户端而言,就相当于存放文件的顶层文件夹。
  • Drlve:存储数据的磁盘,在MinIO启动时,以参数的方式传入。MinIO中所有的对象数据都会存在Drive里。
  • Set:即一组 Drive的集合,分布式部署根据集群规模自动划分一个或者多个Set,每个Set中的Drive 分布在不同位置。一个对象存储在一个Set上。
    • 一个对象存储在一个Set上。
    • 一个集群划分为多个Set。
    • 一个Set包含的Drive数量是固定的,默认由系统根据集群规模自动计算得出。
    • 一个Set中的drive 尽可能分布在不同的节点上。
  • 纠删码:Minio 使用纠删码机制来保证高可靠性。
    • 使用highwayhash来处理数据损坏(Bit Rot Protectio)。关于纠删码,简单来说就是可以通过数学计算,把丢失的数据进行还原。
    • 纠删码是恢复丢失和算怀数据的数学算法,minio采用reed-solomincode将对象拆分成N/2数据和N/2奇偶校验块。这就意味着如果是12块盘,一个对象会被分成6个数据快、6个奇偶校验块,你可以丢失任意6块盘(不管其存放的是数据块还是奇偶校验块),你任可以从剩下的盘中的数据进行恢复。
    • 纠删码模式,把数据分成 DATA BLOCk:数据块、 PARITY BLOCK:校验块。一个BLOCK 10M左右,如果一个文件小于10M,就以文件大小进行分块。如果一个文件大于10m,就以10M为一个文件单位进行分块。

应用场景

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

优势

  • 数据保护
    • 分布式MInio采用纠删码来放反多个节点待机和位衰减 bit rot
    • 分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
  • 高可用
    • 单机Minio服务存在单点故障,相反,如果是有一个N快硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
    • 例如,一个16节点的Minio集群,每个节点16块块硬盘,计算8台服务器宕机,这个集群仍然是可读的,不过你需要9台服务器才能写入数据。
  • 一致性
    • Minio在分布式和单机模式下,所有读写炒作都严格遵守read-after-write 一致性模型

参考

[1]中文文档

[2]MinIO 介绍使用



文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录