AWS云平台的服务概览 - 小西红柿

时间:2024-02-23 07:55:12

AWS云平台的服务概览

http://blog.csdn.net/yzhou86/article/details/42963533

当我们向别人解释AWS云平台所包含的那些服务的时候,许多人对AWS服务种类的丰富程度都表示惊讶。对于部分听说过AWS的人来说,他们知道AWS云平台的功能主要限于EC2(弹性计算云)、S3(简单存储服务)等几种我们在2006年就推出来的服务。实际上经过7年多的创新发展,AWS目前已经包含了三十多种不同的云服务。这里就把AWS云平台所包含的主要服务功能进行一个概要性的介绍。

先让我们看一下AWS云平台的服务分类。AWS云平台的服务可以分为三大类:

第一类是基础服务(Foundation Services),主要包括计算、存储、网络和数据库等云计算中最为基础的服务。它们不仅是用户使用最为频繁的服务,同时也是AWS其他服务构建的基础。

第二类是应用服务。这类服务主要是帮助开发人员简化在AWS云平台上编写应用程序。

第三类是部署和管理服务。这类服务是帮助用户在AWS云平台上部署和管理应用程序。

除了我们经常说的云计算特性外,AWS云平台服务的一个重要特点就是所有这些服务有基于Web服务的API编程接口和命令行环境,从而方便用户通过不同的方式来使用这些服务。

 

AWS云平台的服务概览如下图所示:

AWS在全球的基础设施上构建了AWS云平台的服务。用户可以根据需要使用其中一种或多种服务。为帮助初次接触AWS的童鞋建立一个AWS云服务的整体了解,接下来我就根据服务类别把这些主要的服务依次做个简单的介绍。在这篇文章中我们先介绍AWS云平台的基础服务中15种主要服务。

1.     计算服务:Amazon EC2

Amazon EC2是AWS提供的云主机服务,它为用户提供了一个弹性的计算环境。简单的讲,一个EC2实例就是一台虚拟服务器。AWS目前提供将近30种不同的EC2计算实例类型供用户选择。用户可以根据实际应用的计算需求来选择不同EC2实例的种类和数量,并可以在数分钟内构建起自己的计算环境。

 

2.     计算服务:Auto Scaling

Auto Scaling是一个帮助EC2计算服务进行自动伸缩的服务。通过与CloudWatch、ELB服务的配合使用,Auto Scaling能够让用户的EC2计算环境可以根据负载来自动进行横向扩展或收缩,这样不仅可以保障应用在不同的负载下有一致的用户体验,还可以在低负载下节约计算资源。

 

3.     计算服务:AmazonWorkspaces

Workspaces就是一个由AWS提供基于云的桌面虚拟化服务,或者称为桌面云服务。Workspaces是传统VDI方案的一种基于云计算的实现方式。用户可以用包括PC、iPad、Kindle和Android平板等各种终端设备通过网络访问他们的Workspaces桌面。

 

4.     存储服务:Amazon S3

S3(Simple Storage Service)为开发人员提供了一个高度扩展(Scalability)、高持久性(Durability)和高可用(Availability)的分布式海量数据存储服务。它是一个完全针对互联网的数据对象存储服务,应用程序可以通过一个简单的Web服务接口就可以通过互联网在任何时候访问S3上的数据,而且S3提供高达11个9(99.999999999%)的数据持久性。

 

5.     存储服务:Amazon EBS

EBS(Elastic Block Store)是AWS为EC2实例提供的基于网络的块级存储服务。EBS卷可以独立于EC2实例的生命周期存在,在功能和使用上有点类似外置的硬盘存储或传统基于IP的SAN存储,因此当用户需要基于块级的持久性存储时,可以选择EBS卷,而且可以根据不同的应用场景选择不同的卷大小和IOPS(100-4000 IOPS/卷)。非持久性数据存储的需求用户可以直接使用实例存储(Instance Store)。

 

6.     存储服务:AWS Storage Gateway

