文章目录

  • 3.1 基础存储架构Dynamo
  • 3.1.1 Dynamo概况
  • 3.1.2 Dynamo架构的主要技术
  • 1.Dynamo需要解决的主要问题及解决方案
  • 2.Dynamo的存储节点
  • 3.数据均衡分布的问题
  • 4.数据备份
  • 5.数据冲突问题
  • 3.2 弹性计算云EC2
  • 3.2.1 EC2的基本架构
  • 1.基本架构
  • 2.Amazon机器映象(AMI)
  • 3.实例(Instance)
  • 4.弹性块存储(EBS)
  • 3.2.2 EC2的关键技术
  • 1.地理区域和可用区域
  • 2.EC2的通信机制
  • 3.弹性负载平衡
  • 4.监控服务
  • 5.自动缩放
  • 6.服务管理控制台
  • 3.2.3 EC2的安全及容错机制
  • 1.EC2的安全及容错机制
  • 2.EC2引入了弹性IP地址的概念
  • 3.3 简单存储服务S3
  • 3.3.1 S3的基本概念和操作
  • 1.S3的基本概念和操作
  • 2.桶
  • 3.3.2 S3的数据一致性模型
  • 3.3.3 S3的安全措施
  • 1.身份认证(Authentication)
  • 2.S3中有三大类型的授权用户
  • 3.4 非关系型数据库服务SimpleDB和DynamoDB
  • 3.4.1 非关系型数据库与传统关系数据库的比较
  • 1.非关系型数据库与传统关系数据库的比较
  • image.png
  • 3.4.2 SimpleDB
  • 1.域(Domain)
  • 2.条目(Item)
  • 3.属性(Attribute)
  • 4.值(Value)
  • 3.4.3 DynamoDB
  • 3.4.4 SimpleDB和DynamoDB的比较
  • SimpleDB和DynamoDB的比较
  • 3.5 关系数据库服务RDS
  • 3.5.1 RDS的基本原理
  • 3.5.2 RDS的使用
  • 3.6 简单队列服务SQS
  • 3.6.1 SQS的基本模型
  • 1.系统组件
  • 2.队列
  • 3.消息

  • 3.6.2 SQS的消息
  • 1.消息的格式
  • 2.消息取样
  • 3.7 内容推送服务CloudFront
  • 3.7.1 CDN
  • 1.网络服务
  • 2.问题与解决
  • 3.访问模式好处
  • 4.实现所需的三种网络技术支持
  • 3.7.2 CloudFront
  • 1.优势
  • 2.组成内容
  • 3.交互方式

  • 3.8 其他Amazon云计算服务
  • 3.8.1 快速应用部署Elastic Beanstalk和服务模板CloudFormation
  • 1.快速应用部署Elastic Beanstalk
  • 3.8.2 DNS服务Router 53
  • 3.8.3 虚拟私有云VPC
  • 3.8.4 简单通知服务和简单邮件服务
  • 3.8.5 弹性MapReduce服务
  • 3.8.6 电子商务服务DevPay、FPS和Simple Pay
  • 1.基本内容
  • 2.用户与开发者关系
  • 3.计费
  • 4.按需交易
  • 5.三种身份参与者
  • 6.基本流程
  • 7.Payment Token种类
  • 8.简单支付服务
  • 9.总结
  • 3.8.7 Amazon执行网络服务
  • 3.8.8 土耳其机器人
  • 3.8.9 数据仓库服务Redshift
  • 1.Amazon Redshift是一种完全托管的PB级数据仓库服务
  • 2.与传统的数据仓库和数据库相比,Redshift具有如下特点
  • 3.8.10 应用流服务AppStream和数据流分析服务Kinesis
  • 1.应用流服务AppStream
  • 2.数据流分析服务Kinesis
  • 3.9 AWS应用实例
  • 3.9.1 照片和视频共享网站SmugMug
  • 3.9.2 视频制作网站Animoto
  • 3.9.3 网站排名Alexa
  • 3.10 小结
  • 习题:
  • 【学习笔记合集】
  • 【学习资料】


3.1 基础存储架构Dynamo

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_02

3.1.1 Dynamo概况

