体验.NET与文件存储服务MinIO

  • 体验.NET与文件存储服务MinIO已关闭评论
  • 129 次浏览
  • A+
所属分类:.NET技术
摘要

对象文件存储服务(OSS)主要用于存储零散的文件,和直接存储到本地文件系统中相比,有以下的几个优势:

对象文件存储服务(OSS)主要用于存储零散的文件,和直接存储到本地文件系统中相比,有以下的几个优势:

  1. 跨服务器可用
  2. 兼容Amazon S3 API
  3. 横向扩容
  4. 高可用
  5. 支持加密

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。常用网络交换的文件一般不会太大,性能还可以。