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 或应用层面的幂等键);对瞬时错误使用退避策略进行重试;将无法恢复的消息移至 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 与第三方集成:

Schema 演进与兼容性:

整个技术栈的安全与配额:

实际问题场景

AcmeRetail 正在 Google Cloud 上构建一个“线上购物、线下提货”服务。一个 React Web 应用调用公共 API 来下单;后端服务必须预留库存、处理支付并通知门店。团队需要低延迟的 API、可靠的后台处理、事件驱动的更新以及在部分失败时的安全回滚。

方法:

  1. 通过 API Gateway 在 Cloud Run 订单服务前暴露一个公共 REST API。
  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. 采用 Schema 演进控制:内部 gRPC 使用带有 reserved 字段的 Protobuf;REST 响应使用增量式 JSON 变更;Pub/Sub 在发布时使用 Protobuf schema 验证。
  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多种语言
  • 每周内容更新
  • 奖励与推荐
  • 优先支持
开始免费试用

无需信用卡*

✓ 包含免费计划 · ✓ 随时取消 · ✓ 所有计划均解锁完整产品