从零搭建分布式文件系统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的高性能软件定义对象存储套件可以使用户能够为机器学习、分析和应用程序数据工作负载构建云原生支持的数据基础设施。下面是几个常用的网址

  • 官网:https://min.io/

  • 开源地址:https://github.com/minio/

  • 中文文档:https://docs.min.io/cn/

  • .NET 客户端api地址:https://docs.min.io/cn/dotnet-client-api-reference.html

  • 下载地址:https://min.io/download#/windows

  • minio-dotnet:https://github.com/minio/minio-dotnet

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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Java基础]方法引用

代码如下: package PrintablePack;public interface Printable {void printString(String s);}package PrintablePack;public class PrintableDemo {public static void main(String[] args){usePrintable(s-> System.out.println(s));usePrintable(System.out::println);/…

甲方爸爸,大概你要的是代码生成器吧?

作者:邹溪源,长沙资深互联网从业者,架构师社区特邀嘉宾!一1)有一天,我的朋友Y童鞋分享了他正在做的一个内部开源项目,这个开源项目从外表上看,跟目前市场上那些代码生成器本没有特别…

使用pdf.js来预览pdf文件_适用于Dynamics365与PowerApps的注释预览组件

powerapps/dynamics365适用的注释预览/批量下载组件自定义组件为预览功能原生预览支持的文件类型:图像,zip,音频,pdf支持批量打包注释为zip下载到本地使用浏览器预览支持:音频,视频,图像,pdf,文本,xml,json等,理论上只需要浏览器支持打开的文件类型,均可预览使用方法:1.导入解决…

消息队列,我只选RabbitMQ!

高并发架构是架构师的必修课,而消息队列,则是王冠上最闪亮的那颗明珠!能否驾驭消息队列这款高并发神器,亦成为架构师的试金石。作为专注.NET领域十多年的老架构师,下面从队列本质、技术选型、实战应用三个方面&#xf…

python比较三个数_python经典练习题(三)

人生苦短,你需要python继续学习python第一题题目:输入三个整数 x,y,z,请把这三个数由小到大输出不借助sortnum1 int(input("请输入第一个数"))num2 int(input("请输入第二个数"))num3 int(input("请输入第三个数&qu…

使用Jexus 容器化您的 Blazor 应用程序

在本文中,我们将介绍如何将 Blazor 应用程序放入Jexus 容器以进行开发和部署。我们将使用 .NET Core CLI,因此无论平台如何,使用的命令都将是相同的。Blazor 托管模型Blazor 有两个托管模型,它们的要求不同,本文主要基…

【A】 Natasha3.0 引擎亮给你,请你来折腾

文章转载授权级别:A一 、 引言Natasha 距离上个 2. 版本大概有1个月了,在4月份里我把模板与引擎进行了重构,旨在更抽象、规范、合理,方便其他人参与开源、定制。接下来我将从 引擎的结构 、类库的使用及新热的 Source Generators …

linux ps mysql_linux系统中ps指令使用详解

在linux系统作为和unix和ubuntu相同的系统,ps指令经常被用到查看程序进程的状态,但是这个指令具体怎么用您会吗?本文就以centos为例,结合项目中服务器的实际应用,给大家讲解下ps指令的用法。一、参数a——显示现行终端…

ASP.NET Core在CentOS上的最小化部署实践

引言本文从Linux小白的视角, 在CentOS服务器上搭建一个Nginx-Powered AspNet Core Web准生产应用。在开始之前,我们还是重温一下部署原理,正如你所常见的.Net Core 部署图:在Linux上部署.Net Core App最好的方式是使用Kestrel 服务…

面试官:你不懂六大设计原则,回去等通知吧!

一、前言不知道大家是否有这样的体会,就是在学习设计模式的时候,看了很多书籍,也照着很多示例把每个模式挨个敲了几遍,但过了一段时间后,就会忘了一大半。或者有的朋友尝试在业务编码中使用,却越用越复杂&a…

Asp.Net Core Filter 深入浅出的那些事-AOP

一、前言在分享ASP.NET Core Filter 使用之前,先来谈谈AOP,什么是AOP 呢?AOP全称Aspect Oriented Programming意为面向切面编程,也叫做面向方法编程,是通过预编译方式和运行期动态代理的方式实现不修改源代码的情况下给程序动态统…

C++函数模板和普通函数的调用规则

C函数模板和普通函数的调用规则: 普通函数可以进行自动类型转换。 函数模板必须严格类型匹配。 C编译器优先考虑普通函数。 如果函数模板可以产生一个更好的匹配,那么选择模板。 可以通过空模板实参列表的语法限定编译器只能通过模板匹配。 代码如下&#xff…

.NET Core技术研究-通过Roslyn代码分析技术规范提升代码质量

随着团队越来越多,越来越大,需求更迭越来越快,每天提交的代码变更由原先的2位数,暴涨到3位数,每天几百次代码Check In,补丁提交,大量的代码审查消耗了大量的资源投入。如何确保提交代码的质量和…

python最大堆heapq_Python-堆的实现与heapq(最小堆库函数)

目录简介堆是一个二叉树&#xff0c;它的每个父节点的值都只会小于或大于所有孩子节点(的值)。它使用了数组来实现&#xff1a;从零开始计数&#xff0c;对于所有的 k &#xff0c;都有 heap[k] < heap[2*k1] 和 heap[k] < heap[2*k2]。 为了便于比较&#xff0c;不存在的…

深入浅出 ASP.NET Core 与 Docker 入门课程说明

点击蓝字“角落的白板报”关注我哟加个“星标★”&#xff0c;好文必达&#xff01;深入浅出 ASP.NET Core 与 Docker 入门课程说明《深入浅出 ASP.NET Core 与 Docker 》是一门新的课程&#xff0c;本课程所有的内容全部免费&#xff0c;以图文配合视频的形式呈现。课程完整视…

微软将在新西兰建设其第一个数据中心区域

昨天新西兰各IT群都被一条消息刷屏了&#xff1a;详情可见&#xff1a;https://news.microsoft.com/en-nz/2020/05/06/aotearoa-disclosure/NZ的第一个Azure region region 是云计算的一个术语&#xff0c;也就是各大云运营商机房部署的位置。目前微软、亚马逊、谷歌等比较大的…

使用 kind 快速搭建一个 Kubernetes 测试环境

使用 kind 快速搭建一个 Kubernetes 测试环境Introkind&#xff08;Kubernetes IN Docker&#xff09; 是一个基于 docker 构建 Kubernetes 集群的工具&#xff0c;非常适合用来在本地搭建基于 Kubernetes 的开发/测试环境。想写一篇 kind 的文章很久了&#xff0c;但是之前的 …

麻雀虽小,五脏俱全

入职三年&#xff0c; 除了参与公司核心产品研发外&#xff0c;另外负责了一个2C的小项目&#xff1a;调用API拿到解析结果 & 计费。❝项目最初是.NetCore 1.0-Previewsqlite部署在IIS上&#xff0c;闲来没事&#xff0c;这个项目已经被我完全重写&#xff0c;在此记录一些…

内存迟迟下不去,可能你就差一个GC.Collect

一&#xff1a;背景1. 讲故事我们有一家top级的淘品牌店铺&#xff0c;为了后续的加速计算&#xff0c;在程序启动的时候灌入她家的核心数据到内存中&#xff0c;灌入完成后内存高达100G&#xff0c;虽然云上的机器内存有256G&#xff0c;然被这么划掉一半看着还是有一点心疼的…

Mayor's posters POJ - 2528 (离散化+线段树)

题意&#xff1a; 在1~10000000这个区间中读取n个海报的区间信息&#xff0c;后面的海报会覆 盖前面的海报&#xff0c;问最后能看到几张海报.&#xff08;本题是一道bug题下面会提&#xff09; 题目&#xff1a; The citizens of Bytetown, AB, could not stand that the c…