深入了解强大的云计算服务------S3

S3的简介

S3 是什么

  • Amazon Simple Storage Service(简称S3),是亚马逊AWS服务在2006年第一个正式对外推出的云计算服务
  • Amazon S3 是互联网存储解决方案。该服务旨在降低开发人员进行网络规模级计算的难度。
  • Amazon S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何位置存储和检索任何数量的数据。此服务让所有开发人员都能访问同一个具备高扩展性、可靠性、安全性和快速价廉的数据存储基础设施, Amazon 用它来运行其全球的网站网络。此服务旨在为开发人员带来最大化的规模效益。

S3的特点

对象存储
  • 数据(包括文件/视频/图片)以及相关的源数据都是以对象(objects)的方式来存储的
  • 不能以S3来当做操作系统的文件系统
  • 对象(object)最大支持5TB
高耐用
  • Object 提供11个9,99.999999999%的持久性
    意味着每一亿个object才会丢失一个object
    S3存储的对象会在同一个Region的多个AZ中保存多份拷贝
高可用
  • 提供99.99%的可用性
高扩展
  • 提供无限的存储空间
  • 基于WEB
  • 上传和下载数据基于HTTP/HTTPS请求
安全性
  • 可以选择多种方式来加密数据
计费模式
  • Pay as you go - Pay only for what you use

S3 的作用

  • 1.备份
  • 2.存储内容
  • 3.大数据分析
  • 4.挂载静态网站
  • 5.灾难恢复

S3桶(Bucket)

  • Bucket就是用来存储对象(object)的一个集合

  • Bucket和Object都是资源(resources), 也就是aws能操作的一个实体(entity)
    可以容纳无限的Object

  • 默认一个账户可以创建100个bucket,这个上限是软性限制,可以通过向AWS提交case来提高上限

  • Bucket需要归属于某个Region,不是Global的。虽然S3的web console页面是Global的。

  • Bucket由附属的子资源(subresources)来定义bucket的配置

S3 命名空间(Namespace)

S3需要唯一的命名空间
  • Bucket名字必须在AWS的整个S3生态中是唯一的,而不仅仅是只在Region中唯一。
    访问Bucket的方式
  • Virtual
		https://bucket.s3.amazonaws.com
		https://bucket.s3-aws-region.amazonaws.com
  • Path
		https://s3-aws-region.amazonaws.com/bucket
  • Bucket名字必须要全局唯一的原因就是因为Bucket名字也会是域名的一部分
区域(Region)
  • Region就是bucket实际存放的位置
  • 存放在某个Region的Object永远不会离开这个Region,除非你显式地将它传输出去
    选取Bucket的Region的时候,需要考虑延迟,费用等因素。因为建造和运营成本不同,AWS各个Region的S3费用并不相同。而一般来说,选择最近的Region,延迟就越小。

对象Object

  • S3是一个可以存储近似无限数量Object的Key-Value存储系统
  • Object包括如下元素

Key - object的名字
Value - 存储的数据,大小范围是0~5TB Version ID
当versioning功能开启后,每个Object都会拥有一个Version ID,用来区分有相同Key的不同的Object Bucket

  • Key + Version ID 三要素唯一定义了S3中的一个Object

Metadata - 用来存储Object其他相关信息的Name-value键值对 Subresources - 定义了一个Object的额外的资源
Access Control Information - 控制每个对象的访问策略

Object名字

  • S3是平面结构的

和文件系统不同,S3没有目录 可以通过使用prefixed来模拟目录
Object的键的名称是一序列的 Unicode 字符,它的UTF-8 编码长度最大为 1024 个字节
强烈建议Object的命名要符合DNS命名要求,采用如下字符集 字母数字字符

  • [0-9a-zA-Z]和特殊字符 !、-、_、.、*、’、( 以及 )

对象标签

  • 利用对象标签,您可以对存储进行分类。每个标签都是一个键-值对,例如:
	Department=Development
	DeployEnv=demo
  • 好处
  • 1.可以支持精细的访问控制
  • 2.可以支持精细的生命周期管理(Lifecycle management) 使用S3
  • 3.Analytics时,可以使用tag来配置筛选条件
  • 4.可以自定义Amazon CloudWatch和CloudTrail的筛选条件

子资源(Subresources)

子资源
  • S3子资源提供了存储和管理Bucket配置信息的支持
  • S3子资源只能依附于某一个确定的bucket或者object
  • bucket和object可以有一组关联的子资源
  • S3子资源必须归属于某个Bucket或者Object,而不能独立存在
  • Bucket和Object分别提供了不同的子资源