Storage Gateway是一个把用户企业内存储和基于AWS云存储进行安全连接,并把用户在企业内部存储的数据备份到AWS的S3或Glacier的服务。Storage Gateway会以软件设备即基于虚拟机(VMWare ESXi或Microsoft Hyper-V服务器)的方式为用户提供一个软件安装在用户自己的环境中。这个软件设备一方面向用户的应用提供基于i-SCSI的存储(磁盘卷或虚拟带库)接口,另一方面把数据异步备份到S3或Glacier上面。

 

7.     存储服务:Amazon Glacier

Glacier是AWS提供的一种低成本的、针对数据归档或备份的存储服务。Glacier与S3服务一样提供了一个安全的和高达11个9的持久性数据存储,与S3随时访问数据不同的是Glacier的数据读取操作需要排队等待3-5个小时,不过这个数据读取时间和方便性与传统磁带备份相比还是有很大的提升。适合Glacier存储的应用场景特点是数据需要比较长时间保存但是偶尔需要读取。

 

8.     数据库服务:Amazon RDS

RDS(Relational Database Service)是用来帮助客户在AWS云平台上快速部署、扩展和运维关系型数据库的一个服务。RDS可以认为是一个DaaS(Database as a Service),它为你提供了一个由AWS高效管理的关系型数据库服务,这样你可以把你的精力放在应用程序和业务逻辑上而不用担心底层的数据库维护工作,包括补丁升级、数据备份等。RDS目前支持的数据库包括MySQL、Oracle、SQL Server和PostgreSQL。

 

9.     数据库服务:Amazon DynamoDB

DynamoDB是AWS提供的灵活可扩展的NoSQL数据库服务。DynamoDB采用键值(Key Value)方式的存储模式,并通过多份数据拷贝方式提供较高的可用性和持久性。作为一种NoSQL服务,用户不用担心数据量也不用管理数据库分区分表的问题。通过高速的网络和基于SSD的存储,DynamoDB能够保证高吞吐量和小于10毫秒的访问延时。

 

10.  数据库服务:Amazon ElastiCache

ElastiCache是AWS提供的一个基于内存的分布式缓存服务,一般可以通过这个服务来降低数据库的访问压力。目前ElastiCache支持两种开源的缓存引擎:Memcached和Redis。ElastiCache能够自动侦测和替换失效节点,从而降低用户构建和管理分布式缓存服务的负担。

 

11.  数据库服务:Amazon Redshift

Redshift是一个高效的、基于分布式群集的PB级数据仓库服务。这个数据仓库服务是由AWS管理并维护的,用户只需要通过管理控制台就可以快速创建和使用。Redshift可以与基于SQL的客户端工具和基于ODBC或JDBC的商务智能工具协同工作。用户根据实际使用量来付费,一般用户使用Redshift的成本约为其采用传统数据仓库产品服务的十分之一。

 

12.  网络服务:Amazon VPC

VPC(Virtual Private Cloud)让用户可以在AWS云平台上构建出一个隔离的、自己能够管理配置和策略的虚拟网络环境,从而进一步提升用户在AWS环境中的资源的安全性。用户可以在VPC环境中管理自己的子网结构,IP地址范围和分配方式,网络的路由策略等。由于用户可以掌控并隔离VPC中的资源,因此对用户而言这就像是一个自己私有的云计算环境。

 

13.  网络服务:Elastic Load Balancing

Elastic Load Balancing(简称ELB)是AWS为EC2实例提供的可以跨可用区的负载均衡服务。它能够自动把HTTP/S或TCP请求分发给后面的EC2实例。ELB本身也是一项可扩展和高可用的服务,而且它能自动侦测后面EC2实例的健康状况,如果发现不健康的实例就会自动把访问流量导向其他实例。如果在VPC环境中,ELB还可以在不同应用层之间进行负载均衡的分发工作。

 

14.  网络服务:Amazon Route53

Route53是AWS提供的一项高可用和高可扩展性的域名系统服务。它可以帮助终端用户的基于域名的互联网访问请求转化成基于IP地址的请求。Route53可以高效的把用户对AWS上服务的请求,如对EC2实例、ELB、CloudFront分发或S3存储桶的请求提供域名解析服务,当然作为一个域名服务它也可以为非AWS上服务请求提供解析服务。Route53还提供了基于延时和基于权重的访问路由功能。这里留个有意思的小问题,大家觉得为什么这个服务名中包含53而不是别的数字呢?吐舌头

 

