认识
数据存储和访问通常需要购买、部署和维护昂贵的硬件和软件资源,这对于许多公司来说是一项重大的投资和运营负担。—— ChatGPT
所以,Amazon 创建 S3 服务,使用户能够按需存储和检索任意数量的数据,从而降低了存储成本,并提高了可扩展性和可靠性。
S3,全称为 Amazon Simple Storage Service,是亚马逊提供的一种对象存储服务。
其主要是为解决大规模数据存储和检索的问题。例如图片、视频等等,该类文件仅涉及保存和读取,基本不涉及文件编辑。
组成
HTTP API and SDK
S3 接口提供 Web 服务接口,可随时随地通过 HTTP 的方式在网络上的任何位置存储和检索任意数量的数据,是一套非常实用的对象存储服务标准。
同时,提供了丰富的 SDK,支持 Java、Python、Ruby 和 PHP 等多种程序开发语言;
原理简述
在一个平坦的命名空间中(称之为桶),通过使用对象的 Object ID(有时称为对象密钥),来检索离散后的所有数据对象。
然后,应用程序通过 Web API 来访问对象,这与文件系统的访问方式不同。
对象(像文件一样)包含二进制数据流,并且大小无限制。对象还包含描述数据的元数据。文件也同样有元数据,包括文件权限、修改时间等。对象本身支持扩展元数据信息,通常以 K/V 形式管理元数据——将有关对象中数据的信息存储在键–值对中。
对象存储是一种解决和处理离散单元的方法。离散后的数据称为对象,因此数据会离散出很多对象。与传统的文件系统中的文件不同,对象存储不像文件系统那样通过目录树或者子目录树对文件进行组织。
构造
—— 该部分将介绍构造 s3 存储的方法。针对我们的场景,我们更加关注于“部署并使用 S3 来解决问题”,而非“从零开始实现一个 S3 对象存储”。
商业服务
自建服务
性质
1)可扩展性:S3 可以存储无限数量的数据,数据大小从 1 字节到 5TB 不等。
2)持久性和可用性:S3 提供了 99.999999999% 的数据持久性和 99.99% 的可用性保证。
3)安全性:S3 提供了多种数据保护机制,如 SSL 加密传输和服务器端加密存储等。
4)灵活的数据管理:S3 提供了生命周期管理、版本控制等功能,方便用户管理存储数据。
5)集成其他 AWS 服务:S3 可以和其他 AWS 服务(如 Amazon CloudFront、Amazon EMR、Amazon RDS 等)进行集成,实现更丰富的应用场景。
6)数据传输优化:S3 支持多种数据传输方式,包括多部分上传、传输加速等,以优化大规模数据的上传和下载。
支持各种语言的 SDK 进行编程访问:亚马逊提供的 SDK 支持 C++、C#、Java、PHP、Python 和 Ruby 等常见的语言,使应用的开发能够更加灵活简单;
多元化使用 S3 服务:现在可以通过 3 种方式使用 S3 服务。通过 S3 SDK 编程访问。通过 REST API 进行访问。通过命令行 CLI 进行访问;
权限隔离:使用一个账户可以访问同一存储集群上的多个桶。这些桶可能具有不同的访问权限,并且可能用于不同的对象存储。
抽象文件检索:对象存储的优点是简单易用、易于扩展。每个对象的唯一 ID 允许被存储或检索,无须最终用户知道该对象所在的确切位置。对象存储消除传统文件系统中的目录层次结构,因此可以简化对象之间的关系。
通过 Web 访问:对象存储不能像文件系统的磁盘那样被操作系统直接访问,相反,它只能通过 Web API 从应用层面被访问;
应用
该类场景具有相同特征,即写入存储的文件很少被修改,通常仅涉及保存操作和读取操作。
Backup and storage
Application hosting —— For example, you can configure your Amazon S3 bucket to host a static website.
Media hosting
Software delivery
用户还可以利用 S3 存储和检索任意数量的数据,适用于移动应用、存档、企业应用、IoT 设备等场景。
Amazon S3 支持商家或服务提供商处理、存储、传输信用卡数据,并已被验证符合支付卡行业 (PCI) 数据安全标准 (DSS)。所以,其能够用来存放敏感数据。
通过对象存储来托管静态网站
AWS S3 Website endpoints – Amazon Simple Storage Service
参考
Amazon S3 – Wikipedia
Object storage – Wikipedia
《Ceph 企业级分布式存储: 原理与工程实践》