Bucket提供的子资源
  • 位置(Location)
  • 策略(Policy)和访问控制列表(ACL)
  • 跨资源共享(CORS)
  • 静态网站托管(Static Website Hosting)
  • 日志记录(Logging)
  • 时间通知(Event Notification)
  • 版本控制(Versioning)
  • 生命周期(Lifecycle)
  • 跨区域复制(Cross-Region Replication)
  • 标记(Tagging)
  • 下载人员付费(RequestPayment)
  • 传输加速(Transfer Acceleration)
Object提供的子资源
  • 访问控制列表(ACL)
  • torrent (用于支持BitTorrent协议)

一致性模型

  • 对put的新object,S3提供了read-after-write的一致性
    read-after-write: 只有在对象成功写入所有的设备,返回成功的返回值后,对象才能被读取
  • 对更新和删除操作,S3提供了最终一致性(eventual consistency)
    正在更新时,此时请求对象,旧数据可能会被返回
    在删除旧数据时,此时请求对象,旧数据仍然可能会被返回
  • 最终一致性(Eventual consistency)
    提供了低延迟和高吞吐的性能
  • S3不提供锁的机制
    如果两个写操作并发,结果最终会以最后一个为准
    如果需要类似锁的机制,那只能在使用S3的Application层进行控制

存储类别(Storage Classes/Tiers)

  • S3提供了如下几种存储类型
  • S3 Standard: 默认的存储类型,提供99.99%可用性,99.999999999%持久性。数据文件会冗余地存储在多个设施的多个设备中。设计目的是可以支持同时两个设施损坏。适合性能敏感的使用案例和需要经常访问的数据。
  • S3 Standard - Infrequent Access: 提供99.99%可用性,99.999999999%持久性。
    针对需要长期储存且不常访问, 但是需要立即能够访问到的数据 (例如备份以及访问频率已减少的较旧数据) 进行了优化。存储费用比S3Standard要低,但是每个访问请求的费用要远高于S3 Standard。
  • Reduced Redundancy Storage(RRS): 提供99.99%可用性和99.99%的持久性。适用于能再次生成的数据,比如图片的缩略图等。
    Glacier: 最便宜的存储方案,但是没法实时访问数据,必须要先恢复数据后才能进行访问。不适用于需要经常访问的数据。
  • S3 提供了生命管理周期(Lifecycle Management)的机制,可以将Object从S3 Standard转换到S3 Standard-Infrequent Access,再到Glacier。也可以在设定的时间过后自动删除object。但需要注意的是,不是一到达设定的时间后就立马开始转换,设定Lifecycle Management后,S3会将需要转换的object标记上转换时间,实际转换时间一般会延后。
  • 存储类别之间额比较如下:
    存储类别之间额

安全性

  • S3提供了11个9的持久性和99.99%的可用性
    提供数据的checksums机制,如果数据有损坏,可以使用冗余数据来修复
    跨域复制(Cross-Region replication)提供了更强的数据保护措施
  • 版本控制(Versioning),可以提供额外的保护
    开启Versioning后,提供了存储在S3中每个- Object的每个版本的恢复能力,即使Object已经被删除。
  • S3的Object默认是私有的
    只有Bucket和object的拥有者才能访问他们创建的资源
    可以通过Policies和ACL来授予访问objects和buckets的权限
  • S3提供了服务端加密和传输加密的功能
  • 所有访问S3 resources的请求都可被记录,用于审计

发送请求的方式

  • S3是一个RESTful的web service
    提供http&https的交互方式
    通过REST API来发送请求
  • 可以通过以下几种方式来操作S3
    AWS Management console
    AWS CLI (Command Line Interface)
    AWS SDK’s (Software Development Kits)
  • 操作方式
    GET 对等于 Download/Read
    PUT 对等于 Upload/Write
    DELETE 对等于 Delete

计费

使用多少就计费多少的原则

  • 计费项目
    1.存储(Storage)
    2.请求(Requests)
    3.数据传输费用(Data Transfer Pricing)
    4.数据传输加速(Transfer Acceleration)
    5.管理功能(Management Functions)
    Metrics
    存储类别分析(Storage Class Analysis)
    S3存储清单(S3 Inventory)

小故事

2017-03-01当天,AWS的一个程序员在调试系统时,输错了一个字母,导致US-EAST-1 region的大量S3服务器被误删除,导致大半个互联网将近瘫痪了4个小时。

问题发生后,AWS的SERVICE HEALTH DASHBOARD却显示Service一切正常。听说是因为Dashboard本身也是依赖于US-EAST-1的S3的, S3出了问题导致Dashboard也出问题了。

从这个小事故中可以看出AWS S3服务应用的普遍程度。

Reference

S3官方文档

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值