一、基础存储架构Dynamo
1.概述
(1)为了保证其稳定性,Amazon的系统采用完全的分布式、去中心化的架构。
(2)Dynamo只支持简单的键值对方式的数据存储,不支持复杂的查询
(3)Dynamo中存储的是value的原始形式,即按位存储,并不解析数据的具体内容,这使得其几乎可以存储所有类型的数据。
(4)Dynamo在设计时被定位为一个基于分布式存储架构的,高可靠、高可用且具有良好容错性的系统。
2.Dynamo的存储节点
(1)存储节点呈无中心的环状分布。
(2)偏好列表(preference list):存储与某个特定键值相对应的数据的节点列表。
(3)协调者(Coordinator):执行一次读或写操作的节点,通常,它是 preference list上的第一个节点。
3.需要解决的主要问题及解决方案
问 题 | 采取的相关技术 |
数据均衡分布 | 改进的一致性哈希算法 |
数据备份 | 参数可调的弱quorum机制 |
数据冲突处理 | 向量时钟(Vector Clock) |
成员资格及错误检测 | 基于Gossip协议的成员资格和错误检测 |
临时故障处理 | Hinted handoff(数据回传机制) |
永久故障处理 | Merkle哈希树 |
4.改进后的一致性哈希 算法
(1)在存储数据时,计算出数据中键的哈希值将其存放到哈希环顺时针方向上第一个标 记大于或等于键的哈希值的设备节点上。
(2)保证哈希运算结果充分分散到整个环上
(3)保证在添加或删除设备节点时只会影响到其在哈希环中的前驱设备节点,而不会对其他设备节点产生影响。
(4)引入了虚拟节点的概念每个虚拟节点都隶属于某一个实际的物理节点,一个物理节点根据其性能的差异被分为一个或多个虚拟节点。各个虚拟节点的能力基本相当 ,并随 机分布在哈希环上。
5.数据备份:保存了其多个副本作为冗余备份。假设每个数据对象保存在系统中的副本数为N(通常为3)。
6.向量时钟技术
(1)node表示操作节点
(2)counter是其对应的计数器,初始值为0。
(3)节点每进行一次更新操作则计数器加 1。
(4)常用的解决冲突的方案有两种:通过客户端由用户来解决和系统自动选择时间戳最近的版本。
(5)向量时钟的数量是有限制的,当超过限制时将会根据时间戳删除最早的向量时钟。
二、弹性计算云EC2
1.Amazon机器映像(Amazon Machine Image,AMI):是包含了操作系统、服务器程序、应用程序等软件配置的模板,但这个是收费的。
2.概述
(1)当用户使用EC2服务去创建自己的应用程序时,首先需要构建或获取相应的AMI
(2)EC2中实例由AMI(机器映像)启动 ,可以像传统的主机一样提供服务。
(3)同一个AMI可以用于创建具有不同计算和存储能力的实例。
(4)Amazon提供了多种不同类型的实例,分别在计算、GPU、 内存、存 储、 网络、费用等方面进行了优化。
(5)Amazon还允许用户在应用程序的需求发生变更时,对实例的类型进行调整 ,从而实现按需付费。
(6)每个实例自身携带一个存储模块,用于临时存储用户数据。
3.弹性块存储(EBS)
(1)EBS存储卷的设计与物理硬盘相似
(2)同一个实例可以连接多个EBS,每个EBS同一时刻只能连接一个实例。
4.弹性负载平衡
(1)弹性负载平衡功能允许EC2实例自动分发应 用流量 ,从而保证工作负载不会超过现有能 力,并且在一定程度上支持容错。
5.EC2的安全及容错机制
(1)安全组是一组规则,用户利用这些规则来决定哪些网络流量会被实例接受 ,其他则全部拒绝。
(2)当用户的实例被创建时,如果没有指定安全组 , 则系统自动将该实例分配给一个默认组。
(3)默认组只接受组内成员的消息 ,拒绝其他消息。
(4)当一个组的规则改变后,改变的规则自动适用于组中所有的成员。
(5)弹性IP地址和用户账号绑定而不是和某个特定的实例绑定。
(6)当系统正在使用的实例出现故障时,用户只需要将弹性IP地址通过网络地址转换NAT转换为新实例所对应的私有IP地址。
三、简单存储服务S3(Simple Storage Services)
1.概述
(1)构架在Dynamo之上,用于提供 任意类型文件的临时或永久性存储。
(2)S3的总体设计目标是可靠、易用及低成本(类比GFS)。
(3)两个基本概念
2.桶
(1)桶是用于存储对象的容器,其作用类似于文件夹,但桶不可以被嵌套,即在桶中不能创建桶。
(2)目前,Amazon限制了每个用户创建桶的数量,但没有限制每个桶中对象的数量。
(3)桶的名称要求在整个S3的服务器中是全局唯一的,以避免在S3中数据共享时出现相互冲突的情况。
3.对象——S3的基本存储单元
(1)包含数据和元数据,元数据是数据内容的附加描述信息,通过名称-值(name- value)集合的形式来定义。
(2)每个对象在所在的桶中有唯一的键(key)。通过将桶名和键相结合的方式, 可以标识每个对象。键在对象创建后无法被更改,即重命名对于S3中的对象是无效的。
4.S3的安全措施
(1)S3向用户提供身份认证(Authentication)和访问控制列表(ACL)。
(2)访问控制列表是S3提供的可供用户自行定义的访问控制策略列表,提供五种访问权限。
(3)S3的ACL不具有继承性,即对桶有访问权限不代表对桶中的对象也具有相同的权限。
(4)S3中有三大类型的授权用户:所有者(Owner),个人授权用户(User),组授权用户(Gro up)。
四、非关系型数据库服务SimpleDB和DynamoDB
1.区别
(1)S3:提供任意类型文件的临时或永久性存储
(2)非关系型数据库SimpleDB和DynamoDB:存储结构化数据,并为这些数据提供查找、删除等基本的数据库功能。
2.非关系型数据库与传统关系数据库的比较
3.SimpleDB
(1)结构:包含了域、条目、属性、值等概念。
(2)域是用于存放具有一定关联关系的数据的容器 ,其中的数据以UTF-8编码的字符串形式存储。
(3)条目对应着一条记录 ,通过一系列属性来描述,即条目是属性的集合。
操作上具有极大的灵活性 ,用户可以随时创建、删除以及修改条目的内容。
4.SimpleDB和DynamoDB的比较
五、简单队列服务SQS(Simple Queue Service)
1.概述
(1)Amazon为解决云计算平台之间不同组件的通信开发的。
(2)组件既可以是消息的 发送者,也可以是消息的接收者。
(3)队列在传递消息时会尽可能 “先进先出”。
(4)消息的大小是有限制,但是消息的数量未做限制。
(5)队列中的消息是被冗余存储的,同一个消息会 存放在系统的多个服务器上。其目的是为了保证系统的高可用性。
(6)在SQS中,消息是否被接受是由用户自己确认的。
(7)当用户执行删除操作后,系统就会认为用户已经准确地接收到消息。
(8)如果用户未接收到数据或接收到数据并没有执行删除操作,SQS将在队 列中保留该消息。
2.三个组成部分
(1)系统组件,队列,消息。
3.消息的格式
(1)消息ID
(2)接收句柄:接收消息时就会从消息那里得到一个接收句柄,这个句柄可以用来对消息进行删除等操作。
(3)消息体MD5摘要:消息体字符串的MD5校验和。
(4)消息体
4.消息的可见性超时值及生命周期
(1)为了保证其他组件不会看见用户的消息,SQS会将该消息阻塞,也就相当于给消息加了一把锁。
(2)但是这把锁并不会一直锁住消息,因为系统保留消息的目的是给用户重传数据,为此SQS引入了一个可见性超时值。
(3)可见性超时值相当于一个计时器,在设定好的时间内,发给用户的消息对于其他所有的组件是不可见的。
(4)扩展就是将计时器按照新设定的值重新计时。
(5)终止就是将当前的计时过程终止,直接将消息由不可见变为可见。
六、习题
在Dynamo中,可能出现一个数据被多个节点同时更新的情况,因无法保证数据的更新顺序而导致数据冲突,这时采用了( )解决该问题。
A 向量时钟技术
B Paxos算法
C 先到先更新
D 轮询技术答案:A
第14题 1分
为了保证稳定性,Amazon的系统采用( )的架构。
A 完全的分布式、去中心化
B 完全的分布式、中心化
C 不完全的分布式、去中心化
D 不完全的分布式、中心化答案:A
第15题 1分
Dynamo采用( )解决数据均衡分布的问题。
A 改进后的一致性哈希算法
B Gossip协议
C 参数可调的弱quorum机制
D 向量时钟技术答案:A
第18题 1分
Dynamo采用( )解决数据冲突的问题。
A 一致性哈希算法
B Gossip协议
C 参数可调的弱quorum机制
D 向量时钟技术答案:D
第20题 1分
以下描述正确的是( )。
A Amazon限制了用户在S3中创建桶的数量和每个桶中对象的数量。
B Amazon限制了用户在S3中创建桶的数量,没有限制每个桶中对象的数量。
C Amazon没有限制用户在S3中创建桶的数量和每个桶中对象的数量。
D Amazon没有限制用户在S3中创建桶的数量,限制了每个桶中对象的数量。答案:B
第28题 1分
Dynamo中存储的是数据值的原始形式,即按[填空1]存储,并不解析数据的具体内容。答案:位
第30题 1分
EC2中的实例由[填空1]启动,可以像传统的主机一样提供服务。答案:AMI(Amazon Machine Image)
第31题 1分
SimpleDB和DynamoDB中,限制了每张表的大小,适合小规模负载工作的是[填空1]。答案:SimpleDB
第2题 1分
关于SimpleDB和DynamoDB,以下描述正确的是()。A. SimpleDB和DynamoDB都限制了每张表的大小。
B. SimpleDB和DynamoDB都未限制每张表的大小。
C. SimpleDB限制了每张表的大小,DynamoDB不限制每张表的大小。
D. DynamoDB限制了每张表的大小,SimpleDB不限制每张表的大小。答案:C
第6题 1分
Amazon为解决云计算平台之间不同组件的通信专门设计开发的服务是()。A. EC2
B. S3
C. SQS
D. CDN答案:C
第16题 1分
用户未接收到数据或者收到数据没有执行删除操作时,SQS将在队列中保留该消息,为了保证其他组件不会看到用户的消息,采用的方法是[填空1]。答案:消息可见性超时
3. S3的对象可以执行重命名操作。()
A. 正确
B. 错误答案:B. 错误
第5题
5.关于亚马逊的EC2中公有IP和弹性IP,以下描述不正确的是()。
A. 公有IP是静态IP;弹性IP是动态IP
B. 公有IP是动态IP;弹性IP是静态IP
C. 弹性IP地址和用户账号绑定
D. 公有IP和某个特定的实例绑定答案:A
静态的意思是不会变了,而弹性IP分配完就不会变了。
第15题 4分
SQS的消息由四部分组成,分别是[填空1],[填空2],[填空3]和[填空4]。答案:消息体、消息属性、消息ID、消息句柄
第16题 1分
AWS中队列的消息是被冗余存储的,同一个消息会存放在系统的多个服务器上,这样虽然可以保证系统的高可用性但会给用户查询队列中的消息带来麻烦。SQS采用的是基于加权随机分布的[填空1]解决这个问题。答案:一致性哈希算法