从零搭建分布式文件系统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比FastDFS要更合适

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

建立在web规模的规则之上

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

MinIO行使了web定标器来之不易的知识,为工具存储带来了一个简朴的定标器模子。在MinIO,扩展从一个集群最先,这个集群可以与其他MinIO集群团结以建立一个全局命名空间,若是需要,可以跨越多个数据中心。这也是《财富》500强中跨越一半的人使用MinIO的缘故原由之一。

为云而生

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

MinIO是在已往四年中从头最先构建的,是界说云的手艺和架构的原生版本。其中包罗集装箱化、与Kubernetes的协调、微服务和多租户。没有比Kubernetes更友好的工具存储了。

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

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

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

亚马逊S3兼容性的事实尺度

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

Amazon的S3 API是工具存储领域的事实尺度。MinIO是S3兼容性的事实上的尺度,是第一个接纳API和第一个添加对S3 Select支持的尺度之一。包罗微软Azure在内的750多家公司使用MinIO的S3网关,这一数字跨越了业内其他公司的总和。

简朴而且功效异常壮大

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

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

若何安装部署MinIO

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

redis 6.0下redis-cluster-proxy署理实验

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

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

从零搭建分布式文件系统MinIO比FastDFS要更合适点击右侧的下载按钮举行下载即可

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

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

minio.exe server E:\MinIO\data

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

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

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

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

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

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

.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。

原创文章,作者:admin,如若转载,请注明出处:https://www.2lxm.com/archives/7744.html