15.  网络服务:AWS Direct Connect

Direct Connect(简称DX)可以帮助用户在自己的数据中心或办公场所与AWS云平台之间建立起一个专用的网络通道。根据区域的不同,AWS提供了不同的DX连接点。用户可以通过这些DX连接点与AWS云平台建立起一个更为稳定可靠的高带宽网络连接。无论是VPC里的服务还是像S3这样通过公开的互联网服务,用户都可以通过DX连接来得到相对一致的网络服务体验。

 

 

应用服务主要是帮助开发人员简化在AWS云平台上编写应用程序,因此这些服务的主要使用方式是通过这些服务提供的基于Web服务的API来使用。当然,AWS管理控制台也提供了一些管理和使用这些服务的界面。下面我们逐一描述一下AWS提供的主要应用服务。

 

1.      搜索服务:Amazon CloudSearch

Amazon CloudSearch是AWS管理的搜索服务,它可以帮助用户为自己的网站或应用快速构建出一个搜索解决方案。CloudSearch可以让用户搜索大量的数据,包括网页、文档、论坛帖等。通过CloudSearch,用户不必成为一个搜索专家也不用担心硬件资源的配置和管理等问题就可以通过AWS的管理控制台快速构建搜索服务。CloudSearch会根据用户数据量的大小和搜索请求量的多少自动调整提供搜索服务的实例大小和数量。CloudSearch管理构建和部署索引所需要的服务器资源,用户只需要向搜索域上载自己的数据然后就可以开始递交搜索服务的请求了。

 

2.      消息队列服务:Amazon SQS(Simple Queue Service)

消息队列服务是一种经常用来在架构层面进行松耦合设计的一种服务,在传统的企业应用环境中开发人员经常用到像IBM WebSphere MQ,MSMQ等消息队列产品。Amazon SQS提供了一种管理的消息队列服务,也就是说用户不用自己来管理消息队列底层的硬件资源以及软件的安装和配置,而直接可以通过SQS的API来使用服务。Amazon SQS有几个重要特点,首先SQS是个高可用的服务,当用户把消息放入队列后可以被可靠的(多份拷贝)保存一段时间直到消息被处理;其次SQS具有非常强的扩展能力,对用户需要处理的消息在数量上没有限制;最后SQS被设计为“至少一次”的消息发送处理机制,因此需要用户在应用层面来保障消息“只有一次”的处理以及消息的处理顺序如FIFO。

 

 

3.      内容分发服务:Amazon CloudFront

Amazon CloudFront是一个基于云计算服务模式的内容分发网络(CDN)服务,AWS通过把内容暂存在全球的几十个边缘站点来就近向最终用户提供内容分发服务。CloudFront帮助用户把他们的内容进行全球范围内的快速分发,从而降低数据传输延时并提高数据传输性能。CloudFront支持所有可以通过HTTP和HTTPS访问的内容,包括动态HTML、PHP网页,网站中的静态内容如图片、音视频、下载的文件等。另外,CloudFront还支持基于RTMP的流式内容和基于HTTP的流媒体(服务端支持Adobe Media Server和Windows Media Services)。CloudFront支持多种HTTP方法,包括GET、HEAD、POST、PUT、DELETE、OPTIONS等,从而可以通过一个域名来管理整个网站内容的分发。由于边缘站点与AWS区域之间网络路由的优化和一些TCP/IP传输的优化,因此通过CloudFront也可以提升上传内容的性能。

 

 

4.      通知服务:Amazon SNS(Simple Notification Service)

