Skip to content
返回云服务

GCP Pub/Sub 消息

全球消息 — 至少一次投递、排序、schema 注册和推/拉订阅。

GCP进阶

为什么

Pub/Sub 伸缩到百万消息/秒、全球、无 broker 管理。10GB/月免费。按键排序、schema 注册 Avro/Protobuf。推到 HTTP 端点或拉。

何时使用

事件流、异步工作、微服务通信时用。避免跨键严格排序(用排序键)或事务(用 Cloud Spanner)。

如何做

1. 主题 — gcloud pubsub topics create my-topic 2. 订阅 — 拉或推(HTTP 端点) 3. 发布 — gcloud pubsub topics publish my-topic --message "..." 4. 排序 — --ordering-key、同键消息有序 5. Schema — Avro/Protobuf、验证消息 6. 死信 — maxDeliveryAttempts、路由失败 7. 过滤 — 订阅过滤表达式、仅匹配消息 8. 精确一次 — 启用、按消息 ID 去重

示例

# 创建带排序的主题 + 订阅 gcloud pubsub topics create orders --ordering-key-order gcloud pubsub subscriptions create order-processor \ --topic orders \ --enable-message-ordering \ --dead-letter-topic orders-dlq \ --max-delivery-attempts 10 // 用排序键发布 import { PubSub } from "@google-cloud/pubsub"; const pubsub = new PubSub(); await pubsub.topic("orders").publishMessage({ data: Buffer.from(JSON.stringify({ orderId: "456" })), orderingKey: "user-123", // 此用户消息有序 }); // 拉订阅 const sub = pubsub.subscription("order-processor"); sub.on("message", (msg) => { process(JSON.parse(msg.data.toString())); msg.ack(); });

常见问题

  • ⚠重复消息 — 至少一次、消费者幂等
  • ⚠无全局排序 — 仅按排序键、相应设计
  • ⚠背压 — 用流控、勿比处理快 ack

最佳实践

  • ✓消费者幂等 — 至少一次意味重复、按 ID 去重
  • ✓相关消息用排序键 — 每键保序、跨键并行
  • ✓设死信主题 — 捕获失败、防无限重试

常见问题解答

什么是GCP Pub/Sub 消息?它解决什么问题?

全球消息 — 至少一次投递、排序、schema 注册和推/拉订阅。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手GCP Pub/Sub 消息?

两步即可跑通:① 主题 — gcloud pubsub topics create my-topic;② 订阅 — 拉或推(HTTP 端点)。建议先用免费套餐验证流程,再接入生产环境。

GCP Pub/Sub 消息 最容易踩的坑是什么?

最高频的问题是:重复消息 — 至少一次、消费者幂等。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

GCP Pub/Sub 消息 的最佳实践有哪些?

GCP Pub/Sub 消息 的最佳实践包括:消费者幂等 — 至少一次意味重复、按 ID 去重;相关消息用排序键 — 每键保序、跨键并行;设死信主题 — 捕获失败、防无限重试。其中首条「消费者幂等 — 至少一次意味重复、按 ID 去重」应作为团队默认规范写入 IaC 模板。

GCP Pub/Sub 消息 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。GCP Pub/Sub 消息 多数提供免费套餐,先在免费额度内验证再放量。