为了保证其稳定性,Amazon的系统采用完全的分布式、去中心化的架构 。

  • 作为底层存储架构的Dynamo也同样采用了无中心的模式
  • Dynamo只支持简单的键/值(key/value)方式的数据存储,不支持复杂的查询
  • Dynamo中存储的是数据值的原始形式,即按位存储,并不解析数据的具体内容

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_03

图:面向服务的Amazon平台基本架构

额外补充:区块链的去中心化

1.中心化问题有两个,一个是关键节点出问题容易导致系统瘫痪,二是难以避免管理中心节点的人修改数据。而区块链是采用多账本计算对比,能避免以上两个问题。因此,区块链技术较多出现于金融领域。

2.采取的数据存储方式区别于关系型数据库,也不需要涉及过多查询搜索语句等

3.1.2 Dynamo架构的主要技术

1.Dynamo需要解决的主要问题及解决方案

Dynamo在设计时被定位为一个基于分布式存储架构的,高可靠、高可用且具有良好容错性的系统。下图列举了Dynamo设计时面临的主要问题及所采取的解决方案。

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_04

2.Dynamo的存储节点

Dynamo中的存储节点呈无中心的环状分布。 通常,coordinator 是 preference list 上的第一个节点

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_05

3.数据均衡分布的问题
  • Dynamo采用了分布式的数据存储架构,均衡的数据分布可以保证负载平衡和系统良好的扩展性。
  • 因此,如何在各个节点上数据的均衡性是影响Dynamo性能的关键问题。
  • Dynamo中使用改进后的一致性哈希算法,并在此基础上进行数据备份,以提高系统的可用性。
  • 一致性哈希算法
  • 一致性哈希算法是目前主流的分布式哈希表(Distributed Hash Table,DHT)协议之一,于1997年由麻省理工学院提出。
  • 一致性哈希算法通过修正简单哈希算法,解决了网络中的热点问题,使得DHT可以真正地应用于P2P环境中。
  • 一致性哈希算法除了能够保证哈希运算结果充分分散到整个环上外,还能保证在添加或删除设备节点时只会影响到其在哈希环中的前驱设备节点,而不会对其他设备节点产生影响。
  • 一致性哈希算法可以大大降低在添加或删除节点时引起的节点间的数据传输开销
  • 改进的一致性哈希算法
  • Dynamo中引入了虚拟节点的概念
  • 每个虚拟节点都隶属于某一个实际的物理节点,一个物理节点根据其性能的差异被分为一个或多个虚拟节点。
  • 各个虚拟节点的能力基本相当,并随机分布在哈希环上。
  • 在存储数据时,每个数据会被先分配到某个数据分区,再根据负责该数据分区的虚拟节点,最终确定其所存储的物理节点。
4.数据备份
  • 在Dynamo中,每个数据的副本备份存储在哈希环顺时针方向上该数据所在虚拟节点的后继节点中。
  • 数据备份在存储数据的同时进行,会使每次写操作的延时变长。
  • Dynamo中对写操作进行了优化,保证一个副本必须写入硬盘,其他副本只要写入节点的内存即返回写成功。
  • 每个虚拟节点上实际存储了分配给它以及分配它的前N-1个前驱虚拟节点的数据。
5.数据冲突问题

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_06

Dynamo选择通过牺牲一致性来保证系统的可靠性和可用性,没有采用强一致性模型而采用了最终一致性模型。由于Dynamo中可能出现同一个数据被多个节点同时更新的情况,且无法保证数据副本的更新顺序,这有可能会导致数据冲突。

如何解决数据冲突问题呢?

  • 方法一:Dynamo中采用了向量时钟技术
  • Dynamo中的向量时钟通过 [node, counter] 对 来表示。 node表示操作节点 counter是其对应的计数器,初始值为 0节点每进行一次更新操作则计数器加 1
  • 方法二:成员资格及错误检测
  • 由于Dynamo采用了无中心的架构,每个成员节点都需要保存其他节点的路由信息
  • 为了保证每个节点都能拥有最新的成员节点信息,Dynamo中采用了一种类似于Gossip(闲聊)协议的技术
  • Dynamo中还通过Gossip来实现错误检测任何节点向其他节点发起通信后,如果对方没有回应,则认为对方节点失效
  • 亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_07

  • 为了避免新加入的节点之间不能及时发现其他节点的存在,Dynamo中设置了一些种子节点(Seed Node)。种子节点和所有的节点都有联系。当新节点加入时,它扮演一个中介的角色,使新加入节点之间互相感知。
  • 方法三:容错机制
  • 临时故障处理机制
  • 为了处理临时失效的节点,Dynamo中采用了一种带有监听的数据回传机制(Hinted Handoff)
  • 当虚拟节点A失效后,会将数据临时存放在节点D的临时空间中,并在节点A重新可用后,由节点D将数据回传给节点A。
  • 永久性故障处理机制
  • Dynamo采用Merkle哈希树技术来加快检测和减少数据传输量
  • **
    **

