前兩天跟大家分享了一篇關于如何利用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,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/36120.html
標籤:.NET Core
