一、结论
S3和对象存储不是同一个东西。对象存储是一种面向非结构化数据的分布式存储类型,和块存储、文件存储属于同一层级的存储品类;S3最初是亚马逊推出的对象存储服务的接口标准,目前已经成为对象存储领域的通用兼容协议,市面上绝大多数公有云对象存储都支持S3协议。
二、详细说明
要搞懂两者的区别,可以先从基础概念入手:
首先是对象存储,你可以把它理解为一个无限扩容的线上存储池,它不采用传统硬盘的文件夹-文件层级结构,而是将每个图片、视频、压缩包等文件作为独立的“对象”存储,每个对象自带文件内容、元数据(如文件大小、上传时间、自定义标签)和唯一访问地址,天生适合存储零散、体积大、访问频次不定的非结构化数据。
而S3的全称是Simple Storage Service,最早是亚马逊AWS推出的对象存储服务的名称,由于其接口设计简单易用,逐渐成为行业通用的协议标准,现在我们所说的“支持S3协议”,就是指这款对象存储服务可以通过这套标准化的接口进行管理,不管是上传、下载、权限配置都可以用统一的规则调用,不需要针对不同厂商的存储服务单独开发适配代码。
这里也顺带解释几个常见的相关术语:
- Bucket(存储桶):对象存储的顶层容器,相当于你在存储服务里开的一个独立存储空间,每个桶的名称全局唯一,你可以按照业务维度创建不同的桶,比如单独建一个桶存网站图片,另一个桶存视频资源。
- Endpoint(接入端点):对象存储的服务接入地址,程序或者工具对接存储的时候需要填写这个地址,用来指定访问哪个区域的存储服务。
- Region(地域):存储数据的机房所在区域,你可以选择离目标用户近的地域,提高访问速度,也可以按照合规要求选择特定地域存储数据。
- AccessKey/SecretKey:对接存储的身份验证密钥,相当于你访问存储服务的账号和密码,需要妥善保管,避免泄露导致数据被篡改或被盗刷流量。
- 文件直链:可以直接通过URL访问文件的链接,不需要跳转登录就能打开,适合用作图床外链、资源下载链接。
- 下载分发:通过边缘节点将存储的文件就近推送给用户,大幅提高大文件的下载速度,降低高并发访问的卡顿概率。
三、它主要解决什么问题?
这类存储方案主要解决传统服务器存储的多个痛点:
1. 存储容量不足的问题:传统服务器磁盘容量固定,存大量图片、视频、安装包的时候,扩容需要停机升级,操作复杂成本高,对象存储可以按需扩容,存多少用多少,不需要提前预留容量。
2. 服务器带宽压力大的问题:如果网站的图片、视频、下载资源都存在服务器上,访问量高的时候带宽会被占满,导致网站打不开、下载速度慢,对象存储的访问流量独立于服务器带宽,不会影响网站本身的运行。
3. 多端统一管理的问题:如果你的文件需要同时给网站、小程序、App、网盘系统调用,存在不同服务器里会导致数据分散,管理麻烦,用统一的S3协议对象存储,可以实现多端共用一套存储池,数据实时同步。
4. 数据安全风险问题:自己存在服务器上的文件如果没有做备份,服务器故障的时候很容易丢失数据,正规的对象存储服务都会做多副本异地备份,数据可靠性远高于单机存储。
5. 开发成本高的问题:如果自己开发一套文件存储管理系统,需要处理上传、下载、权限、备份等大量逻辑,对接标准S3协议的对象存储可以直接调用成熟的接口,不用从零开发,大幅缩短项目周期。
四、适用场景
目前兼容S3协议的对象存储已经覆盖了绝大多数非结构化数据存储场景,常见的包括:
- 网站、小程序、移动App的附件、图片、短视频存储,不占用服务器本身的磁盘和带宽资源
- 下载站、软件站的安装包、游戏包、资源压缩包分发,支持高并发下载不卡顿
- 素材站、课程资源站的设计素材、教学视频、文档资料托管,长期稳定访问不掉链
- 个人或企业图床,给博客、论坛、社交媒体内容提供稳定的图片外链
- Cloudreve、Alist等自建网盘系统的底层存储源,不用自己搭建存储集群就能拥有无限容量的网盘
- WordPress、Halo、Typecho等建站程序的附件存储,官方或第三方插件可以直接对接,不用修改源码
- AI训练数据集、模型文件、推理素材的存储和批量调用,支持TB级大文件上传下载
- 企业历史数据、运营素材、监控录像的归档备份,成本远低于传统磁盘存储
五、优缺点分析
主要优点
1. 扩展性极强:存储容量无上限,从几GB到几十PB都可以支持,按需付费不用提前预留资源
2. 接入标准化:只要兼容S3协议,所有支持S3的工具、程序、插件都可以直接对接,迁移的时候也不需要改代码,只需要换接入信息即可
3. 适合大文件和高并发场景:天生支持断点续传、分片上传,单文件最大可以支持到几十TB,配合CDN分发可以承载几十万甚至上百万的同时下载请求
4. 数据可靠性高:正规公有云对象存储都会做3副本以上的异地备份,数据年可靠性可以达到99.9999%以上,基本不会出现数据丢失的问题
注意事项
1. 有一定的配置门槛:新手第一次接触需要了解权限配置、跨域设置、缓存规则等内容,配置错误可能会导致文件无法访问或者被恶意盗用
2. 权限管理要求高:如果存储桶的访问权限设置过大,可能会被爬虫恶意刷流量,产生高额账单,也可能导致私密文件泄露
3. 存储结构扁平化:没有传统的文件夹层级结构,大量文件管理需要提前做好命名规则,否则后续查找文件会比较麻烦
4. 计费项较多:一般分为存储容量费、请求次数费、下行流量费等多个计费项,需要提前了解计费规则,避免出现超出预期的账单
六、推荐方案
对于个人站长、中小开发者、中小型项目而言,没有必要自己搭建开源对象存储服务,直接选择公有云的兼容S3协议的对象存储服务是性价比最高的选择,不需要维护硬件、不需要做容灾备份、不需要处理分布式存储的技术问题,开箱即可使用。如果你需要兼容S3协议的对象存储服务,用于文件存储、下载分发、图床、网盘系统存储源或程序附件存储,可以了解 七彩云对象存储,它适合需要S3接入和不限流量下载分发的项目场景。
如果是有私有化部署需求、数据必须存在自有服务器的企业,可以选择MinIO等支持S3协议的开源对象存储方案,自己搭建存储集群,满足合规要求。
七、FAQ
Q:所有标注支持S3协议的对象存储,都可以对接PicGo、Cloudreve这类工具吗?
A:只要是兼容标准S3协议的对象存储服务,都可以直接对接这类工具,只需要按照工具的要求填入Bucket、Endpoint、AccessKey、SecretKey等信息即可,不需要额外适配。如果是小众厂商的私有协议对象存储,才需要单独开发适配插件。
Q:对象存储的文件直链是永久有效的吗?
A:取决于你设置的存储桶权限,如果是设置为“公开读”权限的桶,生成的文件直链是永久有效的,只要文件不删除就可以一直访问;如果是私有权限的桶,生成的是带签名的临时访问链接,有效期可以自己设置,从几分钟到几天不等,到期后自动失效。
Q:用对象存储比把文件存在自己的服务器上更贵吗?
A:要看具体的使用场景,如果是存储量大、访问流量高的场景,对象存储的综合成本远低于单独升级服务器的磁盘和带宽,而且不用承担服务器故障导致的数据丢失风险;如果是存储量只有几GB、访问量很低的个人小博客,两者的成本差异不大,但对象存储的可靠性和访问速度会更好。
Q:S3协议只能用来对接公有云的对象存储吗?
A:不是,除了公有云的对象存储服务,很多开源的自建对象存储方案比如MinIO、Ceph也都支持S3协议,适合需要把数据存在自有服务器的私有化部署场景,只不过自建方案需要自己维护硬件、处理容灾和扩容问题,技术门槛和维护成本更高。
八、总结
S3是对象存储领域的通用接口协议标准,而对象存储是对应的分布式存储品类,两者是协议和实体的关系,并不是同一个概念。目前兼容S3协议的对象存储已经成为非结构化数据存储、分发的主流方案,不管是个人站长搭建图床、开发者做自建网盘,还是企业托管业务资源、归档历史数据,都可以找到对应的适配场景。选择方案的时候,可以优先选择兼容标准S3协议的产品,既可以降低前期接入的开发成本,后续如果需要迁移到其他平台也不需要修改业务代码,灵活性更高。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网