目录
五、关系数据库服务RDS
(一)RDS的基本原理
Amazon RDS将MySQL数据库移植到集群中,在一定的范围内解决了关系数据库的可扩展性问题。
MySQL集群方式采用了Share-Nothing架构。每台数据库服务器都是完全独立的计算机系统,通过网络相连,不共享任何资源。这是一个具有较高可扩展性的架构,当数据库处理能力不足时,可以通过增加服务器数量来提高处理能力,同时多个服务器也增加了数据库并发访问的能力。
表单主要根据业务的需要进行针对性的划分,对数据库的管理人员提出了非常高的要求,如果划分得不科学,则查询经常会跨表单和服务器,性能就会严重下降。
集群MySQL通过主从备份和读副本技术提高可靠性和数据处理能力。
(二)RDS的使用
从用户和开发者的角度来看,RDS和一个远程MySQL关系数据库没什么两样。Amazon将RDS中的MySQL服务器实例称做DB Instance,通过基于Web的API进行创建和管理,其余的操作可以通过标准的MySQL通信协议完成。创建DB Instance时还需要定义可用的存储,存储范围为5GB到1024GB,RDS数据库中表最大可以达到1TB。
可以通过两种工具对RDS进行操作:命令行工具和兼容的MySQL客户端程序。命令行工具是Amazon提供的Javamazon网站下载。MySQL客户端是可以与MySQL服务器进行通信的应用程序。
六、简单队列服务SQS
(一)SQS的基本模型
SQS三个组成部分:系统组件(Component),队列(Queue),消息(Message)。
(1)系统组件Component
系统组件是SQS的服务对象,而SQS则是组件之间沟通的桥梁。既可以是消息的发送者,也可以是消息的接收者。
(2)队列Queue
队列是存放消息的容器,类似于S3中的桶。队列的数目是任意的,创建队列时用户必须给其指定一个在SQS账户内唯一的名称。队列在传递消息时会尽可能 "先进先出"。
(3)消息Message
消息是发送者创建的具有一定格式的文本数据,接收对象可以是一个或多个组件。消息的大小是有限制的,但是消息的数量并未做限制。在SQS中,消息和队列是最重要的两个概念。不过SQS允许用户在消息中添加有关的序列数据,对于数据发送顺序要求比较高的用户可以在发送消息之前向其中加入相关信息。
(二)SQS的消息
1、消息的格式
(1)消息ID(Message ID):由系统返回给用户,用来标识队列中的不同消息。
(2)接收句柄(Receipt Handle):当从队列中接收消息时就会从消息那里得到一个接收句柄,这个句柄可以用来对消息进行删除等操作。
(3)消息体(Body):消息的正文部分,需要注意的是消息存放的是文本数据并且不能是URL编码方式。
(4)消息体MD5摘要(MD5 of Body):消息体字符串的MD5校验和。
2、消息取样
队列中的消息是被冗余存储的,同一个消息会存放在系统的多个服务器上。其目的是为了保证系统的高可用性,但这会给用户查询队列中的消息带来麻烦。为了解决该问题,SQS采用了基于加权随机分布(Weighted Random Distribution)的消息取样。当用户发出查询队列中消息的命令后,系统在所有的服务器上使用基于加权随机分布算法随机地选出部分服务器,然后返回这些服务器上保存的所查询的队列消息副本。
当消息数量较少时,SQS进行消息取样时可能会出现返回结果不准确的现象。但由于消息采样具有随机性,只要用户一直查询下去,总会查询到所有的消息。
3、消息的可见性超时值及生命周期
可见性表明该消息可以被所有的组件查看,可见性超时值相当于一个计时器,在设定好的时间内,发给用户的消息对于其他所有的组件是不可见的。扩展操作就是将计时器按照新设定的值重新计时,终止就是将当前的计时过程终止,直接将消息由不可见变为可见。
七、内容推送服务CloudFront
(一)CDN
传统的网络服务模式中,用户和内容提供商位于服务的两端,网络服务提供商将两者联系起来。在这种情况下,网络服务提供商仅仅起"桥梁"作用。
用户在发出服务请求后,需要经过DNS服务器进行域名解析后得到所访问网站的真实IP,然后利用该IP访问网站。在这种模式中,世界各地的访问者都必须直接和网站服务器连接才可以访问相关内容,存在明显的缺陷。
- 首先,网站服务器可以容纳的访问量是有限的。
- 其次,这种模式中没有考虑访问者的地域问题。
- 最后,使用不同网络服务提供商服务的用户之间的互访速度也会受到限制。
解决办法:CDN技术通过将网站内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取。
DNS在对域名进行解析时不再向用户返回网站服务器的IP,而是返回了由智能CDN负载均衡系统选定的某个边缘节点的IP。
这种访问模式的好处主要有以下几点:
- (1)将网站的服务流量以比较均匀的方式分散到边缘节点中,减轻了网站源服务器的负担。
- (2)由于边缘节点与访问者的地理位置较近,访问速度快。
- (3)智能DNS负载均衡系统和各个边缘节点之间始终保持着通信联系,可以确保分配给用户的边缘节点始终可用且在允许的流量范围之内。
CDN的实现需要多种网络技术的支持,主要包括以下几种:
- (1)负载均衡技术:将网站的服务流量以比较均匀的方式分散到边缘节点中,减轻了网站源服务器的负担。
- (2)分布式存储:由于边缘节点与访问者的地理位置较近,访问速度快。
- (3)缓存技术:智能DNS负载均衡系统和各个边缘节点之间始终保持着通信联系,可以确保分配给用户的边缘节点始终可用且在允许的流量范围之内。
(二)CloudFront
CloudFront正是通过Amazon设在全球的边缘节点来实现CDN的,但是较普通的CDN而言,它的优势无疑是巨大的。首先,CloudFront的收费方式和Amazon的其他云计算收费方式一样是按用户实际使用的服务来收费,这尤其适合那些资金缺乏的中小企业。其次,CloudFront的使用非常简单,只要配合S3再加上几个简单的设置就可以完成CDN的部署。
- 对象(Object):利用CloudFront进行分发的任意一个文件
- 源服务器(Origin Server):存储需要分发文件的位置
- 分发(Distribution):作用是在CloudFront服务和源服务器之间建立一条通道
- 别名指向(CNAME):系统分配给用户域名的一个别名
- 边缘节点位置(Edge Location):实际的边缘节点服务器位置
- 有效期(Expiration):文件副本在边缘节点上的存放时间
CloudFront在此处就相当于CDN中的智能DNS负载均衡系统,用户实际是和CloudFront进行服务交互而不是直接和S3中的原始文件进行交互。
CloudFront与其他一些AWS不同的是,它只接受安全的HTTPS方式而不接受HTTP方式进行访问,这又进一步提高了安全性。