AWS beanstalk中的worker-tier和web-tier有啥区别

Posted

技术标签:

【中文标题】AWS beanstalk中的worker-tier和web-tier有啥区别【英文标题】:What are the difference between worker-tier and web-tier in AWS beanstalkAWS beanstalk中的worker-tier和web-tier有什么区别 【发布时间】:2017-09-04 07:04:43 【问题描述】:

在阅读文档时,我开始了解 AWS 中的这两层环境,但找不到它们之间的任何比较。文档中的建议是,应该为长时间运行的任务选择 Worker Environment(以增加 Web 层的响应能力)。

我有几个问题要澄清我的疑问:

    两层有何不同? (关于执行不同的操作,每个可用的服务等)

    两者如何相互交流? (如果我在 Web 层和后端开发我的前端应用程序 工人层)

【问题讨论】:

【参考方案1】:

在我看来,最重要的区别是工作层实例不运行 Web 服务器进程(apache、nginx 等)。因此,他们不会直接响应客户的请求。相反,它们可用于从您的 Web 层卸载长时间运行的进程。

各层通过 SQS 相互通信。当您的 Web 实例需要生成后台作业时,它会向共享队列发布一条带有作业详细信息的消息。在工作实例上运行的守护程序从队列中读取项目并将消息发布到您的应用程序在http://localhost/ 上公开的端点。

话虽如此,我认为 Web/worker 架构在您所描述的“前端/后端”术语中可能是矫枉过正的。您的 Web 层完全能够同时运行 Web 服务器和应用程序服务器。但是,如果您对后台或异步处理有要求,添加工作层可能是有意义的。

【讨论】:

你知道有什么文件可以证实这一点吗?尽管 Worker 文档似乎确实暗示,当我启动一个裸 Worker 时,它运行 Apache,并在端口 80 上侦听。它似乎可以处理健康检查,但它肯定会干扰我在端口上运行的 Flask -80.

以上是关于AWS beanstalk中的worker-tier和web-tier有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

AWS Certificate Manager 证书对控制台中的 AWS Beanstalk 不可见

更新 AWS 弹性 beanstalk 实例的 apache 配置文件中的 maxclients 设置

一个 AWS 账户中的 Elastic Beanstalk 能否与另一个 AWS 账户中的 RDS 通信?

AWS Elastic Beanstalk 中的 Laravel .env

AWS Beanstalk 中的 Spring Boot 微服务

AWS Elastic Beanstalk 中的 HTTPS 配置