外掛程式總覽

本頁面提供外掛程式與 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,執行下列操作:

  1. 準備外掛程式程式碼,如下所示:

    1. 使用其中一個 Proxy-Wasm SDK 建立自訂程式碼:

    2. 將程式碼編譯為 Wasm 模組。

    3. 將編譯後的外掛程式碼上傳至 Artifact Registry 存放區。

  2. 建立外掛程式,其中包含上傳的外掛程式程式碼。

  3. 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-Loopconnectionkeep-aliveproxy-authenticateproxy-authorizationproxy-connectiontetrailerstransfer-encodingupgradeX-user-IP
    • 開頭為 x-forwardedx-goog-x-googlex-gfex-amz- 的標題。

    Cloud Load Balancing 外掛程式不支援下列項目:

    • 標頭:connectionkeep-aliveproxy-authenticateproxy-authorizationproxy-connectionsec-user-iptetrailertransfer-encodingupgradex-dont-count-adsx-dont-show-adsx-grx-proxyuser-ipx-user-ip

      此外,對於 LbTrafficExtension,系統也不支援下列標頭:methodauthorityscheme 或主機標頭。

    • 開頭為 sec-gfe-sec-google-x-amz-x-forwarded-x-gfe-x-goog-x-google-x-gproxy- 的標題。

HTTP/1.1 用戶端和後端的限制

為擴充功能設定 REQUEST_BODYRESPONSE_BODY 時,如果負載平衡器收到相符要求,就會從回應中移除 Content-Length 標頭,並切換至分塊主體編碼。

後續步驟