翼度科技»论坛 编程开发 .net 查看内容

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

11

主题

11

帖子

33

积分

新手上路

Rank: 1

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

  • 跨服务器可用
  • 兼容Amazon S3 API
  • 横向扩容
  • 高可用
  • 支持加密
MinIO就是一个高性能的文件服务,我们使用.NET来操作一下。
部署MinIO

最简单的办法,就是在Docker上运行MinIO。可以使用以下命令启动MinIO:
  1. docker run -p 9000:9000 -p 9001:9001 --name minio \
  2. -e "MINIO_ACCESS_KEY=<your-access-key>" \
  3. -e "MINIO_SECRET_KEY=<your-secret-key>" \
  4. minio/minio server /data --console-address ":9001"
复制代码
其中,和需要替换为自己的访问密钥和秘密密钥。
.NET操作

需要先安装MinIO的包,直接nuget安装即可:
  1. install-package minio
复制代码
导入Minio命名空间,并创建一个MinioClient对象。
  1. using Minio;
  2. var endpoint = "localhost:9000";
  3. var accessKey = "<your-access-key>";
  4. var secretKey = "<your-secret-key>";
  5. var minio = new MinioClient minio = new MinioClient()
  6.                                 .WithEndpoint("endpoint")
  7.                                 .WithCredentials("accessKey", "secretKey")
  8.                                 .Build();
复制代码
连接到MinIO服务器并执行一些基本操作。列出存储桶:
  1. var buckets = await minio.ListBucketsAsync();
  2. foreach (var bucket in buckets)
  3. {
  4.     Console.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
  5. }
复制代码
创建一个新的存储桶:
  1. var args = new MakeBucketArgs().WithBucket(bucketName).WithLocation(loc);
  2. await minio.MakeBucketAsync(args);
复制代码
上传一个文件:
  1. PutObjectArgs args = new PutObjectArgs().WithBucket(bucketName)
  2.                             .WithFileName(fileName).WithObject(objectName);
  3. await minio.PutObjectAsync(args);
复制代码
下载文件:
  1. var args = new GetObjectArgs().WithBucket(bucketName).WithObject(objectName)
  2.                             .WithFile(fileName);
  3. await minio.GetObjectAsync(args);
复制代码
性能测试

经过测试,在本机运行docker的情况下,上传8M的文件,本地运行,上传0.6s,下载0.4s。1.G的文件,上传14s,下载9s。常用网络交换的文件一般不会太大,性能还可以。

来源:https://www.cnblogs.com/podolski/archive/2023/04/19/17334644.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具