目录

1 前言

2 邀约

3 MinIO 架构特征

    3.1 去中心化架构

    3.2 统一命名空间

    3.3 分布式锁管理

    3.4 云网关模式


1 前言

        如果你对博客有任何疑问,请告诉我。

第五章 九析带你轻松完爆 MinIO - 架构特性_第1张图片


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

第五章 九析带你轻松完爆 MinIO - 架构特性_第2张图片


3 MinIO 架构特征

3.1 去中心化架构

        MinIO 采用去中心化的无共享架构,存储对象被打散存放在不同节点的多块硬盘上,但是整个存储对象的外部访问却提供统一的命名空间,并通过 Web 负载均衡器或 DNS 轮询(DNS round-robin)在各服务器之间实现负载均衡。存储架构如下图所示:

第五章 九析带你轻松完爆 MinIO - 架构特性_第3张图片

        上面右图所示 MinIO 存储体系中涉及部分有 S3 协议支持、加密、DLM(分布式锁管理)、Erasure code(纠删码,数学算法,用来可靠保证数据安全和一致性的)、Bitrot Protection(位保护,针对静默数据)。

3.2 统一命名空间

        MinIO 对象存储主要有两种部署方式,一种是本地分布式集群部署,另外一种则是联盟模式部署。本地分布式集群部署方式是在多个本地服务器节点部署 MinIO,然后将其组装成单套分布式存储集群,对外则提供统一命名空间和标准 s3 访问接口。联盟部署模式即将多个 MinIO 集群在逻辑上组成统一命名空间,实现近乎无限的扩展与海量的数据规模管理,这些集群可以都在本地,或分布在不同地域的数据中心。

        如下图所示,32 个服务器节点组成了一个 MinIO 集群,每个服务器节点会选择相同数据的硬盘驱动创建一个纠删组,某个桶的对象会根据 MinIO 的分布式算法,将切片分散存储到对应的纠删组中。

第五章 九析带你轻松完爆 MinIO - 架构特性_第4张图片

3.3 分布式锁管理

        与分布式数据库相类似,MinIO 对象存储系统也面临数据一致性问题:一个客户端程序在读取一个对象的同时,另一个客户端程序可能正在修改或者删除这个对象。为了避免出现数据不一致的情况,MinIO 提供了分布式锁管理器,它采用如下分布式锁管理机制:

任何一个节点的锁请求都会广播给集群内所有在线节点

如果 n/2 + 1 个节点回应“是”,则成功获取锁

客户端获得锁以后可保留任意时间,不需要时自己释放即可。释放操作也会广播给所有的节点,从而恢复锁的可用状态。写锁仅能被一个写入者获得

3.4 云网关模式

        MinIO 存储系统的后端可以是磁盘,也可以作为云网关,对接第三方的 NAS 系统、分布式文件系统或共有云存储系统,并为业务系统转换提供标准的对象访问接口。

        目前 MinIO 支持 Google 云存储、HDFS、阿里 OSS、亚马逊 S3 等第三方存储资源,下图所示:

第五章 九析带你轻松完爆 MinIO - 架构特性_第5张图片