**
**

3.2 弹性计算云EC2

3.2.1 EC2的基本架构

1.基本架构

主要包括了Amazon机器映象、实例、存储模块等组成部分,并能与S3等其他Amazon云计算服务结合使用。

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_08

2.Amazon机器映象(AMI)
  • Amazon机器映像(Amazon Machine Image,AMI)是包含了操作系统、服务器程序、应用程序等软件配置的模板
  • 当用户使用EC2服务去创建自己的应用程序时,首先需要构建或获取相应的AMI
  • 构建好的AMI分为Amaznon EBS支持和实例存储支持两类
3.实例(Instance)
  • EC2中实例由AMI启动,可以像传统的主机一样提供服务。同一个AMI可以用于创建具有不同计算和存储能力的实例。
  • Amazon提供了多种不同类型的实例,分别在计算、GPU、内存、存储、网络、费用等方面进行了优化
  • Amazon还允许用户在应用程序的需求发生变更时,对实例的类型进行调整,从而实现按需付费。
  • Amazon EC2还为实例提供了许多附加功能,帮助用户更好地部署和管理应用程序。
4.弹性块存储(EBS)
  • EBS存储卷的设计与物理硬盘相似,其大小由用户设定,目前提供的容量从1GB到1TB不等。
  • EBS存储卷适用于数据需要细粒度地频繁访问并持久保存的情形,适合作为文件系统或数据库的主存储。
  • 快照功能是EBS的特色功能之一,用于在S3中存储Amazon EBS卷的时间点副本。

**
**

3.2.2 EC2的关键技术

