欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請碼778899分享:Minio高性能分布式對象存儲

柚子快報(bào)邀請碼778899分享:Minio高性能分布式對象存儲

http://yzkb.51969.com/

MinIO是什么?

一種對象存儲解決方案,它是一個(gè)基于

Minio 提供與亞馬遜云科技 S3 兼容的 API,并支持所有核心 S3 功能, 所以也可以看做是S3的開源版本;它允許用戶通過簡單的 API 接口進(jìn)行數(shù)據(jù)的存儲和檢索,同時(shí)提供高度可擴(kuò)展性和強(qiáng)大的數(shù)據(jù)保護(hù)機(jī)制。

MinIo主要是在微服務(wù)系統(tǒng)中使用,非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如 圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,而一個(gè)對象文件可以是任意大小

MinIO特點(diǎn)?

高可用性:MinIO 支持分布式部署,可以在多個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)數(shù)據(jù)冗余和負(fù)載均衡,從而提供高可用性和容錯(cuò)能力。高性能:MinIO 的設(shè)計(jì)目標(biāo)是提供快速的數(shù)據(jù)訪問速度。它采用了高度優(yōu)化的底層存儲引擎,并且支持并行讀寫操作,以滿足大規(guī)模數(shù)據(jù)訪問的需求。可擴(kuò)展性:MinIO 可以根據(jù)實(shí)際需求進(jìn)行水平擴(kuò)展,用戶可以根據(jù)數(shù)據(jù)量的增長來增加節(jié)點(diǎn)數(shù)量,從而實(shí)現(xiàn)存儲容量和性能的擴(kuò)展。數(shù)據(jù)保護(hù):MinIO 提供了多種數(shù)據(jù)保護(hù)機(jī)制,包括數(shù)據(jù)加密、數(shù)據(jù)完整性校驗(yàn)和故障恢復(fù)等。用戶可以根據(jù)需要選擇適當(dāng)?shù)谋Wo(hù)機(jī)制來保障數(shù)據(jù)的安全性和可靠性。兼容性:MinIO 兼容 Amazon S3 云存儲服務(wù)(AWS Signature v2 和 v4) API,這意味著用戶可以直接使用現(xiàn)有的 S3 工具和應(yīng)用程序與 MinIO 進(jìn)行集成,而無需進(jìn)行修改。

MinIO系統(tǒng)搭建

C盤意外盤符創(chuàng)建MinIO文件夾,并在其中創(chuàng)建MinData文件夾,用來存放數(shù)據(jù)

MinIO官網(wǎng)下載MinIO服務(wù)器(Windows版本),下載文件放在MinIO文件夾

配置環(huán)境變量:賬號變量名MINIO_ROOT_USER 變量值:admin密碼變量名MINIO_ROOT_PASSWORD 變量值:admin123

啟動(dòng)MinIO服務(wù)器MinIO文件夾=>cmd=>minio.exe server MinData --console-address ":9001"MinData為存放數(shù)據(jù)文件夾名稱

使用?http://xx.xx.xx.xx:9000進(jìn)入MinIO控制臺頁面

MinIO存儲桶操作查看存儲桶列表

創(chuàng)建存儲桶

查看存儲桶內(nèi)存儲列表

.net 6對接MinIO創(chuàng)建文件上傳WebAPI,創(chuàng)建FileUpload控制器添加NuGet包:Minio、Newtonsoft.Json

MinIO配置

登錄后復(fù)制

private readonly IMinioClient _minioClient;

private string bucketName = "sheepimages";

public FileController()

{

_minioClient = new MinioClient()

.WithEndpoint("10.31.60.18:900")

.WithCredentials("admin", "admin123")

.WithSSL(false);

}

1.2.3.4.5.6.7.8.9.10.

MinIO查看桶列表

登錄后復(fù)制

public async Task ListBuckets()

{

ListAllMyBucketsResult? buckets = await _minioClient.ListBucketsAsync().ConfigureAwait(false);

return Ok(buckets);

}

1.2.3.4.5.

封裝檢查存儲桶是否存在方法,因?yàn)槎家玫?/p>

登錄后復(fù)制

///

/// 檢查存儲桶是否存在,如果不存在則創(chuàng)建該存儲桶。

///

/// 要檢查或創(chuàng)建的存儲桶名稱。

/// Task

private async Task EnsureBucketExists(string bucketName)