Amazon SNS是一种消息通知/推送服务,用户的应用可以通过SNS快速、低成本的实现向各种移动设备如iPhone、iPad、安卓、Kindle和其他互联网连接设备推送消息。用户还可以通过主题/订阅的方式,用短信(SMS)、邮件、HTTP/S请求、SQS队列等方式来进行消息分发。SNS可以帮助用户实现一次发送请求就可以把消息发布给大量的接收设备和应用。SNS是一种高性能、高可用的消息推送服务,为了避免消息的丢失,所有通过SNS发布的消息都会在同时在多个可用区内保存多个拷贝。SNS也是一种简单易用和低成本的服务,比如发送100万条移动推送消息的费用是0.5美元。

 

 

5.      Hadoop服务:Elastic MapReduce

Elastic MapReduce(EMR)是一种管理的Hadoop服务,可以认为是Hadoopas a Service。在大数据应用中,构建和维护Hadoop群集服务对许多用户来说都是一种繁琐的负担。通过EMR,用户可以通过按需使用的方式随时通过AWS管理控制台或命令行几分钟就构建一个Hadoop群集来做大数据分析,然后当任务结束后就可以关闭群集从而停止付费。对那些需要经常进行不定期进行各种大数据分析任务的用户而言,无论是处理日志分析、Web索引还是机器学习等各种任务,EMR可以让他们把主要精力放在大数据业务设计和分析模型的构建上,而把底层Hadoop群集相关的基础设施构建和维护事情交给EMR处理。另外,EMR不但可以结合Hive、Pig、Mahout、HBase等工具做数据分析,还可以集成S3、Redshift、DynamoDB等海量数据存储服务。

 

 

6.      实时数据分析服务:Amazon Kinesis

Amazon Kinesis是一个大规模实时数据流分析服务,它每小时可以从成千上万的数据源中实时收集和处理几百个TB数据。这些实时的数据源包括像网站的点击流、社交网站信息、运营日志、设备测量信息等各种动态产生数据的场景。Kinesis为用户提供了一个进行实时数据采集(Producer)、存储和处理(Consumer)的基础架构和编程框架。Kinesis的API简单易用,比如应用通过HTTP PUT方法就可以加载数据。通过Kinesis,用户不用关心底层数据的分配和存储架构,用户配置完Kinesis服务后Kinesis会自动帮助用户处理数据流的负载均衡、扩展性和数据的高可用存储等需求。AWS提供Amazon Kinesis Client Library来简化Kinesis服务的使用。数据在Kinesis只会保存24小时,如果需要进一步处理或保存数据,Kinesis可以方便的和S3、DynamoDB、Redshift做集成。

 

 

7.      数据管道服务:AWS Data Pipeline

AWS Data Pipeline可以帮助用户在不同的AWS服务之间建立定时移动、集成和处理数据的管道服务。Data Pipeline可以用来定义一些数据驱动的工作流任务,尤其适合需要定期执行和处理的任务。Data Pipeline的定义包括指定数据来源的数据源,处理数据的业务逻辑流程和执行操作的时间安排。根据定义和设置,Data Pipeline会在一个高可用、高容错的环境中执行并监控用户的数据处理工作流,同时记录执行情况并进行异常处理。为简化用户使用,AWS管理控制台提供了一个图形化的设计界面,用户通过鼠标拖拽方式就可以定义Data Pipeline。另外,AWS还提供了常见的数据管道服务的模板(比如从RDS拷贝数据到S3、从企业MySQL拷贝到RDS等),进一步简化用户的Data Pipeline设计。

 

8.      邮件发送服务:Amazon SES(Simple Email Service)

Amazon SES是一个可靠的、低成本的和简单易用的电子邮件发送服务。SES可以帮助用户解决像市场活动中大批量邮件发送的需求。通过使用SES服务,用户可以快速发送大量邮件而不用自己管理邮件服务器,不用配置网络和IP地址拒绝设置等。SES提供了SMTP接口和SES API两种方式发送邮件。为帮助用户实现一个相对较高的邮件发送成功率,SES提供了一个内置的邮件发送反馈机制。同时,SES还提供一个监测邮件发送情况的仪表盘,显示成功发送邮件的数量、退回和拒绝的百分比或数量等。

 

9.      工作流服务:Amazon SWF(Simple Workflow)