1.地理区域和可用区域

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_09

  • 数据中心选址考虑各地的地理位置、环境湿度、能源、等等因素
  • 目前各国都在研究讲大数据中心服务器建立在海洋中,通过潮汐等能源发电
  • EC2系统中包含多个地理区域,而每个地理区域中又包含多个可用区域。为了确保系统的稳定性,用户最好将自己的多个实例分布在不同的可用区域和地理区域中。
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mwEP63vf-1616407647047)(https://cdn.nlark.com/yuque/0/2021/png/2196885/1616405593638-c1e066c8-235a-4cdd-8054-2a50c31d21fc.png)]
2.EC2的通信机制

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_10

3.弹性负载平衡
  • 弹性负载平衡功能允许EC2实例自动分发应用流量,从而保证工作负载不会超过现有能力,并且在一定程度上支持容错。
  • 弹性负载平衡功能可以识别出应用实例的状态,当一个应用运行不佳时,它会自动将流量路由到状态较好的实例资源上,直到前者恢复正常才会重新分配流量到其实例上。
4.监控服务

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_11

5.自动缩放
  • 自动缩放可以按照用户自定义的条件,自动调整EC2的计算能力:
  • 自动缩放功能特别适合周期性变化的应用程序,它由CloudWatch自动启动。
6.服务管理控制台

各项技术通过互相配合来实现EC2的可扩展性和可靠性

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_12

3.2.3 EC2的安全及容错机制

1.EC2的安全及容错机制
  • 安全组是一组规则,用户利用这些规则来决定哪些网络流量会被实例接受,其他则全部拒绝。
  • 当用户的实例被创建时,如果没有指定安全组,则系统自动将该实例分配给一个默认组
  • 默认组只接受组内成员的消息,拒绝其他消息。
  • 当一个组的规则改变后,改变的规则自动适用于组中所有的成员。
  • SSH是目前对网络上传输的数据进行加密的一种很可靠的协议,当用户创建一个密钥对时,密钥对的名称(Key Pair Name)和公钥(Public Key)会被存储在EC2中
2.EC2引入了弹性IP地址的概念
  • 弹性IP地址和用户账号绑定而不是和某个特定的实例绑定
  • 当系统正在使用的实例出现故障时,用户只需要将弹性IP地址通过网络地址转换NAT转换为新实例所对应的私有IP地址
  • 通过弹性IP地址改变映射关系总可以保证有实例可用

**
**

**
**

**
**

3.3 简单存储服务S3

3.3.1 S3的基本概念和操作

1.S3的基本概念和操作
  • 简单存储服务(Simple Storage Services,S3)构架在Dynamo之上,用于提供任意类型文件的临时或永久性存储。S3的总体设计目标是可靠、易用及低成本。
  • S3中支持对桶和对象的操作,主要包括:Get、Put、List、Delete和Head。下图列出了五种操作的主要内容。

操 作 目 标

Get

Put

List

Delete

Head

获取桶中对象

创建或更新桶

列出桶中所有键

删除桶


对象

获取对象数据和元数据

创建或更新对象


删除对象

获取对象元数据

表3-3 S3的主要操作

2.桶
  • 桶是用于存储对象的容器,其作用类似于文件夹,但桶不可以被嵌套,即在桶中不能创建桶。
  • 目前,Amazon限制了每个用户创建桶的数量,但没有限制每个桶中对象的数量。
  • 桶的名称要求在整个Amazon S3的服务器中是全局唯一的,以避免在S3中数据共享时出现相互冲突的情况。
  • 在对桶命名时,建议采用符合DNS要求的命名规则,以便与CloudFront等其他AWS服务配合使用。

3.3.2 S3的数据一致性模型

在数据被充分传播到所有的存放节点之前,服务器返回给用户的仍是原数据,此时用户操作可能会出现后面几种情况:

** **

用户操作

结果

1

写入一个新的对象并立即读取它

服务器可能返回“键不存在”

2

写入一个新的对象并立即列出桶中已有的对象

该对象可能不会出现在列表中

3

用新数据替换现有的对象并立即读取它

服务器可能返回原有的数据

4

删除现有的对象并立即读取它

服务器可能返回被删除的数据

5

删除现有的对象并立即列出桶中的所有对象

服务器可能列出被删除的对象

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_13

3.3.3 S3的安全措施

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_14

1.身份认证(Authentication)

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_15

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_16

2.S3中有三大类型的授权用户

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_17

3.4 非关系型数据库服务SimpleDB和DynamoDB

3.4.1 非关系型数据库与传统关系数据库的比较

1.非关系型数据库与传统关系数据库的比较

传统的关系数据库

非关系型数据库

数据模型

对数据有严格的约束

key和value可以使用任意的数据类型

数据处理

满足CAP原则的C和A,在P方面很弱

满足CAP原则的A和P,而在C方面比较弱

接口层

以SQL语言对数据进行访问的,提供了强大的查询功能,并便于在各种关系数据库间移植

通过API操作数据,支持简单的查询功能,且由于不同数据库之间API的不同而造成移植性较差

3.4.2 SimpleDB

SimpleDB基本结构图如下,包含了域、条目、属性、值等概念。

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_18

1.域(Domain)
  • 域是用于存放具有一定关联关系的数据的容器,其中的数据以UTF-8编码的字符串形式存储。
  • 每个用户账户中的域名必须是唯一的,且域名长度为3~255个字符。
  • 每个域中数据的大小具有一定的限制。
  • 但域的划分也会为数据操作带来一些限制,是否划分域需要综合多种因素考虑。
2.条目(Item)
  • 条目对应着一条记录,通过一系列属性来描述,即条目是属性的集合。
  • 在每个域中,条目名必须是唯一的
  • 与关系数据库不同,SimpleDB中不需要事先定义条目的模式,即条目由哪些属性来描述。
  • 操作上具有极大的灵活性,用户可以随时创建、删除以及修改条目的内容
3.属性(Attribute)
  • 属性是条目的特征,每个属性都用于对条目某方面特性进行概括性描述。
  • 每个条目可以有多个属性。
  • 属性的操作相对自由,不用考虑该属性是否与域中的其他条目相关。
4.值(Value)
  • 值用于描述某个条目在某个属性上的具体内容
  • 一个条目的一个属性中可以有多个值。
  • 例子:某类商品除颜色外其他参数完全一致,此时可以通过在颜色属性中存放多个值来使用一个条目表示该商品,而不需要像关系数据库中那样建立多条记录。

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_19

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_20

3.4.3 DynamoDB

DynamoDB的特点:

  • DynamoDB以表为基本单位,表中的条目同样不需要预先定义的模式。
  • DynamoDB中取消了对表中数据大小的限制,用户设置任意大小,并由系统自动分配到多个服务器上。
  • DynamoDB不再固定使用最终一致性数据模型,而是允许用户选择弱一致性或者强一致性。
  • DynamoDB还在硬件上进行了优化,采用固态硬盘作为支撑,并根据用户设定的读/写流量限制预设来确定数据分布的硬盘数量。

3.4.4 SimpleDB和DynamoDB的比较

SimpleDB和DynamoDB的比较

SimpleDB和DynamoDB都是Amazon提供的非关系型数据库服务。

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_21

3.5 关系数据库服务RDS

3.5.1 RDS的基本原理

  • Amazon RDS将MySQL数据库移植到集群中,在一定的范围内解决了关系数据库的可扩展性问题。
  • MySQL集群方式采用了Share-Nothing架构。
  • 每台数据库服务器都是完全独立的计算机系统,通过网络相连,不共享任何资源
  • 这是一个具有较高可扩展性的架构,当数据库处理能力不足时,可以通过增加服务器数量来提高处理能力,同时多个服务器也增加了数据库并发访问的能力。
  • 表单主要根据业务的需要进行针对性的划分,对数据库的管理人员提出了非常高的要求,如果划分得不科学,则查询经常会跨表单和服务器,性能就会严重下降。

3.5.2 RDS的使用

  • 从用户和开发者的角度来看,RDS和一个远程MySQL关系数据库没什么两样。
  • Amazon将RDS中的MySQL服务器实例称做DB Instance,通过基于Web的API进行创建和管理,其余的操作可以通过标准的MySQL通信协议完成。
  • 创建DB Instance时还需要定义可用的存储,存储范围为5GB到1024GB,RDS数据库中表最大可以达到1TB。
  • 可以通过两种工具对RDS进行操作:命令行工具和兼容的MySQL客户端程序
  • 命令行工具是Amazon提供的Javamazon网站下载。MySQL客户端是可以与MySQL服务器进行通信的应用程序

3.6 简单队列服务SQS

Amazon为解决云计算平台之间不同组件的通信专门设计开发的

3.6.1 SQS的基本模型

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_22

  • 在SQS中,消息和队列是最重要的两个概念。
  • 不过SQS允许用户在消息中添加有关的序列数据,对于数据发送顺序要求比较高的用户可以在发送消息之前向其中加入相关信息。
1.系统组件
  • 系统组件是SQS的服务对象,而SQS则是组件之间沟通的桥梁
  • 既可以是消息的发送者,也可以是消息的接收者
2.队列
  • 队列是存放消息的容器,类似于S3中的桶
  • 队列的数目是任意的,创建队列时用户必须给其指定一个在SQS账户内唯一的名称
  • 队列在传递消息时会尽可能 “先进先出”
3.消息
  • 消息是发送者创建的具有一定格式的文本数据,接收对象可以是一个或多个组件
  • 消息的大小是有限制的,但是消息的数量并未做限制

3.6.2 SQS的消息

1.消息的格式
  • 消息ID:由系统返回给用户,用来标识队列中的不同消息。
  • 接收句柄:当从队列中接收消息时就会从消息那里得到一个接收句柄,这个句柄可以用来对消息进行删除等操作。
  • 消息体:消息的正文部分,需要注意的是消息存放的是文本数据并且不能是URL编码方式。
  • 消息体 MD5摘要 :消息体字符串的MD5校验和。
2.消息取样
  • 队列中的消息是被冗余存储的,同一个消息会存放在系统的多个服务器上。其目的是为了保证系统的高可用性,但这会给用户查询队列中的消息带来麻烦。
  • 为了解决该问题,SQS采用了基于加权随机分布(Weighted Random Distribution)的消息取样
  • 当用户发出查询队列中消息的命令后,系统在所有的服务器上使用基于加权随机分布算法随机地选出部分服务器,然后返回这些服务器上保存的所查询的队列消息副本。

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_23

3.可见性

  • 可见性表明该消息可以被所有的组件查看,可见性超时值相当于一个计时器,在设定好的时间内,发给用户的消息对于其他所有的组件是不可见的。
  • 扩展操作就是将计时器按照新设定的值重新计时,终止就是将当前的计时过程终止,直接将消息由不可见变为可见。

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_24

3.7 内容推送服务CloudFront

基于Amazon云计算平台实现的内容分发网络。借助Amazon部署在世界各地的边缘节点,用户可以快速、高效地对由CloudFront提供服务的网站进行访问。

3.7.1 CDN

1.网络服务

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_25

  • 传统的网络服务模式中,用户和内容提供商位于服务的两端,网络服务提供商将两者联系起来。在这种情况下,网络服务提供商仅仅起“桥梁”作用。
2.问题与解决
  • 用户在发出服务请求后,需要经过DNS服务器进行域名解析后得到所访问网站的真实IP,然后利用该IP访问网站。在这种模式中,世界各地的访问者都必须直接和网站服务器连接才可以访问相关内容,存在明显的缺陷。
  • DNS在对域名进行解析时不再向用户返回网站服务器的IP,而是返回了由智能CDN负载均衡系统选定的某个边缘节点的IP。

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_26

3.访问模式好处
  • 将网站的服务流量以比较均匀的方式分散到边缘节点中,减轻了网站源服务器的负担。
  • 由于边缘节点与访问者的地理位置较近,访问速度快。
  • 智能DNS负载均衡系统和各个边缘节点之间始终保持着通信联系,可以确保分配给用户的边缘节点始终可用且在允许的流量范围之内。
4.实现所需的三种网络技术支持
  • 负载均衡技术:将网站的服务流量以比较均匀的方式分散到边缘节点中,减轻了网站源服务器的负担。
  • 分布式存储 : 由于边缘节点与访问者的地理位置较近,访问速度快。
  • 缓存技术:智能DNS负载均衡系统和各个边缘节点之间始终保持着通信联系,可以确保分配给用户的边缘节点始终可用且在允许的流量范围之内。

3.7.2 CloudFront

1.优势

CloudFront正是通过Amazon设在全球的边缘节点来实现CDN的,但是较普通的CDN而言,它的优势无疑是巨大的。

  • CloudFront的收费方式和Amazon的其他云计算收费方式一样是按用户实际使用的服务来收费,这尤其适合那些资金缺乏的中小企业。
  • CloudFront的使用非常简单,只要配合S3再加上几个简单的设置就可以完成CDN的部署
2.组成内容

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_27

3.交互方式
  • CloudFront在此处就相当于CDN中的智能DNS负载均衡系统,用户实际是和CloudFront进行服务交互而不是直接和S3中的原始文件进行交互。
  • CloudFront与其他一些AWS不同的是,它只接受安全的HTTPS方式而不接受HTTP方式进行访问,这又进一步提高了安全性。

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_28

3.8 其他Amazon云计算服务

3.8.1 快速应用部署Elastic Beanstalk和服务模板CloudFormation

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_29

1.快速应用部署Elastic Beanstalk

Elastic Beanstalk虚拟机是一种运行Apache Web Server、Tomcat 和 the Enterprise Edition of the Java platform的AMI虚拟机,具有以下特点:

  • Elastic Beanstalk构筑于AWS之上,因此它具有Amazon EC2、负载均衡、云监控、自动缩放等全部的特性。
  • 用户可以采用多种方式对其程序进行控制和参数设置,也可以通过登录EC2实例来处理程序出现的问题,或者采用Elastic Beanstalk AMI提供的默认处理方式。
  • Elastic Beanstalk为每个应用运行多个EC2实例,提高程序的可靠性。
  • 利用Elastic Beanstalk部署的用户程序可以调用部署在其他EC2实例上的程序,并能保证时延。

3.8.2 DNS服务Router 53

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_30

3.8.3 虚拟私有云VPC

  • Amazon虚拟私有云(VPC)是一个安全的、可靠的、可以无缝连接企业现有的基础设施和Amazon云平台的技术。
  • VPC将企业现有网络和AWS计算资源连接成一个虚拟专用网络资源,提供强大的网络功能。通过Amazon VPC,企业可以很容易地获得需要的基础资源,有效地控制成本、节省时间和管理成本。

3.8.4 简单通知服务和简单邮件服务

1.简单通知服务(SNS)是一种Web服务,提供方便的信息发布平台,具有高的可扩展性和成本优势。

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_31

2.Amazon简单邮件服务(Simple E-mail Service,SES)是一个简单的高扩展性和具有成本优势的电子邮件发送服务。

  • 通过简单的API调用,企业就可以获得高品质电子邮件系统,将高效率、低成本的优势转移到用户身上。
  • 同时SES采用了内容过滤技术,有力地阻止垃圾邮件。

3.8.5 弹性MapReduce服务

Amazon的弹性MapReduce是通过EC2和S3来实现的,其基本架构如图所示。

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_32

  • 弹性MapReduce的运行过程非常简单,用户根本不需要考虑计算中涉及的服务器部署、维护及软件环境的配置
  • Amazon允许用户在上传数据前对数据进行加密并通过安全的HTTPS协议上传数据。
  • 弹性MapReduce中的实例被划分成两个安全组:一个是主节点安全组,另一个是从节点安全组。
  • 任务流实际上是由一系列前后相关的处理过程组成的,可以与线性链表的结构类比,除了第一个节点和最后一个节点,每个节点既是前一个节点的后继也是后一个节点的前驱。

3.8.6 电子商务服务DevPay、FPS和Simple Pay

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_33

1.基本内容

DevPay是Amazon推出的主要针对开发者的软件销售及账户管理平台

  • 开发者将自己开发的付费AMI和基于S3的相关产品通过DevPay平台进行发布,用户则通过DevPay浏览包括软件功能和价格在内的相关信息,并通过DevPay进行购买并支付费用。
  • 开发者通过DevPay提供的账户管理功能对自己的账户及产品进行管理,可以进行诸如查看使用产品的用户情况、修改产品价格等操作。Amazon Payments属于第三方支付平台,DevPay中的所有的交易都通过Payments完成
2.用户与开发者关系

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_34

3.计费

在DevPay服务中,计费包括两部分: 开发者向用户收取的费用和DevPay向开发者收取的费用

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_35

4.按需交易
  • FPS允许用户根据需要和实际情况对支付服务进行各种个性化的设置,使其和用户的电子商务平台更加契合。

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_36

5.三种身份参与者

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_37

6.基本流程

顾客在使用了FPS服务的网站上购买产品或服务的基本流程如图:

亚马逊 云计算架构设计 亚马逊云计算操作系统_Amazon_38

7.Payment Token种类

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_39

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_40

8.简单支付服务

简单支付服务(Simple Pay)是一种允许顾客使用其Amazon账户进行支付的服务,目前简单支付服务有五种常用的支付按钮,按钮类型及其功能见表。

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_41

  • 简单支付服务 的功能和FPS服务类似,但和FPS相比,它的最大优势就是简单。
  • FPS服务允许开发者自行定制其支付页面,可以实现各种复杂的支付方式,但高度的灵活性带来的必然是实现上的复杂性。
  • FPS服务需要用户具有一定的编程经验,而简单支付服务对用户的编程技术几乎没有什么要求,简单支付服务流程如图所示:
9.总结

对于支付服务有着较高要求的用户可以选择FPS,但只是简单地完成一些日常支付服务的则推荐使用简单支付服务。

3.8.7 Amazon执行网络服务

Amazon执行网络(Fulfillment Web Service,FWS)是一个非常有用的代理订单执行网络服务,简单来说它的作用就是产品存储及销售业务的托管,也可直接理解为Amazon替用户销售产品。

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_42

3.8.8 土耳其机器人

亚马逊 云计算架构设计 亚马逊云计算操作系统_大数据_43

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_44

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_45

3.8.9 数据仓库服务Redshift

1.Amazon Redshift是一种完全托管的PB级数据仓库服务
  • 费用不到大多数其他数据仓库解决方案成本的十分之一,降低数据仓库的成本
  • 通过简单的API调用进行扩展或缩减,自动进行修补,并自动或根据用户定义进行备份
  • 提供了对大规模数据进行快速分析的功能,可以实现对多个物理资源上数据的分布式并行查询
2.与传统的数据仓库和数据库相比,Redshift具有如下特点
  • Redshift采用了列式数据存储,更加适用于数据仓库存储及分析。在数据仓库中,查询会涉及对大型数据集进行聚合。
  • Redshift采用了多种压缩技术,并对加载的数据自动选择最合适的压缩方案,从而实现更好的压缩效果。
  • Redshift具有大规模并行处理的能力。

3.8.10 应用流服务AppStream和数据流分析服务Kinesis

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_46

1.应用流服务AppStream
  • AppStream允许开发人员将应用程序部署在AWS的基础设施上,并以流传输的方式发送到不同的终端设备上。这样,AppStream就在应用程序和设备之间形成了一个代理。
  • 同时,AppStream只是将数据传送到不同终端设备上的浏览器或客户端程序,避免了对应用程序本身的修改。
  • 此外,AppStream还可以与Amazon WorkSpaces虚拟桌面进行结合,以满足企业用户的需求,甚至在此基础上对数据流进行分析,用于金融、医疗等领域。
2.数据流分析服务Kinesis

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_47

  • Kinesis是一种完全托管的数据流服务,用于实时地处理快速流转的数据。
  • Kinesis可以轻松实时地处理快速流转的数据,其基本功能是数据流的输入与输出。
  • Kinesis允许定义任意数量的数据源,并与任意数量的处理相关联。

3.9 AWS应用实例

3.9.1 照片和视频共享网站SmugMug

下图展示了采用Amazon S3服务后的SmugMug基本架构。

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_48

  • 虽然SmugMug提供了利用API直接对存储在S3中照片进行访问的方式,超过99%的用户依然采用访问SmugMug的方式处理照片,照片存储的方式对于用户是透明的。
  • SmugMug已经将所有的数据从传统的数据中心中迁入S3中
  • SmugMug还采用了EC2进行照片处理,并采用Amazon CloudSearch来支持用户在数十亿照片和视频中搜索
  • SmugMug构建了自己的队列服务和控制器,它们能与AWS很好地协作,使得系统中大部分操作都能够自动完成。

3.9.2 视频制作网站Animoto

Animoto网站根据用户上传的图片、视频片段和音乐,自动编辑生成专业水准的视频,并且与用户的好友分享

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_49

如图展示了Animoto的基本架构

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_50

  • AWS所提供的S3和SQS等服务对于用户而言是完全透明的,用户的所有操作通过Animoto网站转到AWS中完成
  • 这种方式为Animoto提供了具有很高伸缩性和灵活性的基础设施。

3.9.3 网站排名Alexa

亚马逊 云计算架构设计 亚马逊云计算操作系统_亚马逊 云计算架构设计_51

Alexa公司是一家专注于世界网站排名的公司

亚马逊 云计算架构设计 亚马逊云计算操作系统_数据_52

3.10 小结

亚马逊 云计算架构设计 亚马逊云计算操作系统_云计算_53

习题:

1.在Dynamo中添加一个新的节点时,原先各节点保存的数据是否需要改变?如果改变,应该如何变化?

2.Merkle哈希树的创建需要较大的时间开销。频繁地重建Merkle树会对系统造成很大的负担。假设Merkle树的叶子节点表示的是数据分区的Hash值,请设计一个Merkle树重建方案,尽量减少Merkle树的重建工作。

3.私有IP、公有IP和弹性IP的区别在哪里?

4.地理区域和可用区域有哪些区别?

5.简单存储服务S3与传统的文件系统有哪些区别?

6.简单阐述SQS在Amazon云计算中的作用。

7.如何理解传统数据库在可扩展性方面的能力较弱?

8.非关系型数据库是如何解决可扩展性问题的?

9.简述Share-Nothing架构的特点。

10.简述AWS如何支持在线数据流应用。

11.描述一个基于Amazon AWS的应用实例。