Amazon Elastic Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

应用程序架构

当您考虑如何对任务定义和服务建模时,它可以帮助考虑哪些流程需要在同一实例上一起运行以及您将如何扩展每个组件。例如,假设某个应用程序包含以下组件:

  • 一项在网页上显示信息的前端服务

  • 一项为前端服务提供 API 的后端服务

  • 数据存储

在您的开发环境中,您可能要在 Docker 主机上同时运行所有三个容器。您可能倾向于对生产环境使用同一方法,但此方法具有以下几个缺点:

  • 对一个组件的更改可能影响所有三个组件,更改的范围可能大于您所需的范围

  • 每个组件更难以扩展,因为您必须按比例扩展每个容器

  • 任务定义只能具有 10 个容器定义,并且您的应用程序堆栈现在或将来可能需要更多容器

  • 任务定义中的每个容器必须登录同一容器实例,这可能会将您的实例选择限制为最大大小

相反,您应创建将对用于相同目的的容器进行分组的任务定义,并将不同的组件分成多个任务定义。在此示例中,三个任务定义分别指定一个容器。以下示例集群具有已注册到三个前端服务容器、两个后端服务容器和一个数据存储服务容器的三个容器实例。

 应用程序架构示例

您可以对任务定义中的相关容器(例如,必须一起运行的已链接的容器)进行分组。例如,您可以将日志流容器添加到前端服务,并将其包含在同一任务定义中。

在拥有任务定义后,您可以从这些任务定义创建服务以保持所需任务的可用性。有关更多信息,请参阅 创建服务。在您的服务中,可以将容器与 Elastic Load Balancing 负载均衡器关联。有关更多信息,请参阅 服务负载均衡。当您的应用程序要求发生更改时,您可以更新服务以增大或减小所需任务数,或者在任务中部署更新版本的容器。有关更多信息,请参阅 更新服务