saowu's Blog

Minio架构及特点

Minio架构及特点
2023-04-17 · 4 min read
Kubernetes 其他 日记

MinIO is a high-performance, S3 compatible object store. It is built for large scale AI/ML, data lake and database workloads. It runs on-prem and on any cloud (public or private) and from the data center to the edge. MinIO is software-defined and open source under GNU AGPL v3.

MinIO的架构

MinIO的特点

  • 高性能:作为高性能对象存储,在标准硬件条件下它能达到55GB/s的读速率、35GB/s的写速率,并且 MinIO 支持一个对象文件可以是任意大小,从几KB到最大5T不等;
  • 可扩容:不同MinIO集群可以组成联邦,并形成一个全局的命名空间,并跨越多个数据中心;
  • 云原生:容器化、基于K8S的编排、多租户支持;
  • Amazon S3兼容:Minio使用Amazon S3 v2 / v4 API。可以使用Minio SDK,Minio Client,AWS SDK和AWS CLI访问Minio服务器;
  • 可对接后端存储: 除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储;
  • SDK支持:基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持
  • Lambda计算:Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
  • 有操作页面:MinIO Console
  • 功能简单:这一设计原则让MinIO不容易出错、更快启动;
  • 支持纠删码:MinIO使用纠删码、Checksum来防止硬件错误和静默数据污染。在最高冗余度配置下,即使丢失1/2的磁盘也能恢复数据;

MinIO的局限

局限1、搭建集群后,不允许扩容

MinIO一旦集群搭建成功后,就不可以更改集群节点数。因为存在在MinIO的对象到底存储在哪个问题。

局限2、集群最大节点数为32

MinIO实现了一个峰值锁叫DSync。它在节点数量少时,性能非常高;但节点数量过多时,性能就下降了。功能实现的最大节点就是32,所以导致MinIO单个集群的最大节点数也是32。

官方回复是,他们十年做GlusterFS的经验看,一个超大的集群是难以维护的,尤其是宕机之后的恢复时间也特别长,所以他们在做MinIO的时候一个核心设计理念就是简单,易于维护。

扩容方案

1、可同时向多个集群写入;
2、当集群容量达到阈值,从写集群中剔除,变成只读;
3、读取的时候,根据编码到文件名上的集群信息,从而路由到正确的集群;

MinIO本身提供一个叫联合模式的方式来组建集群,但是要额外引入其他依赖。可以考虑在LB层根据其请求里面的一些header信息做流量转发。

当配置多个集群的时候,可以先从配置中获取可用的集群,再从LB上根据请求的header信息,可控制向哪个集群写。当某个集群的容量达到阈值时,可以从配置中剔除该集群,把他变成只读集群。读取的时候把集群ID或信息码编码到文件名上去,这样可以通过解析文件名就能获取到对应的集群。

摘抄文章

Copyright © 2020 - 2024 saowu. All Right Reserved
Powered by Gridea