Amazon SWF是一个帮助用户应用实现任务协同和状态管理的工作流服务。通过使用SWF,用户可以不用关注复杂的状态机的实现,而把主要精力放在工作流业务逻辑的实现上面。用户可以通过不同的编程语言调用SWF API,来构建基于SWF的工作流服务。这些代码不仅可以运行在EC2实例上,也可以运行在任何联通互联网的服务器上。SWF提供一个分布式的工作流服务,它就像是一个协调中心来连接不同的工作流节点,包括用于条件判断的Decider和用于任务处理的Worker。SWF支持自动任务和人工任务,同时记录工作流中任务的执行情况。通过SWF用户可以构建一个高度灵活和松耦合的工作流应用。

 

 

10.   媒体转码服务:Amazon Elastic Transcoder

Amazon Elastic Transcoder是一个基于云的媒体转码服务。Elastic Transcoder可以帮助用户把媒体文件从一个源格式转化成多种目标格式,从而满足不同设备的格式和清晰度要求。Elastic Transcoder可以转码整个文件,也可以只转码源媒体文件中指定的片段。Elastic Transcoder会自动管理媒体文件转码的各个方面,用户不需要配置和管理软件,也不用考虑多个文件转码时的扩展性等问题。用户只需要创建一个转码任务,然后指定媒体文件源、目标文件位置和文件格式就可以开始转码服务。用户可以通过服务的API、SDK或AWS管理控制台使用Elastic Transcoder,然后以分钟为单位根据转码媒体的时间长度来计费。

 

 

11.   应用流服务:Amazon AppStream

Amazon AppStream是一种低延时、高分辨率的应用流服务,它可以让用户把部署在AWS云平台上的应用程序通过互联网以流的方式在客户端的设备上进行展现和交互。这些客户端设备可以是PC、平板和智能手机等。由于应用程序是运行在AWS云平台上面的,所以应用程序可以访问AWS云平台上包括计算(包括GPU)、存储和数据库等各种资源,从而彻底解决应用程序的资源需求问题。你可以选择把整个应用或部分应用通过流的方式交互到终端设备上去。对于那些原先只能运行在终端设备上但对计算资源要求比较高的3D模拟、游戏等应用,AppStream提供了一种非常合适的解决方案。

 

 

部署和管理服务是帮助用户在AWS云平台上部署和管理应用程序和资源,其主要侧重在四个方面:一个是身份认证和访问控制,包括IAM和CloudHSM;第二个是应用和资源管理,包括AWS管理控制台、命令行接口(CLI)和OpsWorks;第三个是监控,包括CloudWatch和CloudTrail;最后一个是部署和自动化,包括Elastic Beanstalk和CloudFormation。下面我们简要介绍一下这些服务。

1. 身份认证和访问控制:AWS IAM(Identity and Access Management)

IAM是AWS的身份管理和访问控制服务,通过IAM来管理用户可以极大提升用户管理的灵活度,并提供细粒度的资源访问管理。 通过IAM可以根据“最低权限原则”按照实际需求给每个使用AWS的用户设定权限,而且这些用户权限随时可以进行调整。另外,通过IAM可以通过临时令牌的方式实现身份联合(又称身份联邦),从而实现与外部用户的身份认证服务集成在一起。这些外部用户可以通过企业内部的AD或LDAP认证用户,或者是像Google、Facebook和Amazon等这样的主流互联网服务账户用户。

 

2. 密钥管理服务:AWS CloudHSM

CloudHSM是AWS为用户提供的密码管理服务,它结合了云服务的便捷性和专用硬件的安全性。CloudHSM使用了防篡改的硬件安全模块(HSM),帮助用户安全存储各种密钥,AWS负责管理CloudHSM设备,但只有用户自己才能访问存储在CloudHSM上的密钥。用户的应用程序用专门的HSM客户端通过SSL加密通道访问CloudHSM,而且CloudHSM必须结合VPC一起使用。另外通过CloudHSM还可以帮助用户的AWS环境满足相应的法规遵循标准,例如Common Criteria EAL4+。

 

 

3.AWS管理控制台:AWS Management Console

