本頁面提供外掛程式與 Cloud Load Balancing 應用程式負載平衡器和 Media CDN 整合的總覽資訊。
這項功能為 Media CDN 的預先發布版。
外掛程式採用 WebAssembly (Wasm) 格式建構,並使用 Proxy-Wasm API。
Wasm 是一種開放且標準化的二進位指令格式,可讓主機載入及執行含有客戶提供程式碼的 Wasm 模組。Wasm 在執行客戶程式碼時有許多優點,包括提供安全沙箱、支援多種語言、可攜性、業界廣泛採用且支援度不斷提升,以及相較於其他以 VM 為基礎的選項 (例如 JavaScript) 效能更佳。
Proxy-Wasm 是 Google 發起的開放原始碼專案。這個介面定義的 API 可讓您實作回呼,在處理 HTTP 要求和回應時執行,藉此自訂網路 Proxy 的行為。
外掛程式的運作方式
您可以透過 Service Extensions 搭配應用程式負載平衡器和 Media CDN,執行下列操作:
準備外掛程式程式碼,如下所示:
建立外掛程式,其中包含上傳的外掛程式程式碼。
在 Cloud Load Balancing 擴充功能或 Media CDN 擴充功能中設定外掛程式。
外掛程式資源
Service Extensions 可協助您建立下列重要資源,在處理路徑中新增自訂程式碼:
外掛程式:內含要部署的自訂程式碼。
外掛程式版本:Wasm 模組的版本。您可以指出外掛程式要將哪個版本的 Wasm 模組做為主要 (作用中) 模組。
限制
本節列出外掛程式的一些限制。
資源限制
外掛程式可使用的資源數量受到嚴格限制:
外掛程式每次呼叫最多可使用 1 毫秒的標準化 vCPU。CPU 毫秒數取決於平台,但標準化平台約等於時脈速度為 4 GHz 的處理器。叫用是獨立計費的執行階段,可以是要求標頭、要求主體、回應標頭或回應主體。
每個 VM 執行個體最多可使用 16 MiB 的記憶體。執行個體必須能夠處理最多 1000 項並行要求,這表示外掛程式每個串流最多可保留 16 KiB 的記憶體。請注意,記憶體總用量包含全域狀態和堆疊配置。
使用外掛程式測試工具,評估外掛程式的 CPU 和記憶體特性。
API 限制
外掛程式可以使用 Proxy-Wasm ABI 的子集。外掛程式不支援計時器、自訂指標、共用資料、共用佇列或輸出網路呼叫。
系統不支援 HTTP 尾部事件。
標頭操控的限制
任何變動 (標頭或主體區塊) 的大小上限為 128 KiB。
外掛程式無法覆寫
ext_proc串流的處理模式。部分標頭不支援透過外掛程式操控標頭。處理器會忽略這些標頭中的任何修改內容,並繼續處理要求。
媒體 CDN 外掛程式不支援下列項目:
- 標題:
CDN-Loop、connection、keep-alive、proxy-authenticate、proxy-authorization、proxy-connection、te、trailers、transfer-encoding、upgrade或X-user-IP。 - 開頭為
x-forwarded、x-goog-、x-google、x-gfe或x-amz-的標題。
Cloud Load Balancing 外掛程式不支援下列項目:
標頭:
connection、keep-alive、proxy-authenticate、proxy-authorization、proxy-connection、sec-user-ip、te、trailer、transfer-encoding、upgrade、x-dont-count-ads、x-dont-show-ads、x-gr、x-proxyuser-ip或x-user-ip。此外,對於
LbTrafficExtension,系統也不支援下列標頭:method、authority、scheme或主機標頭。開頭為
sec-gfe-、sec-google-、x-amz-、x-forwarded-、x-gfe-、x-goog-、x-google-或x-gproxy-的標題。
- 標題:
HTTP/1.1 用戶端和後端的限制
為擴充功能設定 REQUEST_BODY 或 RESPONSE_BODY 時,如果負載平衡器收到相符要求,就會從回應中移除 Content-Length 標頭,並切換至分塊主體編碼。