You need to enable JavaScript to run this app.
文档中心
对象存储

对象存储

复制全文
下载 pdf
ObjectSet
ObjectSet 概述
复制全文
下载 pdf
ObjectSet 概述
在 AI Agent、多租户 SaaS 服务等业务场景下,开发者通常需要在单一存储空间内为海量终端用户提供逻辑隔离的数据管理单元。为满足这一需求,TOS 推出了 ObjectSet 功能。​
ObjectSet 是在存储桶内部创建的虚拟资源管理单元。它将 TOS 的两层数据模型(Bucket-Object)扩展为三层(Bucket-ObjectSet-Object),为上层应用提供了一个原生、可大规模扩展的多租户隔离解决方案。每个 ObjectSet 拥有独立的权限管理、流量管控和计量统计,旨在帮助您在 TOS 上便捷、低成本地构建支持亿级租户的健壮应用。​
功能介绍​
ObjectSet 在存储桶内提供了一个轻量级的逻辑隔离层,具备接近于原生存储桶的多种管理能力,让您无需再自建复杂的中间层服务来管理多租户数据。​
​
核心功能​
说明​
独立的资源单元​
ObjectSet 作为一个独立的资源实体,支持创建、修改和删除等生命周期管理。​
支持为每个终端用户或业务单元创建一个 ObjectSet,实现资源的精细化管理。​
性能隔离​
每个 ObjectSet 均支持完善的隔离能力,确保用户间的数据与访问行为互不影响。​
支持基于 ObjectSet 设置独立的 QPS(每秒请求数)和带宽上限,避免单个租户的突发流量冲击影响其他租户,保障服务的整体稳定性。​
协议兼容性​
ObjectSet 的访问方式与标准 TOS 对象访问完全兼容,支持标准的 S3 协议。​
高级功能​
ObjectSet 支持与 TOS 的多种高级功能结合使用。​
例如:您可以为 ObjectSet 设置标签(Tag),并配置生命周期管理规则,实现对特定标签下所有 ObjectSet 内的对象进行批量的数据沉降或归档。​
​
功能优势​
​
功能优势​
说明​
亿级规模​
单个存储桶内支持创建亿级别的 ObjectSet 实例,突破了传统方案中存储桶数量的限制,为构建大规模多租户应用提供了坚实的基础。​
简化架构​
ObjectSet 将多租户隔离能力下沉至存储底层,提供了原生的权限、性能和计量隔离。​
不再需要投入大量研发资源自建和维护复杂的中间层网关或代理服务,从而显著降低了架构复杂度和开发成本。​
精细化管理​
通过按 ObjectSet 拆分的计量能力,可以精确地掌握每个租户的资源消耗情况。​
灵活性能​
根据不同租户的业务等级或付费模式,可以分配不同的 QPS 和带宽配额,实现差异化的服务质量(QoS)保障。这既能防止“免费”或低价值租户的资源滥用,也能确保核心租户的服务体验。​
​
使用场景​
​
使用场景​
说明​
AI Agent 与沙箱环境​
在 AI Agent、MaaS 平台或 Coze 这类应用中,每个终端用户或每次会话都可能需要一个独立的、安全的文件存储空间(沙箱)。​
通过为每个用户创建一个 ObjectSet,可以轻松实现文件隔离、资源配额管理和用量统计,确保用户数据的私密性和服务的公平性。​
多租户 SaaS 应用​
对于各类企业级 SaaS 服务(如在线协作平台、项目管理工具、云盘服务等),每个企业客户都需要一个逻辑上独立的存储空间。​
使用 ObjectSet,可以为每个企业客户分配一个专属的 ObjectSet,实现数据隔离、按客户计量以及差异化的功能配置。​
内容创作与分享平台​
在视频、图片或文档分享平台中,每个内容创作者都可以拥有一个独立的 ObjectSet 来存储和管理其作品。​
平台可以基于 ObjectSet 统计每个创作者的存储用量和外网访问流量,并据此进行成本核算或收益分成。​
物联网(IoT)设备数据管理​
在物联网场景下,海量的终端设备会持续不断地上传数据。可以为每一台设备或每一类设备组创建一个 ObjectSet,从而实现设备数据的逻辑隔离、访问控制和流量监控,便于后续的数据分析和管理。​
​
工作原理​
ObjectSet 的引入,将对象存储 TOS 的数据模型从 Bucket-Object 两层结构演进为 Bucket-ObjectSet-Object 三层模型。在此新架构下,数据访问和管理的流程如下:​
​​​
  1. 开通与配置:开启 ObjectSet 功能时,您可以定义 ObjectSet 路径前缀的目录层级和分隔符,为后续的 ObjectSet 创建和管理设定统一的规范。​
  1. 创建 ObjectSet:您可以为一个租户(例如,一个终端用户)创建一个专属的 ObjectSet,并为其指定一个唯一的路径前缀(Prefix)。这个前缀将作为该 ObjectSet 内所有对象的统一命名空间入口。​
  1. 对象读写与策略执行:当终端用户读写对象时,TOS 网关会根据对象的完整路径(Key)匹配其归属的 ObjectSet。一旦匹配成功,系统将自动执行该 ObjectSet 上配置的各项策略,例如:​
  • QoS 检查:判断当前请求是否超出该 ObjectSet 的 QPS 或带宽配额,若超出则执行限流。​
  • 权限校验:检查请求发起者是否具备访问该 ObjectSet 及其内部对象的权限。​
  • 计量与监控:将本次请求产生的流量、请求次数等指标,归属到对应的 ObjectSet 维度下进行统计。​
  1. 数据流转:通过策略检查后,数据 I/O 流程与标准的 TOS 访问流程保持一致,最终将数据写入或读取底层的存储介质。整个过程对上层应用保持了良好的透明性。​
