AWS云服务的产品有不少(如图一所示),每一种产品都有特殊用途,通常状况下咱们须要将不一样类型的产品组合在一块儿(如图二所示)才可以构建一个可扩展,高性能,可容错的系统,所以这一章的内容将介绍AWS常常被使用的服务。数据库
【图一】 编程
【图二】缓存
在分析每一种服务以前,须要说明一点的是AWS的服务分布在全球多个位置。这些位置由地区和可用区域构成。每一个区域 都是一个单独的地理区域(Region)。每一个区域均有多个相互隔离的位置,称为可用区(Available Zone)。有的服务在某些区域是不提供的,并且区域与区域之间是彻底隔离的,所以区域之间传输数据是须要收费的。AWS目前所提供的区域以下图所示:安全
好比美国东部有2个区,它们分别是:US East(N. Virginia)和US East(Ohio)。每个区都有对应的区域代码,好比US East(N. Virginia)的区域代码是:us-east-1,可用区由区域代码后跟一个字母标识符表示;例如,us-east-1a,其含义是指区域US East(N. Virginia)中的可用区是a。当你选中某个区并建立云服务的时候,须要为该服务选择一个可用区。服务器
EC2(Elastic Compute Cloud)是AWS很是基础的一款服务,其主要功能是提供计算服务,好比你能够经过亚马逊控制台本身建立一个EC2资源,你能够把这个计算资源当作一台虚拟机,它可以计算,可以读写存储,可以通讯。你能够同时建立多个EC2资源,这些EC2可能运行在一台物理机器上也可能分布在多台物理机器上。网络
经过以上描述,你能够把计算资源想象成有多台物理设备放在一块儿造成了一个总体,这个总体拥有了强大的运算能力,而这些运算能力能够经过成千上万个EC2资源进行分解,并独立地提供给想要使用的企业或我的。当企业或我的不须要这些计算资源的时候就能够将其释放给其它企业或我的使用。分布式
EC2是一台虚拟机,它可以运行Python写的程序,可以运行数据库,可以运行网页应用好比digolds.cn就是运行在AWS的EC2上的。在现实的项目中,EC2通常是用来运行程序的,所以你可使用C++、C、JavaScript、Java、Python、Ruby等等语言来编写程序,而后在EC2上准备程序依赖的运行环境,此时EC2就能够运行这个程序。性能
直到今天,几乎全部的线上服务都须要存储数据,这些数据包括用户信息、图片、歌曲、视频等等。为了可以有效地存储和读写数据,那么须要编写一些程序专门用于解决存储问题,幸运的是AWS提供了S3(对象存储)、EBS(块存储)和EFS(文件存储)存储服务,专门用来存储数据的。每种服务都有不一样的用途、计费方式以及存储方案。接下来咱们将了解一下每一种存储服务的特色和用途。翻译
Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,这个服务的特性是具备可扩展性、数据可用性、安全性和高性能。经过S3,咱们能够把文件以对象的形式存进去并获得一个惟一标识这个文件的Key,经过这个Key即可以从S3中得到该文件的内容。这个对象除了文件内容自己,还包括描述该文件的元数据(好比该文件的大小)。好比咱们向S3中存储了大小为23KB的文件,那么S3中将有一个对象包含了23K以及该文件内容。设计
S3常常被用来放一些静态资源文件好比CSS、Javascript、图片,视频等等,好比你们常常看到B站上的视频,实际上是能够放在S3上存储的,又因为S3易于扩展,因此能够不停地往S3中存储静态资源。互联网上的用户能够直接访问到S3上存储的数据,这是它的一大特色。
Amazon Elastic Block Store(Amazon EBS)是块存储服务,这种块存储服务通常会挂接到EC2实例上使用。它具备持久化和快速读写的存储能力,其存储的单元是基于块的,如上图中间的(Block Storage)。它没法直接被互联网访问,其经常被用于存储常常要用到的文件,好比系统的驱动程序。
Amazon Elastic File System(Amazon EFS)是文件存储服务,这种存储服务能够同时被多个EC2实例使用,并且随着存储文件的数量和大小变化而变化。也就是说当数据量变多(变少)的时候,它会自动增长(缩减)存储空间,以便容纳更多(更少)的数据。EFS很是适合内容管理系统(CMS),好比WordPress就是一种流行的CMS,这些内容能够存储在EBS上,而后由多个EC2实例读取,当管理员只须要更新或添加新的内容到EFS上,那么全部的EC2实例将会获得内容彻底一致的信息。这种一致性的能力在EBS上是作不到的,由于每个EBS只能挂接到惟一的一个EC2实例上,而EFS可以同时挂接到多个不一样的EC2实例上。
Amazon CloudFront 是一个基于云的内容交付网络(CDN),提供并与亚马逊 Amazon Web Services 套件集成。由亚马逊网络服务系统提供基础服务的一个内容分发网络。其在欧洲、亚洲、北美、澳洲、南美、美国多个主要大城市多地拥有本身的数据中心,共 107 个网络边际服务点提供服务。
Amazon CloudFront 内容交付网络容许经过在主要商业中心运营的区域中心全球分发数字内容。它减小了经过其分布式内容传递通道访问静态和流数据的延迟,这确保了数据从最近的 CDN 服务器传递给收件人。Amazon CloudFront 是一种即用即付模式,能够轻松地与全部 Amazon Web Services 集成。
Amazon CloudFront 专为须要向亚马逊许多不一样区域用户快速传送内容的 Web 发布公司和应用程序而设计。Amazon CloudFront 经过在其不一样的 CDN 位置缓存每一个对象的实例来运行,从而减小了传递内容所需的时间。
Amazon CloudFront 经过支持的应用程序编程接口访问 Amazon S3 中的数据,并将其置于区域数据存储区中。其余亚马逊网络服务,包括亚马逊 EC2,也能够经过 EC2 处理流数据并经过 CloudFront 将其传递给最终用户。与全部其余亚马逊网络服务产品同样,CloudFront 具备可扩展性,灵活性,可做为即用即付服务提供。
"Route 53",中文能够翻译为53号公路,跟美国历史上有名的"66号公路(以下图)"(Route 66)遥相呼应。利用Route 53服务,AWS的用户就可让终端用户访问众多的互联网服务了。因此"Route 53"就像一条虚拟的公路同样,把终端用户带领到目的地。Route 53的服务器分布在全世界各地,也是亚马逊惟一保证100%可用性的服务。DNS协议是基于TCP/UDP协议的,DNS服务监听的端口是53。因此名字里带53,暗含了DNS服务监听的端口。
就像66号公路横穿美国同样,Route 53的做用在于它可以快速地将终端用户带到其想要访问的互联网服务,缩短了终端用户与互联网服务的延迟。
VPC是AWS提供的一种虚拟网络服务,其它AWS资源均可以放在这个虚拟网络里构成一个逻辑单元,这个逻辑单元做为一个完整的服务提供给外部世界使用。当你使用VPC服务的时候,就须要使用其提供的gateways, route tables, network access control lists (ACL), subnets and security groups等功能,经过这些功能来配置虚拟网络。
这里有几点须要注意:
**为何使用VPC?**当你基于公有云上运行一些线上服务的时候,世界上任何一我的都可以访问这些服务,从而致使这些服务易于受到攻击,这是很是危险的。所以为了让这些资源避免外部的攻击,你须要VPC来切断这些资源与外部的链接,并经过VPC来限制外部链接的类型,IP地址以及哪些人可以访问。
这样一来,你就能经过VPC来阻止不速之客的访问,也能够避免了DDOS攻击。因为支撑线上服务的大部分云服务是不须要与外部链接,所以你能够把这部分资源安全地放在VPC里与外部隔绝,而只须要把那些须要与外部互联的资源暴露出去。
虽然你能够决定VPC中的哪些资源是暴露给外部的,哪些资源是与外部隔离的,可是若是你想让被隔离的资源可以访问外部(好比你想升级程序,下载补丁之类)就须要其它方法(NAT Gateways)。
NAT Gateways被用来解决“VPC私有资源如何与外部链接,而外部没法与该私有资源互联的单向链接问题”。NAT Gateways是被建立到VPC的一个子网中,这个子网是公开的,可是只能从内部向外部访问,所以一旦你容许私有资源访问NAT Gateways,此时该资源就可以访问外网,因为NAT Gateways不支持外网向内外访问,所以外部网络是没法访问该私有资源的。
使用NAT Gateways须要知道的细节: