”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在AWS Serverless架构上运行PHP?部分 什么是无服务器?

如何在AWS Serverless架构上运行PHP?部分 什么是无服务器?

发布于2024-11-04
浏览:253

Lambda 是 AWS 旗舰无服务器服务,允许在各种运行时上运行代码。然而 PHP 并没有明确地出现在官方产品描述中。这是否意味着您无法在 Lambda 上运行 PHP 代码?不,没有!

在本系列中(源自我对 AWS 用户组 Poitiers 的一次演讲),我们将讨论什么是无服务器以及如何让 PHP(如果这是您最喜欢的语言)在 Lambda 上运行。

什么是无服务器?

无服务器是一种托管范例,云提供商动态扩展分配给客户工作负载的资源,同时不仅管理物理基础设施(服务器、电源冷却),还管理执行运行时(修补等)。

How to run PHP on AWS ServerLess architecture ? Part  What

从严格意义上讲,计算量是为每个请求分配的,从而形成“从规模到零”的定价模型(没有资源按小时付费,而是仅按实际需求比例付费),同时提供内置的高-可用性。

这增加了云的其他优势,主要是一切都带有 API,使自动化成为可能。

这些好处的总和使得拥有几乎免费的功能分支临时环境成为可能,从而提高开发人员的生产力和交付时间。

How to run PHP on AWS ServerLess architecture ? Part  What

无服务器不仅仅涉及计算!

无服务器生态系统中有很多解决方案。当无服务器计算 (Lambda) 于 2014 年出现时,托管队列 (SQS) 已经存在了十年,S3 也已经存在了 8 年。

How to run PHP on AWS ServerLess architecture ? Part  What

请注意,在上面的幻灯片中,Aurora 不符合我们对 Serverless 的严格定义,因为它不会缩放到零(v1 缩放到零,但可能需要几分钟才能启动,而 v2 则需要在您的写入器和读取器实例上至少有 0.5 个 ACU,以便数据库准备好提供查询服务。

您将在下面找到一个用于托管仅涉及无服务器服务的 Web 应用程序的典型架构。对于有限数量的用户来说,托管此类应用程序的成本可能低于 1 美元/年。

How to run PHP on AWS ServerLess architecture ? Part  What

Serverless 只适用于微服务吗?

是的..也不是。它在设计时考虑了微服务,但您仍然可以部署整体架构(只要每次启动新环境时没有长时间运行的启动序列)。

How to run PHP on AWS ServerLess architecture ? Part  What

用于解决微服务常见挑战的无服务器选项:编排和编排

微服务架构可以减少应用程序组件之间的耦合(使用不同的语言,通过异步模式,通过消除基础设施级耦合来提高可扩展性)。

然而,当我们有多个单一用途的功能时,实现业务逻辑可能需要功能之间的协调。这种协调可以使用两种基本模式来实现。

  • 编排:在这种模式中,我们以命令式方式控制函数的调用。当功能由单个服务团队交付时,这通常在业务领域内使用。 AWS StepFunction 是一种无服务器方法,它是一种工作流程/状态机。这里有一个关于如何使用 StepFunction 协调 Lambda 函数的很好的教程。 编排:这种模式在跨业务领域的场景中更相关,具有独立的服务团队,以保持非常有限的耦合。事件总线使应用程序能够推送事件并订阅事件。多个消费者可以订阅同一个事件,每个消费者可以过滤他们需要的任何事件。用于此目的的核心 AWS 服务是 EventBridge。你会看到我在这里写的一篇博客文章。
  • 了解拉姆达

Lambda 是 AWS 的函数即服务解决方案。借助 Lambda,您可以部署代码并获得即时的高可用性和可扩展性,而无需担心实例部署和操作系统或运行时修补。

Lambda 可以与同步调用(通过 API 网关、应用程序负载均衡器或 Lambda 函数 URL)或异步调用(响应 AWS 生成的或用户生成的事件)一起使用。

当您部署 Lambda 时,您可以选择它运行所需的内存量。分配的CPU是成比例的。然后,您根据使用的毫秒数付费。例如,128Mb Lambda 的成本为 1.7*10^-9$/ms。在您花费第一美元之前,这需要 164 小时的计算时间。

How to run PHP on AWS ServerLess architecture ? Part  What还有 Lambda 尺度。快速地。比其他任何事情都快得多。不会再出现因流量变化较大而导致的 429 错误(如果您的工作负载没有得到很好的保护,则为 500 错误)。

How to run PHP on AWS ServerLess architecture ? Part  What 使用 LambdaLiths 解决主要挑战:冷启动

Lambda 执行环境在给定时间仅处理一个请求,并可重复用于后续请求。这意味着,为了扩展 Lambda 函数,或者当 Lambda 函数有一段时间没有被调用时,Lambda 将必须启动一个新的执行环境:这是一个冷启动。

如果冷启动对您的应用程序有害(同样,这可能比所有流量都变慢或达到 429 更好),那么有一些选择。 AWS 有一篇关于使用 Lambda 预热器或设置预置并发来解决这个问题的好文章。除此之外,对于 Java 用户来说,Lambda SnapStart 功能可以通过在 JVM 初始化后对 microVM 进行快照来提供良好的冷启动性能。

PHP 支持怎么样?

官方产品常见问题解答指出它“原生支持 Java、Go、PowerShell、Node.js、C#、Python 和 Ruby 代码,并提供运行时 API,允许您使用任何其他编程语言来编写函数。”

在本系列的下一篇博客文章中,我们将解释如何利用两个不同的框架(Bref 和 Lambda Web Adaptor)在 Lambda 上运行 PHP,并比较它们各自提供的可能性。

版本声明 本文转载于:https://dev.to/aws-builders/how-to-run-php-on-aws-serverless-architecture-part-1-whats-serverless-3j3m?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3