约束与限制​
为了保证 ObjectSet 功能的稳定性、性能和未来扩展性,使用时请遵循以下约束。​
​
类别​
限制说明​
桶数量​
与 TOS Bucket 一致,每个账号(含子账号)最多可创建 100 个存储桶并开启 ObjectSet 功能。​
单桶内 ObjectSet 数量​
默认上限为 1000 万个,如需调整,可提交工单申请上调。​
生命周期​
  • 删除行为:删除 ObjectSet 仅会删除其元数据,不会删除其中的对象。如需清理这些对象,请根据业务需求单独执行删除操作。​
  • 规则执行优先级: ​
  • 当同一对象同时命中多条生命周期规则时,优先执行过期天数较短的规则;过期天数相同时,按照降低存储成本的原则执行。​
  • ObjectSet 独立规则与 ObjectSet Tag 规则执行时没有固定的类型优先级,同时命中时按照上述规则确定执行顺序。​
层级结构​
  • 不允许创建以根目录 / 为路径前缀的 ObjectSet,因为这相当于将所有对象归于一个 ObjectSet,失去了隔离的意义。​
  • 启用 ObjectSet 功能时,您需要为存储桶指定一个固定的目录层级数量(1~5 级)。所有新建 ObjectSet 的路径前缀都必须严格匹配此层级深度。该层级深度仅在桶内无任何 ObjectSet 时才可修改。​
  • 例如,若指定层级为 2,则 user/123/ 是合法前缀,而 user/ 或 user/123/data/ 则不合法。​
  • ObjectSet 内部通过分隔符来定义层级,默认为正斜杠 /。分隔符在存储桶级别设定,一旦设定后,只有桶内不存在任何 ObjectSet 时才允许修改。​
命名规范​
ObjectSet 的路径前缀长度必须在 3~256 个字符之间。​
容量统计​
通过 GetObjectSetStorage 等接口获取的 ObjectSet 容量统计数据并非实时精确值,存在一定的计算和同步延迟(通常为 10 分钟)。​
开通与兼容性​
  • 使用 ObjectSet 功能前,您需要先在存储桶中开启 ObjectSet 功能。详细操作,请参见初始化 ObjectSet。​
  • 对于已开启 ObjectSet 功能的存储桶,所有已存在的、其路径前缀未匹配任何新建 ObjectSet 的对象,将作为游离对象,这些游离对象将沿用存储桶级别的管理策略。​
​
计费说明​
ObjectSet 功能当前阶段暂时免费。​
常见问题​
Q1:可以在一个已经存有大量文件的存储桶上开启 ObjectSet 功能吗?​
A1:可以。在存量桶上开启 ObjectSet 功能后,所有已存在的、其路径前缀未匹配任何新建 ObjectSet 的对象,将作为游离对象,这些游离对象将沿用存储桶级别的管理策略。​
Q2:删除 ObjectSet 后,里面的数据会立刻消失吗?​
A2:不会。删除 ObjectSet 只是删除了该逻辑资源单元及其关联的配置(如 QoS、标签等),并不会删除其下存储的所有对象数据,这些数据会变为游离对象。您需要根据业务需求,自行决定是否通过批量删除等方式清理这些数据。​
Q3:ObjectSet 的 QPS 和带宽配额是强限制还是软限制?​
A3:强限制。当某个 ObjectSet 的访问流量或请求频率达到您所设定的配额上限时,TOS 会对后续的请求进行限流,并返回 429 Too Many Requests 错误码,以保证其他 ObjectSet 的服务质量不受影响。​
相关文档​
​
最近更新时间:2026.09.21 17:48:20
这个页面对您有帮助吗?
有用
有用
无用
无用