从零搭建分布式文件系统MinIO比FastDFS要更合适

前两天跟大家分享了一篇关于如何利用FastDFS组件来自建分布式文件系统的文章,有兴趣的朋友可以阅读下《用asp.net core结合fastdfs打造分布式文件存储系统》。通过留言发现大家虽然感兴趣,但是都觉得部署比较麻烦。的确,fastdfs的部署很繁琐,而且也没有官方提供的针对.net core的sdk。而今天带来的MinIO则是一个比fastdfs更好的选择,可以让你足够简单的来部署使用,官方也提供了足够详细的api文档。下面就让我们开始今天的正文吧。

这里说明下为什么今天才进行分享,因为就在几个小时前官方才发布了最新的3.1.12版本的nuget包,解决了BucketExistsAsync的一个bug,不然你还得引用源码才能正常运行。

作者:依乐祝

原文地址:https://www.cnblogs.com/yilezhu/p/12830123.html

MinIO是什么?

官方对MinIO的介绍是:高性能,Kubernetes原生支持的对象存储系统。MinIO的高性能软件定义对象存储套件可以使用户能够为机器学习、分析和应用程序数据工作负载构建云原生支持的数据基础设施。下面是几个常用的网址

MinIO对象存储与其他有本质的不同。它是为性能和S3 API而设计的并100%开源。MinIO非常适合具有严格安全性,在不同的工作负载范围内要求并提供关键任务可用性的大型私有云环境。

MinIO是高性能对象存储的先驱

MinIO是世界上速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度分别为183 GB/s和171 GB/s,可以作为一组不同工作负载的主存储层,这些工作负载包括Spark、Presto、TensorFlow、H2O.ai以及Hadoop HDFS的替代品。

建立在web规模的规则之上

MinIO利用了web定标器来之不易的知识,为对象存储带来了一个简单的定标器模型。在MinIO,扩展从一个集群开始,这个集群可以与其他MinIO集群联合以创建一个全局命名空间,如果需要,可以跨越多个数据中心。这也是《财富》500强中超过一半的人使用MinIO的原因之一。

为云而生

MinIO是在过去四年中从头开始构建的,是定义云的技术和架构的原生版本。其中包括集装箱化、与Kubernetes的协调、微服务和多租户。没有比Kubernetes更友好的对象存储了。

排名第一的开源对象存储服务,对企业友好

MinIO在Apache V2许可和Affero通用公共许可版本3(AGPLv3)下是100%开源的。这意味着MinIO的客户可以自由锁定、自由检查、自由创新、自由修改和自由重新分配。其部署的多样性使该软件变得更加强大,这是专有软件永远无法提供的。

亚马逊S3兼容性的事实标准

Amazon的S3 API是对象存储领域的事实标准。MinIO是S3兼容性的事实上的标准,是第一个采用API和第一个添加对S3 Select支持的标准之一。包括微软Azure在内的750多家公司使用MinIO的S3网关,这一数字超过了业内其他公司的总和。

简单并且功能非常强大

极简主义是MinIO的一个指导性设计原则。简单性减少了错误的机会,提高了正常运行时间,提供了可靠性,同时也为性能奠定了基础。MinIO可以在几分钟内安装和配置。配置选项和变量的数量保持在最低限度,这将导致几乎为零的系统管理任务和更少的故障路径。

如何安装部署MinIO

官方提供了傻瓜式的UI页面来让你下载部署。下面以windows系统为例来进行演示。

打开上面列出的几个网址中的下载地址:

https://min.io/download#/windows

点击右侧的下载按钮进行下载即可

然后设置一个文件存储的路径如:E:\MinIO\data

然后进入minio.exe所在的目录,按住Shilft键然后点击鼠标右键打开powershell直接运行如下命令即可:

minio.exe server E:\MinIO\data

看到如上所示的页面说明MinIO就已经运行起来了,简单吧!这时候你用浏览器打开

http://127.0.0.1:9000 即可看到如下的UI

输入上面显示的Access Key 以及Secret Key登录即可

.NET Core集成

这一小节我们就结合我们之前开发的文件存储微服务来写一个MinIO的Provider来支持MinIO的文件上传与下载吧。

这里我只是简单的演示下,所以就用官方提供的实例代码继续演示了。

首先引入nuget包,注意就在写这篇文章前几个小时官方才发布了最新的3.1.12版本的nuget包,解决了BucketExistsAsync的一个bug,所以今天才进行这篇文章的分享。

