在传统的服务器中,您通常使用 NGINX 或 Apache 等 Web 服务器将 HTTP 流量路由到您的 Laravel 应用程序。但是,当使用由 Vapor 提供支持的 AWS 无服务器基础设施时,在确定如何将流量路由到您的应用程序时,您有三个不同的选项可供考虑:API 网关 v1、API 网关 v2 和负载均衡器。
在本文中,我们将从性能、定价和功能方面比较这三个选项。
API 网关 v1
默认情况下,Vapor 使用 API 网关 v1 将 HTTP 流量路由到您的无服务器应用程序。如果您的应用程序的 vapor.yml
文件不包含 gateway-version
或 balancer
配置选项,则您已经在使用 API 网关 v1。
API 网关 v1 是 Vapor 提供的唯一边缘优化选项。边缘优化的 API 端点是地理分布式客户端的最佳选择,因为 HTTP 请求被路由到最近的 CloudFront 接入点。
API 网关 v1 遵循按使用付费定价模式,收取每百万次请求 3.50 美元。这是 Vapor 提供的三个选项中最昂贵的(按规模)流量路由选项。
为了确保您在 Vapor 环境中使用 API 网关 v1,您只需省略 gateway-version
和 balancer
选项,或在应用程序的 vapor.yml
文件中显式指定 gateway-version: 1
。
id: 2
name: your-project
environments:
production:
gateway-version: 1
API 网关 v2
API 网关 v2 是 API 网关 v1 的更便宜、更快的替代方案,提供高达 60% 的连接开销减少。
但是,此选项是区域性 API 端点。这意味着靠近您的项目区域的客户可以预期速度改进,而远离您的项目区域的客户可能无法获得相同的益处。
API 网关 v2 的一个限制是它不支持 Vapor 的托管防火墙 - 这项功能提供针对拒绝服务攻击和可能消耗您的环境资源的普遍机器人流量的基本保护。此外,在使用 API 网关 v2 时,您需要自己处理 HTTP 到 HTTPS 的重定向。
为了解决这些限制,我们目前建议使用 Cloudflare 作为您使用 API Gateway v2 的 Vapor 应用程序的外部 DNS 提供商,因为您可以使用 Cloudflare 的防火墙和 HTTP 到 HTTPS 重定向解决方案。
API Gateway v2 也遵循 **按需付费** 的定价模式,收取 **每百万次请求 1.00 美元** 的费用。大多数客户可以预期与 API Gateway v1 相比,平均成本 **节省高达 70%**。
如果您想使用 API Gateway v2,您可以在应用程序的 `vapor.yml` 文件中为给定环境指定 `gateway-version: 2` 配置选项。
id: 2
name: your-project
environments:
production:
gateway-version: 2
负载均衡器
与 API 网关 v2 一样,应用程序负载均衡器 (ALB) 是一个 **区域性** 选项。但是,与 API Gateway v2 不同,负载均衡器支持 Vapor 的托管防火墙和 HTTP 到 HTTPS 重定向。
但是,当使用负载均衡器为您的应用程序提供流量时,您必须注意 Amazon 的请求/响应大小限制。负载均衡器最多可以接收/发送 1MB 的内容,而 API Gateway v1/v2 可以支持高达 6MB 的请求/响应。
与前两种选项不同,负载均衡器使用 **固定** 定价模式,在规模上提供巨大的成本节省。例如,如果一个应用程序每月接收 10 亿次请求,负载均衡器将为应用程序的每月 AWS 账单节省约 4,000 美元。
对于接收大量流量的应用程序,使用负载均衡器比 Vapor 和 AWS 提供的其他选项更 **经济高效**。否则,大多数应用程序应该使用 API Gateway v1/v2。
您可以使用 Vapor UI 或使用 balancer CLI 命令创建负载均衡器。
vapor balancer my-balancer
要将负载均衡器附加到环境,请在 `vapor.yml` 文件中将 `balancer` 条目添加到环境的配置中,然后部署您的应用程序。
id: 2
name: your-project
environments:
production:
balancer: your-load-balancer
结论
在 Laravel,我们致力于为您提供世界上最强大、最友好的无服务器体验。在本文中,您可以看到选择和管理 AWS 处理您由 Vapor 提供支持的 Laravel 应用程序的 HTTP 流量的方式是多么容易。尝试这些选项,让我们知道结果如何!
希望您喜欢这篇文章。如果您还没有尝试过 Vapor,现在是开始的好时机!您今天可以在以下地址创建您的帐户:vapor.laravel.com.