可编程平台允许客户通过编写代码来自定义产品。与具有固定功能的传统 SaaS 不同,它使用户能够扩展功能、部署后端逻辑,并在平台基础设施内构建全栈体验。
托管此类平台的基础设施面临多项挑战,包括安全性、可扩展性、成本效率和性能隔离。允许客户运行自定义代码会带来风险,如不可信执行、潜在滥用和资源争用,所有这些都必须在不影响平台可靠性的情况下加以管理。运行数百万个单租户应用程序本身成本高昂,因此高效的资源利用至关重要。在空闲时将工作负载缩减至零的能力是确保经济可行性的关键,同时还要在需求激增时保持快速启动时间。此外,确保无缝的全球执行和低延迟性能需要具备弹性的分布式架构。强大的监控、调试和治理功能对于在不限制创新的前提下提供对客户部署代码的可见性和控制能力也至关重要。
Workers for Platforms 通过提供安全、隔离的环境,让客户能够大规模安全地执行自定义代码,并具备自动缩减至零和全球分布式运行时的能力(可优化性能和成本),从而为构建可编程平台提供理想的基础设施。
Workers for Platforms 架构由几个关键组件组成,它们协同工作,为多租户应用程序提供安全、可扩展且高效的解决方案。以下概述了核心概念。
-
主请求流:可编程平台中请求流的概览。
-
调用与元数据流:通常,传入请求会通过元数据进行丰富,以便为函数调用提供相关上下文或执行路由逻辑。
-
出口控制:控制出站连接以确保合规行为。
-
利用存储与数据资源:利用数据库和存储构建更丰富的终端用户体验(规模化)。
-
可观测性工具:日志记录和指标收集服务,用于监控平台性能和排查问题。
-
客户端请求:从客户端应用程序向平台的动态分发 Worker 发送请求。
-
路由:识别要执行的正确工作负载,并将请求路由到分发命名空间中对应的用户 Worker。每个客户的工作负载在具有独立资源和安全边界的隔离用户 Worker 中运行。
在许多使用场景中,检索额外的元数据、用户数据或配置来处理传入请求并为用户 Worker 调用提供额外上下文是合理的。
-
传入请求:向自定义主机名或使用 Workers 通配符路由的 Worker 发送请求。
-
元数据查找:从 KV 存储中检索客户特定的配置数据。这些查找通常基于传入请求的主机名,或在使用自定义主机名时基于自定义元数据。
-
Worker 调用:根据元数据将请求路由到分发命名空间中对应的用户 Worker。可选择在函数调用时提供额外上下文。
数据可观测性和控制对安全性至关重要。出站 Workers 允许拦截用户 Worker 脚本中的所有出站请求。
-
Worker 调用:将请求路由到分发命名空间中对应的用户 Worker。可选择在用户 Worker 调用期间向出站 Worker 传递额外参数。
-
外部请求:通过受控的出站 Worker,使用
fetch()调用向外部服务发送请求。 -
请求拦截:评估出站请求并执行核心功能,如集中式策略执行和审计日志记录。
-
日志记录:通过 Tail Worker 和 Workers Trace Events Logpush 服务,收集请求流中所有 Workers 的日志。
-
指标:通过 Workers Analytics Engine 收集自定义指标,以及可通过 GraphQL API 直接查询的开箱即用分析数据。
-
第三方集成:通过分析集成将日志和指标导出到 Datadog、Splunk、Grafana 等各种外部监控和分析平台。
-
传入请求:向自定义主机名或使用 Workers 通配符路由的 Worker 发送请求。
-
Worker 调用:将请求路由到分发命名空间中对应的用户 Worker。
-
资源访问:与每个脚本专属的资源交互:
- D1 用于关系型数据库存储
- Durable Objects 用于强一致性数据
- KV 用于高读取、最终一致性键值存储
- R2 用于对象存储
-
管理界面:通过 GUI、API 或 CLI 界面与平台交互。
-
平台处理:处理这些交互以:
- 转换和打包代码
- 执行安全检查
- 应用配置
-
变更管理:使用 Cloudflare REST API 将更改部署到 Cloudflare。
Cloudflare Workers for Platforms 为构建具有强隔离性、全球分布和可扩展性能的多租户 SaaS 应用程序提供了坚实的基础。通过利用此架构,平台提供商可以专注于为其客户创造价值,而 Cloudflare 负责处理底层基础设施的复杂性。