**发布时间:** 2025-06-25
**厂商:** GCP
**类型:** BLOG
**原始链接:** https://cloud.google.com/blog/products/networking/run-service-extensions-plugins-with-cloud-cdn
---
<!-- AI_TASK_START: AI标题翻译 -->
[新产品/新功能] 使用 Service Extensions 插件在 Cloud CDN 边缘运行自定义代码
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
Google Cloud Platform (GCP) 为其 **Cloud CDN** 服务推出了 **Service Extensions** 插件功能。这是一个轻量级的边缘计算解决方案,允许用户将自定义代码直接部署到 **Cloud CDN** 和 **应用负载均衡器 (Application Load Balancer)** 的请求处理路径中。该功能旨在为需要高度灵活性和定制化能力的企业提供一种在边缘修改和控制流量行为的方式。
插件基于 **WebAssembly (Wasm)** 技术构建,可以在请求处理流程的两个关键节点执行:
- **边缘扩展 (Edge Extension):** 在请求到达 **Cloud CDN** 缓存之前执行,这是本次发布的核心新功能。
- **流量扩展 (Traffic Extension):** 在 **Cloud CDN** 缓存之后、更靠近源站的位置执行。
该产品的目标用户是希望在不修改后端应用的情况下,实现精细化流量管理、缓存优化、安全策略执行和自定义日志记录的开发者与运维团队。其市场定位是直接对标 AWS Lambda@Edge/CloudFront Functions 和 Cloudflare Workers 等边缘计算产品,但通过 **Wasm** 技术强调其高性能、语言无关性和开放性。
## 关键客户价值
- **自定义流量路由与负载均衡:** 通过在边缘修改请求头,可以动态地将流量引导至不同的后端服务。这为实现复杂的 A/B 测试、蓝绿部署或基于用户地理位置的路由策略提供了极大的灵活性。
- **精细化缓存优化:** 能够根据请求的任意属性(如 Cookie、设备类型)来影响缓存决策或修改缓存键。这有助于显著提升缓存命中率,降低源站负载和内容分发成本。
- **自定义异常处理:** 当后端服务返回特定错误码时,可以在边缘拦截响应,并将用户重定向到自定义的静态错误页面或备用站点,从而提升用户体验的连续性。
- **增强的可观测性:** 允许将自定义的元数据或请求派生信息注入日志,并发送到 **Cloud Logging**。这为故障排查、性能分析和业务洞察提供了更丰富的数据维度。
- **请求/响应头操作:** 能够在请求到达后端或响应返回客户端之前,灵活地添加、删除或重写 HTTP 头部。这对于满足后端应用的特定格式要求、传递客户端信息或实现安全标头至关重要。
- **边缘安全策略执行:** 可基于客户端请求特征(如 IP 地址、User-Agent、请求路径)编写自定义安全逻辑。这使得在流量入口处即可执行访问控制、拦截恶意请求或实现简单的 Web 应用防火墙 (WAF) 功能,从而保护源站。
- **差异化优势:** 与竞品主要依赖特定语言(如 JavaScript)的方案不同,GCP 采用 **Wasm** 作为运行时,原生支持 Rust、C++、Go 等多种高性能语言,为开发者提供了更广泛的技术选择和更高的执行效率。
## 关键技术洞察
- **基于 WebAssembly (Wasm) 的高性能运行时:** **Service Extensions** 的核心是 **Wasm**,这是一种为现代 Web 设计的、可移植的二进制指令格式。
- _提供接近原生的执行速度和毫秒级的启动时间_,这对于延迟极其敏感的 CDN 请求处理路径至关重要。
- **Wasm** 的沙箱化执行环境为运行第三方或用户自定义代码提供了强大的安全保障,有效隔离了潜在风险。
- 提供了跨平台可移植性,开发者可以在本地环境中编译和测试 **Wasm** 模块,然后无缝部署到 GCP 边缘节点。
- **遵循 Proxy-Wasm 开放标准:** 该功能利用了 **Proxy-Wasm** ABI (应用二进制接口) 标准。这是一个由 Google 支持的开源项目,旨在为网络代理(如 Envoy)提供一个与 **Wasm** 模块交互的通用规范。
- 采用开放标准降低了厂商锁定的风险,并促进了生态系统的发展。用户编写的 **Wasm** 插件理论上可以复用于其他支持 **Proxy-Wasm** 的平台,如服务网格 Istio。
## 其他信息
- **强化合作伙伴生态系统:** GCP 宣布与数字媒体优化服务商 Cloudinary 合作。Cloudinary 已将其图像和视频优化解决方案打包成一个 **Wasm** 插件,供 **Cloud CDN** 客户使用。
- 该插件可以根据客户端请求头中的 User-Agent 和 Accept 等信息,动态判断并提供最优格式和尺寸的媒体资源,同时对缓存键进行规范化处理,以最大化缓存效率。
- 这不仅验证了 **Service Extensions** 的实用性,也展示了其作为平台吸引第三方解决方案、构建边缘功能生态的潜力。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 通过 Cloud CDN 的服务扩展插件在边缘运行您的自定义代码
网络
#
通过 Cloud CDN 的服务扩展插件在边缘运行您的自定义代码
2025 年 6 月 25 日
##### Arman Rye
产品经理
##### Martijn Stevenson
工程主管
##### 试用 Gemini 2.5
我们最智能的模型现已在 Vertex AI 上提供
[立即试用](https://console.cloud.google.com/vertex-ai/studio/freeform)
在 Google Cloud,我们致力于为全球的网络和 API 内容提供最佳性能。Cloud CDN 是一款高性能的边缘缓存解决方案,在全球超过 200 个接入点 (points of presence) 运行,并且我们还在不断为其添加更多功能。最近,我们推出了使用缓存标签进行失效处理 (invalidation with cache tags)、设备特征识别 (device characterization)、0-RTT 早期数据 (0-RTT early data) 和地理位置定位 (geo-targeting)。这些强大的一流功能解决了许多用例的需求,但许多组织也向我们反映,他们还需要一个更灵活、轻量级的边缘计算 (edge computing) 解决方案。
我们很高兴地宣布,您现在可以通过 Cloud CDN 运行服务扩展插件 (Service Extensions plugins),从而在一个完全托管且延迟最优的 Google 环境中,直接在请求路径 (request path) 中运行您的自定义代码。这使您能够自定义 Cloud CDN 和应用负载均衡器 (Application Load Balancer) 的行为,以满足您的业务需求。
Cloud CDN 的服务扩展插件支持以下用例:
- **自定义流量导向 (traffic steering):** 操控请求标头以影响后端服务的选择。
- **缓存优化 (cache optimization):** 影响从 Cloud CDN 缓存中提供哪些内容。
- **异常处理 (exception handling):** 将客户端重定向到针对特定响应类别的自定义错误页面。
- **自定义日志记录:** 将用户定义的标头或自定义数据记录到 Cloud Logging 中。
- **标头添加:** 为您的应用程序或特定客户创建新的相关标头。
- **标头操控 (header manipulation):** 重写现有请求标头,或在客户端标头发送至后端的途中覆盖它们。
- **安全性:** 根据客户端请求编写自定义安全策略,并在您的插件内做出强制执行决策。
### **您可以在何处运行代码**
服务扩展插件在请求和响应处理路径的多个位置运行。在此次发布中,您可以使用边缘扩展 (edge extension) 在请求到达 Cloud CDN 之前运行插件。在 [之前的一次发布](https://cloud.google.com/blog/products/networking/service-extensions-plugins-for-application-load-balancers?e=48754805) 中,我们增加了通过流量扩展 (traffic extension) 在 Cloud CDN 缓存之后、更靠近源站 (origin) 的位置运行插件的能力。现在,通过对边缘扩展和流量扩展的支持,您可以选择代码在处理路径中的执行位置。

### **服务扩展深入解析**
服务扩展插件专为轻量级计算操作而设计,作为应用负载均衡器请求路径的一部分运行。插件基于 WebAssembly (Wasm) 构建,这带来了多项优势:
1. 接近原生的执行速度,启动时间仅为个位数毫秒
2. 支持多种编程语言,如 Rust、C++ 以及最近的 [Go](https://cloud.google.com/blog/products/application-development/go-1-24-expands-support-for-wasm?e=48754805)
3. 跨平台可移植性,因此您可以在不同部署环境中或在本地运行相同的插件进行测试
4. 安全保护,例如在沙盒环境 (sandboxed environment) 中执行插件逻辑
服务扩展插件利用了 [Proxy-Wasm](https://github.com/proxy-wasm) ,这是一个由 Google 支持的开源项目,为 Wasm 模块与网络代理 (network proxies) 的交互提供了一个标准 API。
### **使用 Cloudinary 的图像与视频优化解决方案**
我们很高兴地宣布,我们最新的合作伙伴 Cloudinary 已将其产品与服务扩展和 Cloud CDN 集成。Cloudinary 提供先进的图像和视频优化解决方案,并已将其与服务扩展插件集成,供 Cloud CDN 客户部署。
Cloudinary 的插件被打包成一个 Wasm 插件,它从客户端请求中获取指令,例如 User-Agent 信息以及来自 HTTP Accept 标头的 MIME 类型 (MIME types) 所表示的内容类型,从而确定向最终用户提供的最优媒体类型。该插件还负责缓存键规范化 (Cache Key normalization),以确保图像和视频能根据设备类型和内容类型被正确缓存。
> “Cloudinary 的图像和视频解决方案帮助客户大规模管理和优化其视觉媒体资产,同时确保这些资产针对最佳格式、设备、渠道和观看环境进行了优化。我们很高兴能与 Google 团队合作,通过服务扩展向 Cloud CDN 客户提供 Cloudinary 的图像和视频优化解决方案。” - Gary Ballabio, Cloudinary 战略技术合作伙伴关系副总裁
有关 Cloudinary 解决方案的更多信息,请查阅 [本指南](https://cloudinary.com/integrations/google-cloud-cdn) 。
### **下一步计划**
要开始使用服务扩展插件,请查看我们不断丰富的示例 [代码库](https://github.com/GoogleCloudPlatform/service-extensions/tree/main/plugins#getting-started) (其中包含一个本地测试工具包),并遵循我们文档中的 [快速入门指南](https://cloud.google.com/service-extensions/docs/prepare-plugin-code) 。
发布于
- [网络](https://cloud.google.com/blog/products/networking)
<!-- AI_TASK_END: AI全文翻译 -->