{

BucketExistsArgs beArgs = new BucketExistsArgs().WithBucket(bucketName);

bool found = await _minioClient.BucketExistsAsync(beArgs).ConfigureAwait(false);

if (!found)

{

MakeBucketArgs mbArgs = new MakeBucketArgs().WithBucket(bucketName);

await _minioClient.MakeBucketAsync(mbArgs).ConfigureAwait(false);

}

}

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.

MinIO上傳單個(gè)文件

登錄后復(fù)制

///

/// 上傳單個(gè)文件到指定的存儲桶。如果存儲桶不存在,將自動(dòng)創(chuàng)建該存儲桶。

///

/// 要上傳的文件,該參數(shù)是一個(gè) IFormFile 類型,表示從 HTTP 請求中上傳的文件。

/// 返回一個(gè) IActionResult,包含上傳后文件的預(yù)簽名 URL。

[HttpPost]

public async Task UploadFile(IFormFile file)

{

if (file == null || file.Length == 0)

{

return BadRequest("上傳的文件不能為空。"); // 檢查文件是否有效

}

try

{

// 確保存儲桶存在

await EnsureBucketExists(bucketName);

// 為避免文件名沖突,生成唯一的對象名稱

string objectName = Guid.NewGuid().ToString() + "_" + file.FileName;

// 創(chuàng)建上傳對象的參數(shù)

PutObjectArgs poArgs = new PutObjectArgs()

.WithBucket(bucketName)

.WithObject(objectName)

.WithStreamData(file.OpenReadStream())

.WithContentType(file.ContentType)

.WithObjectSize(file.Length);

// 上傳文件到 MinIO

await _minioClient.PutObjectAsync(poArgs).ConfigureAwait(false);

// 創(chuàng)建預(yù)簽名 URL,設(shè)置有效期為7200秒(2小時(shí))

PresignedGetObjectArgs getArgs = new PresignedGetObjectArgs()

.WithBucket(bucketName)

.WithObject(objectName)

.WithExpiry(7200);

// 生成預(yù)簽名 URL

string url = await _minioClient.PresignedGetObjectAsync(getArgs).ConfigureAwait(false);

// 返回包含預(yù)簽名 URL 的 JSON 對象

return Ok(new { url });

}

catch (Exception ex)

{

// 處理異常,返回錯(cuò)誤信息

return StatusCode(500, $"文件上傳失敗: {ex.Message}");

}

}

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.

MinIO上傳多個(gè)文件

登錄后復(fù)制

///

/// 批量上傳文件到指定的存儲桶。如果存儲桶不存在,將自動(dòng)創(chuàng)建該存儲桶。

///

/// 要上傳的文件集合,該參數(shù)是 IFormFileCollection 類型,表示多個(gè)從 HTTP 請求中上傳的文件。

/// 返回一個(gè) IActionResult,包含上傳后文件的名稱列表或錯(cuò)誤信息。

[HttpPost] // 改為 POST 方法

public async Task UploadFiles(IFormFileCollection formFiles)

{

if (formFiles == null || formFiles.Count == 0)

{

return BadRequest("沒有上傳任何文件。"); // 檢查是否上傳了文件

}

try

{

// 確保存儲桶存在

await EnsureBucketExists(bucketName);

List? formFileList = new List();

// 遍歷所有上傳的文件

foreach (IFormFile formFile in formFiles)

{

// 打開文件的讀取流

using Stream? stream = formFile.OpenReadStream();

// 為避免文件名沖突,生成唯一的對象名稱

string? objectName = Guid.NewGuid().ToString() + "_" + formFile.FileName;

// 將文件名稱添加到文件列表中

formFileList.Add(objectName);

// 創(chuàng)建上傳對象的參數(shù)

PutObjectArgs? putArgs = new PutObjectArgs()

.WithBucket(bucketName)

.WithObject(objectName)

.WithStreamData(stream)

.WithContentType(formFile.ContentType)

.WithObjectSize(formFile.Length);

// 上傳文件到 MinIO

await _minioClient.PutObjectAsync(putArgs).ConfigureAwait(false);

}

// 返回上傳成功后的文件名稱列表

return Ok(formFileList);

}

catch (Exception ex)

{

// 處理異常,返回錯(cuò)誤信息

return StatusCode(500, $"文件上傳失敗: {ex.Message}");

}

}

1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.

柚子快報(bào)邀請碼778899分享:Minio高性能分布式對象存儲

http://yzkb.51969.com/

精彩內(nèi)容

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19387180.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