Google PCD: API 設計、整合與事件驅動開發 — 學習指南

屬於 Google Professional Cloud Developer — 學習指南. 使用經過驗證的解答練習: Google 考試中心, 或參加限時模擬考試: ExamRoll.io.

總覽

在 Google Cloud 上的現代應用程式整合,融合了設計精良的同步 API 與具備韌性的非同步及事件驅動模式。其目標是提供清晰的契約、強大的身分識別、一致的錯誤處理以及操作控制,即使在發生故障、擴展或變更的情況下,也能保持低延遲和高可用性。本節涵蓋協定與 API 的選擇、閘道與驗證、訊息傳遞與事件路由、背景作業、編排、服務間的身分識別與信任、可靠性模式、安全的 webhook 以及安全的 schema 演進。

API 設計與管理

選擇正確的協定:

版本控制與分頁:

驗證與錯誤:

API 管理的選擇:

驗證與配額:

使用 Cloud Run 後端和 OIDC 的 API Gateway 最小 OpenAPI 範例:

openapi: 3.0.0
info: {title: orders, version: 1.0.0}
paths:
  /v1/orders:
    get:
      security: [{firebase: []}]
      x-google-backend: {address: https://orders-xyz-uc.a.run.app}
      responses: {"200": {description: OK}}
components:
  securitySchemes:
    firebase:
      type: http
      scheme: bearer
      bearerFormat: JWT
      x-google-issuer: https://securetoken.google.com/PROJECT_ID
      x-google-audiences: PROJECT_ID

非同步訊息傳遞與事件處理

Pub/Sub 基礎:

建立主題、訂閱和 DLQ:

gcloud pubsub topics create orders
gcloud pubsub topics create orders-dlq
gcloud pubsub subscriptions create orders-sub \
  --topic=orders \
  --dead-letter-topic=orders-dlq \
  --max-delivery-attempts=5 \
  --ack-deadline=30

消費者端的考量:實作冪等處理器和去重複機制 (例如,透過 messageId 或應用程式層級的冪等鍵);對於暫時性錯誤,使用退避 (backoff) 機制進行重試;將無法復原的訊息移至 DLQ 並發出警報。

Eventarc 與 CloudEvents:

為 Cloud Storage 物件完成事件建立 Eventarc 觸發器:

gcloud eventarc triggers create index-new-objects \
  --destination-run-service=media-indexer \
  --destination-run-region=us-central1 \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=my-assets-bucket" \
  --service-account=eventarc-router@PROJECT_ID.iam.gserviceaccount.com

權衡:

編排、背景作業與長時間執行的程序

Cloud Tasks:

建立具有速率限制和重試機制的佇列:

gcloud tasks queues create payments-queue \
  --max-dispatches-per-second=50 \
  --max-concurrent-dispatches=200 \
  --max-attempts=10 \
  --min-backoff=5s \
  --max-backoff=300s

Workflows:

補償流程示意:

main:
  params: [orderId]
  steps:
  - charge:
      call: http.post
      args: {url: ${paymentsUrl}/charge, auth: {type: OIDC}, body: {orderId: ${orderId}}}
      result: chargeRes
  - reserveInventory:
      try:
        steps:
        - reserve:
            call: http.post
            args: {url: ${inventoryUrl}/reserve, auth: {type: OIDC}, body: {orderId: ${orderId}}}
      except:
        as: e
        steps:
        - refund:
            call: http.post
            args: {url: ${paymentsUrl}/refund, auth: {type: OIDC}, body: {paymentId: ${chargeRes.body.id}}}
        - raise: ${e}

操作指引:

身分認證、可靠性與整合

服務對服務的身分認證與權杖傳遞:

在 Cloud Run 中取得 ID 權杖:

AUD="https://inventory-xyz-uc.a.run.app"
TOKEN=$(curl -s -H "Metadata-Flavor: Google" \
  "http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=${AUD}")
curl -H "Authorization: Bearer ${TOKEN}" "${AUD}/v1/check"

同步依賴與彈性:

Webhook 與第三方整合:

結構演進與相容性:

整個技術堆疊的安全性與配額:

實務問題情境

AcmeRetail 正在 Google Cloud 上建立一個「點擊取貨」(click-to-collect)服務。一個 React 網頁應用程式呼叫一個公開的 API 來下訂單;後端服務必須預留庫存、收取款項並通知店家。團隊需要低延遲的 API、可靠的背景處理、事件驅動的更新,以及在部分失敗時的安全回滾機制。

方法:

  1. 透過 API Gateway 將一個公開的 REST API 暴露在一個 Cloud Run 訂單服務之前。
  1. 對於內部熱門路徑(訂單到庫存、定價),使用 gRPC 實現服務對服務的呼叫。
  1. 使用 Workflows 來協調訂單的 saga 模式:收取款項、預留庫存、建立取貨任務;並在失敗時進行補償。
  1. 將領域事件發布到 Pub/Sub 的 orders 和 inventory 主題,供下游消費者(分析、店家通知)使用。
  1. 當 Cloud Storage 和 Firestore 發生相關變更時,透過 Eventarc 觸發店家通知,傳送到一個 Cloud Run 通知服務。
  1. 使用一個專用的 Cloud Run 端點處理支付供應商的 webhook,該端點由 API Gateway 保護,並驗證 HMAC 簽章,同時使用 Cloud Tasks 進行處理。
  1. 強制執行可靠性模式:在 Apigee 或 Envoy 上為對支付供應商的對外呼叫設置斷路器;將用戶端逾時設定在供應商的 SLA 以下;對 429/5xx 錯誤使用截斷指數退避進行重試。
  1. 採用結構演進控制:內部 gRPC 使用帶有保留欄位的 Protobuf;REST 回應使用附加性的 JSON 變更;Pub/Sub 在發布時使用 Protobuf 結構驗證。
  1. 觀測與操作:在 API Gateway 和服務之間傳遞追蹤標頭;匯出 Cloud Logging 指標以監控錯誤率和 DLQ 大小;針對 SLO 耗用和 429/5xx 異常情況發出警報。

運算、容器與 Serverless 執行階段平台 · 所有領域 · 應用程式資料、狀態與儲存模式

練習這些題目 → · 在 ExamRoll.io 上限時練習 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

通過考試 →

瀏覽 Google →

Related guides

一站式存取

一份訂閱。所有考試。

每個方案都可無限存取答案搜尋、練習測驗、AI 解釋和完整的資源庫 — 支援 20 多種語言。

每月
24.87
Just €0.83/day
包含所有內容:
  • 無限答案搜尋
  • 無限練習測驗
  • AI 驅動的解釋
  • 完整資源庫
  • 20 多種語言
  • 每週內容更新
  • 獎勵與推薦
  • 優先支援
開始免費試用

無需信用卡*

最佳價值
12 個月
179.87
Just €0.49/daySave 40%
包含所有內容:
  • 無限答案搜尋
  • 無限練習測驗
  • AI 驅動的解釋
  • 完整資源庫
  • 20 多種語言
  • 每週內容更新
  • 獎勵與推薦
  • 優先支援
開始免費試用

無需信用卡*

✓ 包含免費方案 · ✓ 隨時取消 · ✓ 所有方案解鎖完整產品