对象存储的多租户实现思路

这篇具有很好参考价值的文章主要介绍了对象存储的多租户实现思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

背景

SaaS软件下的租户如要存储图片、视频、office文档等文件,这些文件的存储及访问都需要支付不小的费用,有必要对租户作出限制,实现按使用量付费。

方案

本文提出一种方案,该方案基于现有各厂商的对象存储,可以实现对象存储的多租户模式。对租户的限制包括存储空间和流量大小。虽然从成本上讲自行搭建分布式存储、CDN,单价肯定更低,但前期投入和后期运维成本肯定不菲,不适合初创业务和小公司。

本方案适用于相册、云笔记、云盘,也适用于商城等租户需要上传大量文件的SaaS软件。

注意

本文中的对象存储以七牛为例,域名及DNS以阿里云为例。其他厂商应该也提供了类似接口,大同小异。

本文仅为设计思路。文中接口我并没有使用和测试过,如您发现有问题,请评论留言。

本文提供的方案不适合对存储及流量价格比较敏感的业务场景。因为相对于自建分布式存储、CDN的方案,本方案单价偏高。

二、SSL证书

必要性

        由于七牛的流量监控只支持按域名统计,要方便监控某一租户的流量,只能给租户分配一个子域名。

        目前https访问已成主流,ssl证书是必需的。

单域名证书

        单域名,如qn-a1.rcode.cc

        单域名证书有免费的,阿里云提供了申请API 阿里云 OpenAPI 开发者门户{}

        缺点:虽然可以给子域名申请免费的单域名证书,但我估计阿里云对免费证书有数量限制(每账号每年20张),不适于多租户模式。另外证书的申请时间最长可达几小时,难以让租户满意。

泛域名证书

        泛域名如 *.rcode.cc

        泛域名证书的价格:

                TrustAsia 域名型(DV)通配符SSL证书 1699元/年

                Digicert 域名型(DV)通配符SSL证书 1700元/年

                Rapid 域名型(DV)通配符SSL证书 1519.8元/年

        缺点:需要付费,但费用并不高。需要指出的是上述证书仅供个人和测试使用,要提高安全性可以购买EV证书。个人认为前期没有必要购买EV证书。

三、租户创建

创建租户专用的bucket、子域名

        在七牛:

        使用对象存储API创建单独bucket,如a1-oss。

        接口文档:创建 Bucket_API 文档_对象存储 - 七牛开发者中心

        使用CDN API 创建子域名,回源类型为qiniuBucket,bucket为a1-oss,如qn-a1.rcode.cc。

        接口文档:域名相关_API 文档_CDN - 七牛开发者中心

        使用CDN API 查询子域名的CNAME。

        接口文档:域名相关_API 文档_CDN - 七牛开发者中心

增加域名解析

        阿里云OpenAPI 增加子域名qn-a1.rcode.cc解析,方式为CNAME,值为上步获取的。

四、租户资源限制

存储空间限制

        使用七牛对象存储数据统计接口,查询存储空间大小

        接口文档: space_API 文档_对象存储 - 七牛开发者中心

        超出租户存储上限后,如何限制租户上传?

        首先说明一下上传流程:前端选择文件 》 前端从服务端获取上传凭证 》前端向七牛上传文件

        限制租户上传的关键在于服务端生成上传凭证逻辑中,判断租户超出上限后,给前端反馈错误,不发上传凭证。

流量限制

        使用七牛CDN 流量带宽API 批量查询 cdn 计费流量

        接口文档:流量带宽_API 文档_CDN - 七牛开发者中心

        由于上面的接口最多查询30天的流量,所以代码中要自行累加,判断租户流量超出后,可以移除空间的域名 或 下线域名。

        接口文档:域名相关_API 文档_CDN - 七牛开发者中心

五、租户销毁

删除空间方式

        该方式比较激进,但比较节省费用。

        也可以在用户停用后30天再删除,给予一定的缓冲时间。

