【愚公系列】2022年06月 .NET架构班 072-分布式中间件 Minio的集群
一、Minio集群概念
1.单主机/多硬盘模式
一个主机下,有多个硬盘或者多个磁盘来存储文件。
如果所示:
架构说明
1、1个主节点(Master node)
管理索引(创建索引、删除索引)、分配分片维护元数据管理集群节点状态,一个Minio集群中,只有一个Master节点。在生产环境中,内存可以相对小一点,但机器要稳定。
2、2个数据(Data node)
在Minio集群中,会有N个DataNode节点。DataNode节点主要负责:
数据写入、数据检索,大部分Minio的压力都在DataNode节点上
在生产环境中,内存最好配置大一些
二、Minio集群落地
分析:商品图片数据通过客户端,使用Minio存储到磁盘下,当磁盘中的商品图片,商品图片从磁盘删除了,导致商品图片不可用。客户端无法进行正常查询商品图片。如何解决当图片从磁盘上删除后,能够正常访问?
方案:单主机,多硬盘
1.单主机,多硬盘模式搭建
1.1 进入到Minio目录中
1.2 然后输入以下命令
minio server --address :9010 --console-address ":9011" D:/work/net/MinIO/data1 D:/work/net/MinIO/data2 D:/work/net/MinIO/data3 D:/work/net/MinIO/data4
1.3 进入到Minio查看结果
2.Minio单主机/多硬盘原理
2.1 多副本
多副本技术就比较简单直接了,既然要冗余保护关键数据,就干脆多存几份好了,单个数据的算坏不要紧,还有备份可以使用。
这种技术在现代的软件系统中随处可见,比如 mysql 的同步/异步备份,分布式数据库中的三副本存储+一致性协议。
这种方法的优缺点也比较明显,优点是写入效率高,无需多余的计算,直接存多份即可,数据恢复也很快,从副本复制即可。缺点就是存储效率低,以前需要的磁盘容量直接 X2 或者 X3 了,成本很高。
2.2 纠删码
ErasureCode(纠删码)以更低成本的方式提供近似三副本的可靠性,吸引众多分布式存储/云存储的厂商和用户。可以说纠删码是云存储,尤其是现在广泛使用的对象存储的核心。纠删码(Erasure Coding,EC)是一种编码容错技术,最早是在通信行业解决部分数据在传输中的损耗问题。其基本原理就是把传输的信号分段,加入一定的校验再让各段间发生相互关联,即使在传输过程中丢失部分信号,接收端仍然能通过算法将完整的信息计算出来。在数据存储中,纠删码将数据分割成片段,把冗余数据块扩展和编码,并将其存储在不同的位置,例如磁盘、存储节点或者其他地理位置。
问题:现在思考一个问题:现在有 2 份数据(有可能其实是一份数据被分割成了两部分),允许你做 2 的冗余(就是实际存储的使用是要存储数据的 (2+2)/2 = 2 倍),要求达到这样的效果:任意两份数据丢失,数据都能恢复。
1、一个简单的想法是,给两个数据都做一下备份。
将数据存储为 X1, X2, X3, X4 分别等于 A1, A2, A1, A2;这样假设数据 X1 X2 丢失了,数据就可以从 X3,X4 中恢复出来。但是这样存储存在问题:如果丢失的数据刚好是 X1, X3 呢,那么原先的数据 A1 就彻底丢失找不回来了。但是你可以使用下面的一种存储方式 X1, X2 还是不变,X3=A1+A2, X4=A1+2*A2 这样任意两份数据丢失,都可以恢复出 A1 和 A2 了。
3.Minio使用纠删码
Minio中:至少有4个数据目录。
1、传统冗余:至少2个数据目录 等分片。4份数据。
2、4个目录中。
总结:Minio至少都有4个数据目录。
规则:必须有一半数据,数据不丢失,才能恢复。
N/2 例如:4个目录中,必须保证2个数据不丢失。才能使用。
1、恢复任何磁盘损坏的数据
包括1、直接删除,2、磁盘性道丢失 3、磁盘中毒。
- 点赞
- 收藏
- 关注作者
评论(0)