第十一章 其他计算服务

Lepiaoxue2022-10-18云计算180
我们知道 EC2 是一种虚拟服务器,经过简单的配置就可以适用于,比如说运行基本的 Web 服务器或者运行高性能计算集群。
虽然 EC2 具备很高的灵活性、可靠性和可扩展性,但您的场景可能需要其他的解决方案才能满足您对于计算容量的要求。使用 EC2 时,您仍然需要对于虚拟服务器的软件部分做维护工作。比如说实例中的软件环境需要安装安全补丁,设置实例的横向扩展,确保整个架构的高可用性等等。虽然这种托管方式所需要的管理工作比本地托管要少得多,但您仍然需要管理这部分工作
所以,您可能想要问,我们真的需要管理服务器吗?我们可不可以进一步把运维工作降到最低呢?这就要说到 AWS 的无服务器这个概念了,AWS 可以提供多种无服务器计算选项。所谓无服务器(serverless)并非没有服务器,而是指,无服务器的服务当中,所有的服务器,您作为使用者,都不需要去管理和维护。实际上您也看不到这些底层的基础设施或者实例。这些运维工作包括我们的设置、扩展、高可用性等等,这些方面都由 AWS 来完成和处理。您需要做的就是专注于您的业务去开发您所需要的应用程序就可以了。
无服务器计算
在本模块前面的部分中,您了解了 Amazon EC2 这种可以在云中运行虚拟服务器的服务。如果想要在 Amazon EC2 中运行应用程序,您必须:1
  • 预置实例(虚拟服务器)。

  • 上传代码。

  • 在应用程序运行时继续管理实例。

“无服务器”一词是指您的代码在服务器上运行,但您无需预置或管理这些服务器。借助无服务器计算,您可以将更多精力放在新产品和功能创新上,而不是放在维护服务器上。
无服务器计算的另一项优势在于可以灵活地自动扩展无服务器应用程序。无服务器计算可以通过修改使用量(例如吞吐量和内存)来调整应用程序的容量。 
AWS Lambda
AWS Lambda 就是一种无服务器计算服务,利用 Lambda,您只需要将代码上传到 Lambda 引擎当中,然后为这段代码配置一个触发(trigger)行为就可以了。当 Lambda 引擎检测到触发行为时,相关代码就会在环境中自动运行。运行 Lambda 代码的环境完全由 AWS 来运维,您只需要直接使用就可以。此外 Lambda 还可以自动实现扩展和高可用,不管您的触发行为是 1 个还是并发 1000 个,Lambda 都可以自动扩展来满足需求。Lambda 专用于较短时间运行的流程,它最长可以运行 15 分钟,所以并不适合需要长时间运行的流程。它更适合快速处理,比如 Web 后端请求等等。
AWS Lambda 是一种让您能够在无需预置或管理服务器的情况下运行代码的服务。 
使用 AWS Lambda 时,您只需为使用的计算时间付费。只有代码运行才会产生费用。您还可以为几乎任何类型的应用程序或后端服务运行代码,无需进行任何管理工作。 
例如,用户可以通过一个简单的 Lambda 函数来自动调整上传到 AWS 云的图片的大小。在这种情况下,该函数在上传新图片时触发。
AWS Lambda如何工作?
  1. 您将代码上传到 Lambda。

  2. 您将代码设置为从事件源(例如 AWS 服务、移动应用程序或 HTTP 终端节点)触发。

  3. Lambda 只在被触发时才运行代码

  4. 您只需为使用的计算时间付费。在前面调整图片大小的示例中,您只需为上传新图片后使用的计算时间付费。上传图片会触发 Lambda 运行调整图片大小函数的代码。

容器(Container)
容器可以提供一种标准方法,让您将应用程序的代码依赖项打包到单个对象中。您还可以将容器用于对安全性、可靠性和可扩展性有重要要求的流程和工作流。
  • 一台宿主机运行多个容器

假设公司应用程序开发人员的计算机环境与 IT 运营人员的计算机环境不同。开发人员希望确保应用程序的环境无论如何部署都保持一致,因此他们使用容器化方法。这有助于减少调试应用程序和诊断计算环境中的差异所花费的时间。
  • 数十台宿主机运行数百个容器