AWS管理控制台为用户提供了一个统一管理所有AWS资源和所部署应用的图形化界面。用户可以通过管理控制台来管理各种资源、部署应用、监控应用和资源的使用情况等。我们建议用户不使用自己的AWS主账户登录AWS管理控制台,而使用IAM账户并结合使用MFA多因子认证方式(详情参考这里)。用户主要通过浏览器方式登录AWS管理控制台,不过现在也有基于Android和iOS的移动应用版本方便用户使用。

 

 

4.AWS命令行接口:AWS CLI(Command Line Interface)

除了前面的图形化管理控制台外,AWS还提供了一个方便用户以命令和脚本进行管理的工具,它就是AWS CLI。命令行接口需要用户下载安装,它支持Windows、Mac和Linux环境。通过AWS CLI,一方面可以满足喜欢命令行管理方式的用户,更重要的时用户可以编写脚本来实行一些自动化的管理工作。

 

 

 

5. 应用管理服务:AWS OpsWorks

AWS OpsWorks是一种基于事件驱动机制的应用管理服务,能够帮助用户管理和配置整个应用程序,包括EC2实例创建、应用的部署、负载均衡服务配置和数据库配置等功能。OpsWorks采用了Chef框架,提供了使用常见技术如Ruby、PHP、Node.JS、Java等的模板,同时支持用户自定义Chef配置支持那些能够通过脚本安装的软件。另外,OpsWorks还支持用户配置根据时间设置和基于实际应用负载的自动扩展。

 

 

6. 监控服务:Amazon CloudWatch

CloudWatch是一个帮助用户监控AWS资源和应用程序的服务。AWS用户可以通过CloudWatch来收集和跟踪设定的参数指标(Metrics),并提供可视化报表。CloudWatch缺省已经为EC2、RDS、ELB等提供许多常见的监控指标,如针对EC2实例的CPU使用率、运行状态、磁盘读写量等。用户也可以自定义一些监控指标然后通过CloudWatch来监控。另外,CloudWatch可结合SNS服务实现告警通知,也可以结合Auto Scaling实现自动扩展服务。

 

 

7. 安全记录服务:AWS CloudTrail

CloudTrail是一个帮助用户提升安全性的服务,它可以跟踪用户账户下AWS API调用记录,并把日志保存到指定的S3存储桶(Bucket)。CloudTrail记录的信息包括API调用方、调用的时间、调用方的IP地址、调用参数以及AWS服务响应的组成元素等。CloudTrail帮助用户记录了AWS API调用的历史,包括AWS管理控制台、命令行、AWS软件开发包(SDK)以及其他像CloudFormation这样的上层服务等。这些调用日志记录有助于用户进行安全分析、资源变更记录和满足法规遵循方面的要求。

 

 

8. 配置模板服务:AWS CloudFormation

CloudFormation为用户一种简单的方式来生成和管理相关AWS资源的一个集合,帮助用户快速部署和更新这些资源。CloudFormation可以让用户把自己要部署的AWS资源以一个JSON文件,也即CloudFormation模板的形式描述出来,然后通过部署基于这个模板的资源堆栈就可以批量把所需要的资源一次性创建出来。CloudFormation不但可以减少用户重复部署的工作量,而且在资源部署后,用户还可以更新自己的模板并通过版本控制的方式来管理资源的部署。为简化用户创建模板,CloudFormation还提供了一些常见的模板方便用户构建自己的计算环境。

 

 

9. 应用自动化部署:AWS Elastic Beanstalk

 

Elastic Beanstalk能够帮助用户自动化部署应用程序,用户只需要上载应用程序或集成Git库,然后Elastic Beanstalk能够自动处理部署的具体细节问题,包括部署容量、负载均衡、自动扩展和应用健康监控等设置。Elastic Beanstalk支持的常见语言包括Nodes.js、PHP、Python、Ruby、Java和.NET等开发的应用。与通常的 平台即服务(PaaS)不同的是Elastic Beanstalk不但能够降低开发人员的应用部署难度,而且可以同时让开发人员保留对底层资源的控制能力。除了应用在部署中用到具体AWS资源的费用外,用户不需要额外给Elastic Beanstalk服务付费。