Install-Package Minio

然后构建MinioClient

var endpoint  = "127.0.0.1:9000";            var accessKey = "minioadmin";            var secretKey = "minioadmin";            try            {                var minio = new MinioClient(endpoint, accessKey, secretKey).WithSSL();                FileUpload.Run(minio).Wait();            }            catch (Exception ex)            {                Console.WriteLine(ex.Message);            }

上传的代码如下:

private async static Task Run(MinioClient minio)        {            var bucketName = "mymusic";            var location   = "us-east-1";            var objectName = "golden-oldies.zip";            var filePath = "C:\\Users\\username\\Downloads\\golden_oldies.mp3";            var contentType = "application/zip";            try            {                // Make a bucket on the server, if not already present.                bool found = await minio.BucketExistsAsync(bucketName);                if (!found)                {                    await minio.MakeBucketAsync(bucketName, location);                }                // Upload a file to bucket.                await minio.PutObjectAsync(bucketName, objectName, filePath, contentType);                Console.WriteLine("Successfully uploaded " + objectName );            }            catch (MinioException e)            {                Console.WriteLine("File Upload Error: {0}", e.Message);            }        }

是不是很简单。关于更多api的使用可以查看如下的文档:

这是中文的api文档哦,所以就不说太多了

https://docs.min.io/cn/dotnet-client-api-reference.html

总结

今天跟大家介绍了另一个而且是更好用的分布式文件存储系统,看了MinIO的资料后毫不犹豫的选择了它,然后就无情的把FastDFS给丢弃了。如果你也有构建分布式文件系统的需求不妨关注下这个MinIO。

(0)

相关推荐

  • 对象存储服务

    Mino 目录 Mino 对象存储服务 Minio 参考 Minio 架构 为什么要用 Minio 存储机制 纠删码 MinIO概念 部署 单机部署: Docker 部署Minio 分布式Minio ...

  • 从零搭建mysql的主从复制

    原创 kevinying 互联网专栏 3月25日 一.centos7安装mysql 1. 先检查系统是否装有mysql rpm -qa | grep mysql 2. 下载mysql的repo源 wg ...

  • 主流分布式文件系统对比

    浪尖聊大数据 357篇原创内容 公众号 一.概述 分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS.如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临 ...

  • 从零搭建企业级系统必备技能:业务建模

    编辑导读:当进入到一个全新的业务领域时,很多人会手足无措,完全不知道从何去理解业务,更别提为这套业务设计一套系统去进行日常业务运营的管理了.这时候,业务建模就显得格外重要了.什么是业务建模呢?它有什么 ...

  • 从零搭建java后台管理系统(二)mysql和redis安装

    接上篇开始安装mysql和redis 注意了,如果用阿里云服务器,外网访问的端口必须在安全组开启,否则外网访问不通 三.服务器安装redis和mysql 本次环境搭建将所有第三方服务会安装在阿里云服务 ...

  • 对存在中心节点的分布式文件系统的总结与思考

    0. 前言 本文是在学习GFS(The Google File System,谷歌文件系统)后对存在中心节点的分布式文件系统的一些宏观的总结与思考.本文并没有太多关注GFS的细节实现,而是侧重在GFS ...

  • 从零搭建 Spring Cloud 服务

    作者:Anakki 链接:blog.csdn.net/qq_29519041/article/details/85238270 1.什么是SpringCloud? SpringCloud官网:http ...

  • 出海产品如何从零搭建IP插画库?让大厂高手教你!

    插画作为一种高效的视觉表现手法,在如今的互联网设计中已被广泛应用.它可以有效地帮助产品快速触达并感染用户,提升活跃度和活动转化率,塑造品牌形象等.对于 Trovo 这样一个快速发展中的出海平台,搭建起 ...

  • 手把手带你从零搭建人力资源系统(6)

    本文将从人力资源管理中的重要一环--考勤管理入手,结合企业管理过程中的实际情况浅谈劳动关系考勤排班相关的产品设计方案. 先来看一下自己的实际情况: 你所在的公司是否打卡考勤? 如果打卡,你是否经常迟到 ...

  • 手把手带你从零搭建人力资源系统(5)

    本文将从人力资源管理六大模块之一的--劳动关系入手,结合企业管理过程中的实际情况浅谈劳动关系相关的全流程产品设计方案. 首先我们来明确一下劳动关系相关的几个概念:(摘自百度百科) 劳动关系是指劳动者与 ...