运行容器化应用程序时,一定要考虑可扩展性。假设您不是要管理运行多个容器的单台宿主机,而是要管理运行数百个容器的数十台宿主机,或者要管理运行数千个容器的数百台宿主机。在规模很大的情况下,监控内存使用情况、安全性、日志记录等工作会耗费很长时间。
Amazon Elastic Container Service (Amazon ECS)
Amazon Elastic Container Service (Amazon ECS) 是一种高度可扩展的高性能容器管理系统,让您可以在 AWS 上运行和扩展容器化应用程序。 
Amazon ECS 支持 Docker 容器。Docker 是一种软件平台,让您能够快速构建、测试和部署应用程序。AWS 支持使用开源 Docker Community Edition 和基于订阅的 Docker Enterprise Edition。
借助 Amazon ECS,您可以使用 API 调用来启动和停止支持 Docker 的应用程序。
Amazon Elastic Kubernetes Service (Amazon EKS)
Amazon Elastic Kubernetes Service (Amazon EKS) 是一项完全托管的服务,可用于在 AWS 上运行 Kubernetes。 
Kubernetes 是一款开源软件,让您能够大规模部署和管理容器化应用程序。Kubernetes 由一个大型志愿者社区维护,而 AWS 积极地与 Kubernetes 社区展开合作。随着 Kubernetes 应用程序的新功能特性发布,您可以轻松地将这些更新应用到由 Amazon EKS 管理的应用程序中。
AWS Fargate
AWS Fargate 是一种适用于容器的无服务器计算引擎。它同时适用于 Amazon ECS 和 Amazon EKS。 
使用 AWS Fargate 时,您无需预置或管理服务器。AWS Fargate 可以为您管理服务器基础设施。您可以将更多精力放在创新和应用程序开发上,并且只需为运行容器所需的资源付费。
ECS和EKS都是 AWS 的容器编排工具(container orchestration tools),这里说的容器特指 Docker 容器。容器是一种应用程序的打包,您可以把应用程序、依赖关系以及所需要的内库都打包到容器当中,然后由容器完成和操作系统的交互。通过这样的方式,我们可以将软件环境标准化。容器在 EC2 实例上以彼此隔离的方式运行,从某种程度上来说,Docker 和虚拟服务器的运行有点类似。当您在 EC2 上运行容器时,您需要一系列的容器管理工作。比如运行容器所需要的服务器集群的启动、停止、重启;将容器部署在哪些 EC2 上;或者,整个容器集群和容器的监控等等这些任务的流程都称之为容器编排。这是一项很复杂的工作。所以,我们创建了各种编排工具来帮助您管理容器。ECS 可以帮助您大规模运行容器化应用程序,不需要您自己管理容器或编排软件。EKS 也有类似作用,但使用的工具有所不同,具备的功能也有差别。
ECS 和 EKS 都可以帮助您将容器运行在 EC2 上。但是,如果您不需要访问底层的操作系统,或者说您不需要管理这些 EC2 服务器的话,那么您也可以使用 Fargate。Fargate 是一种支持 ECS 和 EKS 的无服务器计算平台。
  • 如果您要托管传统应用程序,或者说,您希望能够完全访问底层操作系统,比如 Linux 或 Windows,那么您可以选择 EC2。

  • 如果您要托管短期的代码,或者说您希望用事件驱动的方式来运行应用程序,而且您不希望管理底层的这些环境,那么您可以使用 AWS Lambda。这是一种无服务器计算服务。

  • 如果说您希望在 AWS 上运行基于 Docker 容器的工作负载,那么您肯定需要选择编排工具,比如 ECS 或 EKS。选择好编排工具之后,您需要选择运行容器平台 EC2 或 Fargate。其中 EC2,您需要自己来管理这些实例和操作系统,而 Fargate 是一种完全托管的无服务器计算环境。


版权归乐飘雪所有!

本文链接:http://lepiaoxue.com/post/17.html

相关文章

第四章 计算

第四章 计算

服务器的作用是帮助您托管应用程序并提供满足您业务需求的计算能力,当你使用 AWS 时,这些服务器都是虚拟化的,而提供虚拟化服务器的服务,就是 EC2。与在自己的数据中心当中运行物理服务器相比,使用 E...

第五章 Amazon EC2

第五章 Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2)Amazon Elastic Compute Cloud (Amazon EC2) 可以通过 Amazon...

第六章 Amazon EC2 实例类型

第六章 Amazon EC2 实例类型

每种实例类型都归属于一个实例系列,并针对特定类型的任务进行了优化。实例类型提供了 CPU、内存、存储和网络容量的不同组合,使您能够灵活地为应用程序选择适当的资源组合。EC2 中不同的实例系列分别为通用...

第七章 Amazon EC2 定价模式

第七章 Amazon EC2 定价模式

使用 Amazon EC2 时,您只需为使用的计算时间付费。Amazon EC2 针对不同使用案例提供了多种定价选项。按需实例/On-deman按需实例非常适合不能中断的短期无规律工作负载。没有前期成...

第九章 利用 Elastic Load Balancing 引导分配流量

第九章 利用 Elastic Load Balancing 引导分配流量

这一理念同样适用于您的 AWS 环境。当您的多个 EC2 实例都运行同一个程序来达到相同的业务目标时,一个请求进来,这个请求如何知道要往哪个 EC2 实例呢?您怎样才能确保工作负载均匀地分布在各个 E...