赞
踩
为了保证其稳定性,Amazon的系统采用完全的分布式、去中心化的架构 。
图:面向服务的Amazon平台基本架构
额外补充:区块链的去中心化
1.中心化问题有两个,一个是关键节点出问题容易导致系统瘫痪,二是难以避免管理中心节点的人修改数据。而区块链是采用多账本计算对比,能避免以上两个问题。因此,区块链技术较多出现于金融领域。
2.采取的数据存储方式区别于关系型数据库,也不需要涉及过多查询搜索语句等
Dynamo在设计时被定位为一个基于分布式存储架构的,高可靠、高可用且具有良好容错性的系统。下图列举了Dynamo设计时面临的主要问题及所采取的解决方案。
Dynamo中的存储节点呈无中心的环状分布。 通常,coordinator 是 preference list 上的第一个节点
Dynamo采用了分布式的数据存储架构,均衡的数据分布可以保证负载平衡和系统良好的扩展性。
因此,如何在各个节点上数据的均衡性是影响Dynamo性能的关键问题。
Dynamo中使用改进后的一致性哈希算法,并在此基础上进行数据备份,以提高系统的可用性。
一致性哈希算法
改进的一致性哈希算法
Dynamo选择通过牺牲一致性来保证系统的可靠性和可用性,没有采用强一致性模型而采用了最终一致性模型。由于Dynamo中可能出现同一个数据被多个节点同时更新的情况,且无法保证数据副本的更新顺序,这有可能会导致数据冲突。
如何解决数据冲突问题呢?
方法一:Dynamo中采用了向量时钟技术
方法二:成员资格及错误检测
方法三:容错机制
**
**
主要包括了Amazon机器映象、实例、存储模块等组成部分,并能与S3等其他Amazon云计算服务结合使用。
**
**
各项技术通过互相配合来实现EC2的可扩展性和可靠性
安全组是一组规则,用户利用这些规则来决定哪些网络流量会被实例接受,其他则全部拒绝。
SSH是目前对网络上传输的数据进行加密的一种很可靠的协议,当用户创建一个密钥对时,密钥对的名称(Key Pair Name)和公钥(Public Key)会被存储在EC2中
**
**
**
**
**
**
操 作 目 标 | Get | Put | List | Delete | Head |
---|---|---|---|---|---|
桶 | 获取桶中对象 | 创建或更新桶 | 列出桶中所有键 | 删除桶 | — |
对象 | 获取对象数据和元数据 | 创建或更新对象 | — | 删除对象 | 获取对象元数据 |
表3-3 S3的主要操作
在数据被充分传播到所有的存放节点之前,服务器返回给用户的仍是原数据,此时用户操作可能会出现后面几种情况:
** ** | 用户操作 | 结果 |
---|---|---|
1 | 写入一个新的对象并立即读取它 | 服务器可能返回“键不存在” |
2 | 写入一个新的对象并立即列出桶中已有的对象 | 该对象可能不会出现在列表中 |
3 | 用新数据替换现有的对象并立即读取它 | 服务器可能返回原有的数据 |
4 | 删除现有的对象并立即读取它 | 服务器可能返回被删除的数据 |
5 | 删除现有的对象并立即列出桶中的所有对象 | 服务器可能列出被删除的对象 |
传统的关系数据库 | 非关系型数据库 | |
---|---|---|
数据模型 | 对数据有严格的约束 | key和value可以使用任意的数据类型 |
数据处理 | 满足CAP原则的C和A,在P方面很弱 | 满足CAP原则的A和P,而在C方面比较弱 |
接口层 | 以SQL语言对数据进行访问的,提供了强大的查询功能,并便于在各种关系数据库间移植 | 通过API操作数据,支持简单的查询功能,且由于不同数据库之间API的不同而造成移植性较差 |
SimpleDB基本结构图如下,包含了域、条目、属性、值等概念。
DynamoDB的特点:
SimpleDB和DynamoDB都是Amazon提供的非关系型数据库服务。
Amazon RDS将MySQL数据库移植到集群中,在一定的范围内解决了关系数据库的可扩展性问题。
MySQL集群方式采用了Share-Nothing架构。
每台数据库服务器都是完全独立的计算机系统,通过网络相连,不共享任何资源。
这是一个具有较高可扩展性的架构,当数据库处理能力不足时,可以通过增加服务器数量来提高处理能力,同时多个服务器也增加了数据库并发访问的能力。
表单主要根据业务的需要进行针对性的划分,对数据库的管理人员提出了非常高的要求,如果划分得不科学,则查询经常会跨表单和服务器,性能就会严重下降。
Amazon为解决云计算平台之间不同组件的通信专门设计开发的
3.可见性
基于Amazon云计算平台实现的内容分发网络。借助Amazon部署在世界各地的边缘节点,用户可以快速、高效地对由CloudFront提供服务的网站进行访问。
CloudFront正是通过Amazon设在全球的边缘节点来实现CDN的,但是较普通的CDN而言,它的优势无疑是巨大的。
Elastic Beanstalk虚拟机是一种运行Apache Web Server、Tomcat 和 the Enterprise Edition of the Java platform的AMI虚拟机,具有以下特点:
1.简单通知服务(SNS)是一种Web服务,提供方便的信息发布平台,具有高的可扩展性和成本优势。
2.Amazon简单邮件服务(Simple E-mail Service,SES)是一个简单的高扩展性和具有成本优势的电子邮件发送服务。
Amazon的弹性MapReduce是通过EC2和S3来实现的,其基本架构如图所示。
DevPay是Amazon推出的主要针对开发者的软件销售及账户管理平台
在DevPay服务中,计费包括两部分: 开发者向用户收取的费用和DevPay向开发者收取的费用
顾客在使用了FPS服务的网站上购买产品或服务的基本流程如图:
简单支付服务(Simple Pay)是一种允许顾客使用其Amazon账户进行支付的服务,目前简单支付服务有五种常用的支付按钮,按钮类型及其功能见表。
对于支付服务有着较高要求的用户可以选择FPS,但只是简单地完成一些日常支付服务的则推荐使用简单支付服务。
Amazon执行网络(Fulfillment Web Service,FWS)是一个非常有用的代理订单执行网络服务,简单来说它的作用就是产品存储及销售业务的托管,也可直接理解为Amazon替用户销售产品。
下图展示了采用Amazon S3服务后的SmugMug基本架构。
Animoto网站根据用户上传的图片、视频片段和音乐,自动编辑生成专业水准的视频,并且与用户的好友分享
如图展示了Animoto的基本架构
Alexa公司是一家专注于世界网站排名的公司
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的应用实例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。