AWS解决方案架构师专家级(SAP)认证学习之路(3)- 计算

356 阅读6分钟

参考:AWS Cloud Practitioner Essentials 培训课程Module 2

Module 2 介绍

本模块介绍AWS的核心服务-计算(Amazon EC2),从而让你了解使用Amazon EC2的好处,识别Amazon EC2的实列(Instance)类型,如何选择不同的计费方式,自动伸缩(Auto Scaling)的好处,弹性负载均衡(Elastic Load Balancing)的好处,并且还将了解Amazon Simple Notification Service(SNS)和Amazon Simple Queue Service(SQS),以及其它的计算选项。

AWS计算服务的全称是Amazon Elastic Compute Cloud,简称Amazon EC2,以安全的,容量可调整的实列方式,提供云计算服务。

想象一下你负责为公司的新网站提供架构资源。如果基于传统的on-premises资源提供方式,需要做以下工作:

  • 购买新硬件所需的前期投资
  • 等待新硬件的交付
  • 将新硬件安装在自有的数据中心
  • 完成新硬件上线所需的配置工作

相比之下,采用Amazon EC2 Instance方式则显得容易得多:

  • 几分钟之内即可完成准备和启动Amazon EC2 Instance
  • 当实例上的业务完成后,便可以停止使用实例
  • 只有实例在使用期间才会产生费用
  • 按需付费可以让你节省客观的成本

使用Amazon EC2 Instance只需简单几步:

  1. 基于AWS向导提供的模板,选择相应的配置,启动实例
  2. 连接到实例。有多种连接方式可选
  3. 使用实例,就这么简单!

实例类型

根据不同的业务类型,AWS提供有针对性优化的EC2实例类型。当选择实例类型时,考虑负载和应用的具体需求,可能包括计算、内存和存储能力等方面。有下面几种类型的实例:

  • 通用目的型 - 适用于对各种资源需求相对平衡的场景
  • 计算优化型 - 适用于计算密集型任务,如高性能计算(HPC)、批处理(batch processing)等
  • 内存优化型 - 适用于需要在内存中处理大量数据的任务,如高性能(内存)数据库
  • 计算加速型 - 用硬件加速器执行浮点运算、图形处理等任务
  • 存储优化型 - 适用于需要对本地存储进行大量读写操作的任务,如分布式文件系统、数据仓库应用等

计费

AWS提供不同的计费方式,让用户可以最优化成本控制。

  • 按需付费(On-Demand) - 按使用量计费,适用于短期(short-term, irregular)且需独占(can't be interrupted)的情况
  • 节省计划(Saving Plans)- 承诺长期保持一定的使用量,分1年期和3年期两种,相比On-Demand方式可以节省72%
  • 预留实例(Reserved Instances)- 是针对On-Demand方式的一种计费折扣。可以购买1年期或3年期的Standard Reserved 和 Covertible Reserved,也可以购买1年期的Secheduled Reserved。3年期最划算。
  • 可用实例(Spot Instances)- 最便宜的一种。这种方式只能使用AWS中的空闲资源,并且可能随时会被中断。
  • 专用主机(Dedicated Host)- 专属的物理服务器,价格也是最贵的。

容量伸缩(Scaling)

伸缩性指的是你可以从所需的资源容量开始进行系统架构设计,并能自动地扩容或缩容以响应需求的变化。如果你希望这个过程能够自动化进行,那么就要用到AWS EC2 Auto Scaling。

AWS EC2 Auto Scaling能够使你自动地增加或减少EC2实例以响应不断变化的应用需求。有两种方法可以采用:

  1. 动态伸缩
  2. 基于预测的伸缩

关于AWS EC2 Auto Scaling还有一个单独的课程Introduction to EC2 Auto Scaling做进一步的讲解。

负载均衡(Elastic Load Balancing)

负载均衡是能够将入向流量自动地、均匀地分发到多个资源(如EC2实例)进行处理的AWS服务。一个负载均衡器(Load Balancer)通常作为一个自动伸缩组(Auto Scaling Group)的单一接口来接受外部的Web请求。

虽然负载均衡和自动伸缩是不同的服务,但它们协同工作方能保证运行在EC2的应用达到高性能和高可用性。

消息和队列(Messaging and Queuing)

先来看一下两种不同的软件架构:

  • Monolithic - 模块间紧耦合,故障不隔离,易导致整个系统崩溃
  • Microservices - 模块间松(解)耦合,故障隔离在模块内,不影响其它模块和整个系统

AWS提供了两种比较常用的消息和队列微服务:

Amazon Simple Notification Service(Amazon SNS)是一种publish/subscribe服务。使用Amazon SNS topics,一个publisher可以给相应的subscirber发布消息。

Amazon Simple Queue Service(Amazon SQS)是一种消息队列服务。通过SQS可以在模块间进行消息发送、存储和接收。

其它的计算服务

除了Amazon EC2之外,AWS还提供了多种灵活的计算服务,用户可以根据需要选择适合自己的服务。

Serverless Computing是相比Amazon EC2更加轻量级的计算服务。这种方式可以省去虚拟机实例的准备工作,而只需要关心业务逻辑开发。AWS提供这种的serverless computing服务成为AWS Lambda。

AWS Lambda

使用AWS Lambda,用户可以不需要配置任何的服务器实例便可运行代码。当然这项服务也是按使用付费。一个适用AWS Lambda的简单列子是对上传到AWS Cloud的图片进行自动缩放的功能。让我们来看一下AWS Lambda是如何工作的:

  1. 上传代码到AWS Lambda
  2. 设置运行代码的触发器
  3. 代码只有在触发时运行
  4. 只需在代码运行时付费

Containers

容器(Containers)提供了一种将应用程序及其依赖打包成单一对象的标准化方法。AWS提供了以下几种相关服务:

  • Amazon Elastic Container Service(Amazon ECS) - 高伸缩性、高性能的容器管理系统使你可以在AWS上运行、伸缩容器化应用;支持Docker。
  • Amazon Elastic Kubernetes Service(Amazon EKS) - 高度可管理的服务,使你可以在AWS上运行Kubernetes。Kubernetes是一个开源的软件,用来大规模部署和管理容易化应用。
  • AWS Fargate - 是一种为容器定制的无服务计算引擎。它可以支持Amazon ECS和Amazon EKS。使用AWS Fargate,你无需准备和管理服务器实例,这些工作都由AWS Fargate搞定。参考:Introduction to AWS Fargate 了解更多。