對象文件存儲服務(OSS)主要用於存儲零散的文件,和直接存儲到本地文件系統中相比,有以下的幾個優勢: 跨伺服器可用 相容Amazon S3 API 橫向擴容 高可用 支持加密 MinIO就是一個高性能的文件服務,我們使用.NET來操作一下。 部署MinIO 最簡單的辦法,就是在Docker上運行Mi ...
對象文件存儲服務(OSS)主要用於存儲零散的文件,和直接存儲到本地文件系統中相比,有以下的幾個優勢:
- 跨伺服器可用
- 相容Amazon S3 API
- 橫向擴容
- 高可用
- 支持加密
MinIO就是一個高性能的文件服務,我們使用.NET來操作一下。
部署MinIO
最簡單的辦法,就是在Docker上運行MinIO。可以使用以下命令啟動MinIO:
docker run -p 9000:9000 -p 9001:9001 --name minio \
-e "MINIO_ACCESS_KEY=<your-access-key>" \
-e "MINIO_SECRET_KEY=<your-secret-key>" \
minio/minio server /data --console-address ":9001"
其中,<your-access-key>
和<your-secret-key>
需要替換為自己的訪問密鑰和秘密密鑰。
.NET操作
需要先安裝MinIO的包,直接nuget安裝即可:
install-package minio
導入Minio
命名空間,並創建一個MinioClient
對象。
using Minio;
var endpoint = "localhost:9000";
var accessKey = "<your-access-key>";
var secretKey = "<your-secret-key>";
var minio = new MinioClient minio = new MinioClient()
.WithEndpoint("endpoint")
.WithCredentials("accessKey", "secretKey")
.Build();
連接到MinIO伺服器並執行一些基本操作。列出存儲桶:
var buckets = await minio.ListBucketsAsync();
foreach (var bucket in buckets)
{
Console.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
}
創建一個新的存儲桶:
var args = new MakeBucketArgs().WithBucket(bucketName).WithLocation(loc);
await minio.MakeBucketAsync(args);
上傳一個文件:
PutObjectArgs args = new PutObjectArgs().WithBucket(bucketName)
.WithFileName(fileName).WithObject(objectName);
await minio.PutObjectAsync(args);
下載文件:
var args = new GetObjectArgs().WithBucket(bucketName).WithObject(objectName)
.WithFile(fileName);
await minio.GetObjectAsync(args);
性能測試
經過測試,在本機運行docker的情況下,上傳8M的文件,本地運行,上傳0.6s,下載0.4s。1.G的文件,上傳14s,下載9s。常用網路交換的文件一般不會太大,性能還可以。
除非特殊說明,本作品由podolski創作,採用知識共用署名 4.0 國際許可協議進行許可。歡迎轉載,轉載請保留原文鏈接~喜歡的觀眾老爺們可以點下關註或者推薦~