【愚公系列】2022年06月 .NET架构班 074-分布式中间件 Minio多租户

举报
愚公搬代码 发表于 2022/06/30 19:56:59 2022/06/30
【摘要】 前言 1.多租户的概念多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。 2.Minio多租户多租户:系统运行多个实例给多个不同的客户使用多租户如图所示 一、Minio多租户的使用分析:Minio默认会给一个客户使用,当客户变多了之后,所有客户的数据都集中在Minio内部的时候,导致数据冲突的问题...

前言

1.多租户的概念

多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性。

2.Minio多租户

多租户:系统运行多个实例给多个不同的客户使用

多租户如图所示
在这里插入图片描述

一、Minio多租户的使用

分析:Minio默认会给一个客户使用,当客户变多了之后,所有客户的数据都集中在Minio内部的时候,导致数据冲突的问题。例如:客户A的数据,可能会修改成客户B的数据,客户B可能查询客户B的数据。所以,如何解决客户数据冲突问题?

方案:Minio多租户?

1.租户1启动

​ 1.1 进入到Minio目录中

在这里插入图片描述

​ 1.2 然后输入以下命令

minio server --address :9001 --console-address ":9002" D:\work\net\MinIO\tenant1

在这里插入图片描述

​ 1.3 进入到Minio查看结果

在这里插入图片描述

​ 1.4 项目连接

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Minio;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace YDT.FileService.Controllers
{
    /// <summary>
    /// 商品图片控制器
    /// </summary>
    [ApiController]
    [Route("[controller]")]
    public class ProductFileController : ControllerBase
    {

        private readonly ILogger<ProductFileController> _logger;

        public ProductFileController(ILogger<ProductFileController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// 批量商品上传
        /// </summary>
        /// <returns></returns>
        [HttpPost("UploadList")]
        public IActionResult UploadList(IFormFile[] files)
        {
            // 2.1 遍历所有文件
            foreach (var formFile in files)
            {
                if (formFile.Length > 0)
                {
                    // 2.1 创建MinioClient客户端
                    MinioClient minioClient = new MinioClient("127.0.0.1:9001", "minioadmin", "minioadmin");

                    // 2.2 创建文件桶
                    if (!minioClient.BucketExistsAsync("product").Result)
                    {
                        minioClient.MakeBucketAsync("product").Wait();
                    }

                    // 2.3 上传文件
                    minioClient.PutObjectAsync("product", formFile.FileName, formFile.OpenReadStream(), formFile.Length).Wait();

                    _logger.LogInformation($"文件:{formFile.FileName}上传到MinIO成功");
                }
            }

            return new JsonResult("上传成功");
        }
    }
}

2.租户2启动

​ 2.1 进入到Minio目录中

在这里插入图片描述

​ 2.2 然后输入以下命令

minio server --address :9003 --console-address ":9004" D:\work\net\MinIO\tenant2

在这里插入图片描述

​ 2.3 进入到Minio查看结果

在这里插入图片描述

​ 2.4 项目连接

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Minio;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace YDT.FileService.Controllers
{
    /// <summary>
    /// 商品图片控制器
    /// </summary>
    [ApiController]
    [Route("[controller]")]
    public class ProductFileController : ControllerBase
    {

        private readonly ILogger<ProductFileController> _logger;

        public ProductFileController(ILogger<ProductFileController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// 批量商品上传
        /// </summary>
        /// <returns></returns>
        [HttpPost("UploadList")]
        public IActionResult UploadList(IFormFile[] files)
        {
            // 2.1 遍历所有文件
            foreach (var formFile in files)
            {
                if (formFile.Length > 0)
                {
                    // 2.1 创建MinioClient客户端
                    MinioClient minioClient = new MinioClient("127.0.0.1:9002", "minioadmin", "minioadmin");

                    // 2.2 创建文件桶
                    if (!minioClient.BucketExistsAsync("product").Result)
                    {
                        minioClient.MakeBucketAsync("product").Wait();
                    }

                    // 2.3 上传文件
                    minioClient.PutObjectAsync("product", formFile.FileName, formFile.OpenReadStream(), formFile.Length).Wait();

                    _logger.LogInformation($"文件:{formFile.FileName}上传到MinIO成功");
                }
            }

            return new JsonResult("上传成功");
        }
    }
}

3.租户3启动

​ 3.1 进入到Minio目录中

在这里插入图片描述

​ 3.2 然后输入以下命令

minio server --address :9005 --console-address ":9006" D:\work\net\MinIO\tenant3

在这里插入图片描述

​ 3.3 进入到Minio查看结果

在这里插入图片描述

​ 3.4 项目连接

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Minio;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace YDT.FileService.Controllers
{
    /// <summary>
    /// 商品图片控制器
    /// </summary>
    [ApiController]
    [Route("[controller]")]
    public class ProductFileController : ControllerBase
    {

        private readonly ILogger<ProductFileController> _logger;

        public ProductFileController(ILogger<ProductFileController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// 批量商品上传
        /// </summary>
        /// <returns></returns>
        [HttpPost("UploadList")]
        public IActionResult UploadList(IFormFile[] files)
        {
            // 2.1 遍历所有文件
            foreach (var formFile in files)
            {
                if (formFile.Length > 0)
                {
                    // 2.1 创建MinioClient客户端
                    MinioClient minioClient = new MinioClient("127.0.0.1:9003", "minioadmin", "minioadmin");

                    // 2.2 创建文件桶
                    if (!minioClient.BucketExistsAsync("product").Result)
                    {
                        minioClient.MakeBucketAsync("product").Wait();
                    }

                    // 2.3 上传文件
                    minioClient.PutObjectAsync("product", formFile.FileName, formFile.OpenReadStream(), formFile.Length).Wait();

                    _logger.LogInformation($"文件:{formFile.FileName}上传到MinIO成功");
                }
            }

            return new JsonResult("上传成功");
        }
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。