下线域名方式

        下线域名来禁止访问,然后将空间文件改为归档模式,一年后再彻底删除。

        这种方式可以在用户续费后,额外支取一定费用进行恢复。

        以上两种方式各有利弊,但一般情况下用户不再续费后希望系统保留文件的情况相对较少。建议采用删除空间方式,在删除前发送提醒,给用户选择权利(实际也是激活用户)。文章来源地址https://www.toymoban.com/news/detail-762948.html

到了这里,关于对象存储的多租户实现思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南

    本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。 本文同步于个人公众号:【 云计算洞察 】 更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文: [ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶

    2024年02月08日
    浏览(36)
  • ACDC:开箱即用的多租户数据集成平台

    新东方的一些核心业务存在单元写、中心入仓的场景,因此需要将数据从各单元的关系型数据库同步到中心,并异构存储到数据仓库之中。 技术团队最初使用 Apache Sqoop 以批的方式实现了这个能力。随着数据量的增长,这个方案很快暴露出了一些问题,如: 为了不影响业务,

    2023年04月16日
    浏览(31)
  • ceph之rados设计原理与实现第五章:高效的本地对象存储引擎Bluestore

    由于FileStore底层仍然通过操作系统自带的本地文件系统管理磁盘,所以为了能够使用本地文件系统,所有针对RADOS的操作都需要转换成POSIX语义。 所以引入了BlueStore直接管理文件。 文件系统提供的核心操作就是读和写,BlueStore也是。 对于文件系统, 读操作除非缓存命中,否

    2024年02月02日
    浏览(47)
  • 实验2 存储器设计与实现【计算机组成原理】

    掌握单端口RAM和ROM原理和设计方法。 掌握32位数据的读出和写入方法。 掌握ModelSim和ISEVivado工具软件。 掌握基本的测试代码编写和FPGA开发板使用方法。 装有ModelSim和ISEVivado的计算机。 SwordBasys3EGo1实验系统。 片内存储器分为RAM和ROM两大类。RAM是随机存储器,存储单元的内

    2024年02月06日
    浏览(35)
  • 云计算-对象存储

    类似于本机电脑硬盘,通过线,直接IO连接硬盘。 参考链接:https://www.jianshu.com/p/7df6ec0699ed 透过网络(内网、外网)进行存储读取资料。 通俗点说,就是有一台很小很小的台式主机,里面只装了很多颗的硬碟,这台电脑很省电,又不会发热,只要有网路,就可以连到这台小电

    2024年02月03日
    浏览(22)
  • 云计算(三):对象存储概述

    当今,随着数字化信息的快速增长,对象存储技术也越来越受到人们的关注。对象存储(Object Storage Service)是一种存储方式,将数据以对象的形式进行存储,并在服务器上进行管理。它是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%的数据持久性,99.

    2024年02月21日
    浏览(31)
  • 云计算对象存储服务

    对象存储服务(OSS)中的存储桶(Bucket)叫做‘OBS桶\\\' 存储桶(Bucket) :存储桶式对象存储服务中用于存储对象的基本容器,类似于文件系统中的文件夹。每个存储桶具有唯一的名称,并且可以在桶中存储任意数量的对象。 对象 是存储在存储桶中的 基本数据单元 ,可以是文本

    2024年04月09日
    浏览(32)
  • GO 的 Web 开发系列(八)—— Gin 自定义 Html 渲染实现多租户的模板设计

    本文主要解决在多租户场景下的模板渲染问题。 正常情况下 Gin 配置的所有模板都属于同一个模板组合,相同名称的模板将相互覆盖。在未通过 define 指定模板名称时,同名模板文件也将相互覆盖。自定义函数中也无法区分租户,这将非常不方便我们进行多租户的模板渲染处

    2024年04月22日
    浏览(28)
  • 【WinForm】C#实现商场收银软件,从面向过程到面向对象,设计模式的应用

    实现商场收银系统从简单的面向过程到面向对象的演变。 最容易想到的: 单价*数量=总价 根据输入的单价和数量,直接计算,将结果显示在listbox控件中。 重置按钮可以清零。 1、运行效果 2、界面设计 3、代码 版本2在版本1的基础上增加了打折优惠。 1、运行效果 打折下拉框

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包