前两天跟大家分享了一篇关于如何利用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。

从零搭建分布式文件系统MinIO比FastDFS要更合适的更多相关文章

  1. FastDFS搭建分布式文件系统

    FastDFS搭建分布式文件系统 1. 什么是分布式文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网 ...

  2. 云存储?不依赖三方服务自己也可以搞,利用Docker来搭建分布式文件系统FastDfs

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_78 对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文 ...

  3. Docker来搭建分布式文件系统FastDfs

    对于文件存储来说,一般情况下简单的处理就是在Django配置文件中配置存储目录,按照规则对文件进行上传或者下载. 实际上,当文件较少的时候,Django是可以应付的过来的.但当文件以海量形式出现的时候 ...

  4. IPFS搭建分布式文件系统 - 访问控制

    IPFS 一个内容可寻址.对等的超媒体分发协议. IPFS网络中的节点形成分布式文件系统. 为什么要用IPFS? “IPFS and the Blockchain are a perfect matc ...

  5. [转]分布式文件系统FastDFS架构剖析

    [转]分布式文件系统FastDFS架构剖析 http://www.programmer.com.cn/4380/ 文/余庆 FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实 ...

  6. 【转】分布式文件系统FastDFS架构剖析

    FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过专有API对文件进行存取访问,不支持POSIX接口方式, ...

  7. CentOS7搭建FastDFS V5.11分布式文件系统-第一篇

    1.绪论 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的过程中遇到过很多的问题,为了能帮忙到以后搭建FastDFS的同学,少走弯路,与大家分享一下.FastDFS的作者淘宝资深架 ...

  8. Linux - 搭建FastDFS分布式文件系统

    1. FastDFS简介 说明:FastDFS简介部分的理论知识全部来自于博主bojiangzhou的 <用FastDFS一步步搭建文件管理系统>,在此感谢博主的无私分享.当然最最要感谢的 ...

  9. 简单搭建FastDFS分布式文件系统(简单易懂)

    一.什么是FastDFS FastDFS一个开源的轻量级分布式文件系统,它对文件进行管理,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,功能包括:文件存储.文件同步.文件访 ...

随机推荐

  1. CentOS 7 yum安装 k8s 创建Pod一直处于ContainerCreating状态 问题解决

    问题描述 使用CentOS7的 yum 包管理器安装了 Kubernetes 集群,使用 kubectl 创建服务成功后,执行 kubectl get pods,发现AGE虽然在不断增加,但状态始终不 ...

  2. https的秘钥公钥以及之间的会话流程

      一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙. 1.2 共享秘钥在HTTP传输中的缺点 以共享密钥方式加密时 ...

  3. 在java 中一种简单方式的声明静态Map常量的方法

    我现在需要在一个类里面放一个HashMap,往里面放一些数据,每次要从数据库中取数据的时候先查找HashMap,看是否已经存在,若存在就直接提取,若不存在就从数据库中抽取数据之后再放到HashMap中 ...

  4. AJ学IOS(20)UI之UIPickerView_点菜系统

    AJ分享,必须精品 先看效果图 ## UIPickerView控件 UIPickerView用处: 用来展示很多行(row) 很多列(component )的数据,多用于电子商务的点菜,城市选择等等. ...

  5. Spring 下,关于动态数据源的事务问题的探讨

    开心一刻 毒蛇和蟒蛇在讨论谁的捕猎方式最高效. 毒蛇:我只需要咬对方一口,一段时间内它就会逐渐丧失行动能力,最后死亡. 蟒蛇冷笑:那还得等生效时间,我只需要缠住对方,就能立刻致它于死地. 毒蛇大怒:你 ...

  6. ASE team work proposal

    Hi,我们是Azure Wrapper,欢迎来到我们的blog~我们将在这里记录下ASE课程的滴滴点点,美妙的旅程就要开始啦! 以下是每位队员提交的关于ASE 团队项目的提议: 朱玉影: 随着信息时代 ...

  7. Android | 教你如何在安卓上实现二代身份证识别,一键实名认证

    @ 目录 前言 场景 开发前准备 android studio 安装 在项目级gradle里添加华为maven仓 在应用级的build.gradle里面加上SDK依赖 在AndroidManifest ...

  8. Vue定义全局过滤器filter

    这里介绍的是多个过滤器一起添加到全局中 1.创建方法 首先src下新建plugin文件夹,用来存放插件. 在plugin文件夹内新建filters.js,编写方法(如隐藏手机号码等等...) /** ...

  9. BJDCTF 2nd web

    先贴一下Y1ng大佬的WP elementmaster 脑洞确实大,源码中hidden的id可以用hex解码成Po. 在URL后面输入Po.php得到一个点, 然后不知所措 被水淹没 实际上这里是要遍 ...

  10. 通过 Swoole\Table 实现 Swoole 多进程数据共享

    第三方存储媒介 前面我们介绍了基于 Swoole 的 Process 及 Process\Pool 模块在 PHP 中实现多进程管理,但是多进程模式下进程间是相互隔离的,无法共享数据和变量,即便是通过 ...