从零搭建分布式文件系统MinIO比FastDFS要更合适
前兩天跟大家分享了一篇關(guān)于如何利用FastDFS組件來自建分布式文件系統(tǒng)的文章,有興趣的朋友可以閱讀下《用asp.net core結(jié)合fastdfs打造分布式文件存儲系統(tǒng)》。通過留言發(fā)現(xiàn)大家雖然感興趣,但是都覺得部署比較麻煩。的確,fastdfs的部署很繁瑣,而且也沒有官方提供的針對.net core的sdk。而今天帶來的MinIO則是一個比fastdfs更好的選擇,可以讓你足夠簡單的來部署使用,官方也提供了足夠詳細(xì)的api文檔。下面就讓我們開始今天的正文吧。
這里說明下為什么今天才進(jìn)行分享,因為就在幾個小時前官方才發(fā)布了最新的3.1.12版本的nuget包,解決了BucketExistsAsync的一個bug,不然你還得引用源碼才能正常運行。
作者:依樂祝
原文地址:https://www.cnblogs.com/yilezhu/p/12830123.html
MinIO是什么?
官方對MinIO的介紹是:高性能,Kubernetes原生支持的對象存儲系統(tǒng)。MinIO的高性能軟件定義對象存儲套件可以使用戶能夠為機器學(xué)習(xí)、分析和應(yīng)用程序數(shù)據(jù)工作負(fù)載構(gòu)建云原生支持的數(shù)據(jù)基礎(chǔ)設(shè)施。下面是幾個常用的網(wǎng)址
官網(wǎng):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對象存儲與其他有本質(zhì)的不同。它是為性能和S3 API而設(shè)計的并100%開源。MinIO非常適合具有嚴(yán)格安全性,在不同的工作負(fù)載范圍內(nèi)要求并提供關(guān)鍵任務(wù)可用性的大型私有云環(huán)境。
MinIO是高性能對象存儲的先驅(qū)
MinIO是世界上速度最快的對象存儲服務(wù)器。在標(biāo)準(zhǔn)硬件上,對象存儲的讀/寫速度分別為183 GB/s和171 GB/s,可以作為一組不同工作負(fù)載的主存儲層,這些工作負(fù)載包括Spark、Presto、TensorFlow、H2O.ai以及Hadoop HDFS的替代品。
建立在web規(guī)模的規(guī)則之上
MinIO利用了web定標(biāo)器來之不易的知識,為對象存儲帶來了一個簡單的定標(biāo)器模型。在MinIO,擴展從一個集群開始,這個集群可以與其他MinIO集群聯(lián)合以創(chuàng)建一個全局命名空間,如果需要,可以跨越多個數(shù)據(jù)中心。這也是《財富》500強中超過一半的人使用MinIO的原因之一。
為云而生
MinIO是在過去四年中從頭開始構(gòu)建的,是定義云的技術(shù)和架構(gòu)的原生版本。其中包括集裝箱化、與Kubernetes的協(xié)調(diào)、微服務(wù)和多租戶。沒有比Kubernetes更友好的對象存儲了。
排名第一的開源對象存儲服務(wù),對企業(yè)友好
MinIO在Apache V2許可和Affero通用公共許可版本3(AGPLv3)下是100%開源的。這意味著MinIO的客戶可以自由鎖定、自由檢查、自由創(chuàng)新、自由修改和自由重新分配。其部署的多樣性使該軟件變得更加強大,這是專有軟件永遠(yuǎn)無法提供的。
亞馬遜S3兼容性的事實標(biāo)準(zhǔn)
Amazon的S3 API是對象存儲領(lǐng)域的事實標(biāo)準(zhǔn)。MinIO是S3兼容性的事實上的標(biāo)準(zhǔn),是第一個采用API和第一個添加對S3 Select支持的標(biāo)準(zhǔn)之一。包括微軟Azure在內(nèi)的750多家公司使用MinIO的S3網(wǎng)關(guān),這一數(shù)字超過了業(yè)內(nèi)其他公司的總和。
簡單并且功能非常強大
極簡主義是MinIO的一個指導(dǎo)性設(shè)計原則。簡單性減少了錯誤的機會,提高了正常運行時間,提供了可靠性,同時也為性能奠定了基礎(chǔ)。MinIO可以在幾分鐘內(nèi)安裝和配置。配置選項和變量的數(shù)量保持在最低限度,這將導(dǎo)致幾乎為零的系統(tǒng)管理任務(wù)和更少的故障路徑。
如何安裝部署MinIO
官方提供了傻瓜式的UI頁面來讓你下載部署。下面以windows系統(tǒng)為例來進(jìn)行演示。
打開上面列出的幾個網(wǎng)址中的下載地址:
https://min.io/download#/windows
點擊右側(cè)的下載按鈕進(jìn)行下載即可
然后設(shè)置一個文件存儲的路徑如:E:\MinIO\data
然后進(jìn)入minio.exe所在的目錄,按住Shilft鍵然后點擊鼠標(biāo)右鍵打開powershell直接運行如下命令即可:
minio.exe server E:\MinIO\data看到如上所示的頁面說明MinIO就已經(jīng)運行起來了,簡單吧!這時候你用瀏覽器打開
http://127.0.0.1:9000?即可看到如下的UI
輸入上面顯示的Access Key 以及Secret Key登錄即可
.NET Core集成
這一小節(jié)我們就結(jié)合我們之前開發(fā)的文件存儲微服務(wù)來寫一個MinIO的Provider來支持MinIO的文件上傳與下載吧。
這里我只是簡單的演示下,所以就用官方提供的實例代碼繼續(xù)演示了。
首先引入nuget包,注意就在寫這篇文章前幾個小時官方才發(fā)布了最新的3.1.12版本的nuget包,解決了BucketExistsAsync的一個bug,所以今天才進(jìn)行這篇文章的分享。
Install-Package Minio然后構(gòu)建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);}}是不是很簡單。關(guān)于更多api的使用可以查看如下的文檔:
這是中文的api文檔哦,所以就不說太多了
https://docs.min.io/cn/dotnet-client-api-reference.html
總結(jié)
今天跟大家介紹了另一個而且是更好用的分布式文件存儲系統(tǒng),看了MinIO的資料后毫不猶豫的選擇了它,然后就無情的把FastDFS給丟棄了。如果你也有構(gòu)建分布式文件系統(tǒng)的需求不妨關(guān)注下這個MinIO。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的从零搭建分布式文件系统MinIO比FastDFS要更合适的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开源 一套 Blazor Server
- 下一篇: 分布式系统不得不说的CAP定理