从 Pub/Sub Lite 迁移到 Pub/Sub

本文档介绍了如何将 Pub/Sub Lite 应用和数据从 Pub/Sub Lite 迁移到 Pub/Sub。

如需迁移到 Pub/Sub,您可以使用 Pub/Sub Lite 的导出订阅功能。导出订阅功能使用一种称为导出订阅的订阅类型,将 Pub/Sub Lite 消息转换为 Pub/Sub 消息。

Pub/Sub Lite 与 Pub/Sub 之间的差异

Pub/Sub 和 Pub/Sub Lite 都是可横向伸缩消息传递服务,但两者的运作方式存在一些关键差异。如需详细了解这些差异,请参阅选择 Pub/Sub 或 Pub/Sub Lite

以下部分概述了各项服务之间的一些关键区别,这些区别在服务之间迁移时很重要。其中包括以下注意事项:

  • 数据本地性和复制
  • 分发模式
  • 并行性和排序
  • 重放和清除
  • 容量管理和定价

数据本地性和复制

  • Pub/Sub Lite。区域性 Pub/Sub Lite 主题会将数据复制到同一区域内的辅助可用区。可用区级 Pub/Sub Lite 主题会将数据存储在单个可用区中,而不会进行复制。

  • Pub/Sub。Pub/Sub 会将数据复制到区域内的三个可用区。

关键迁移时间点

请务必了解每项服务复制数据的方式各不相同。

使用 Pub/Sub 时,您可以使用 Pub/Sub 消息存储政策,确保数据存储在首选区域。

  • Pub/Sub 不提供对消息存储的具体区域的控制。而是始终根据消息存储政策在一个区域内的三个可用区之间复制数据。

  • 如果您未指定消息存储政策,Pub/Sub 会根据您的资源位置限制组织政策自动确定消息的存储位置。如果您未明确设置组织政策,Pub/Sub 会允许使用所有区域,并自动选择一个区域来存储消息。

分发模式

关键迁移时间点

如果您想在 Pub/Sub 中复制 Pub/Sub Lite 行为(例如低延迟和高效率),请使用 StreamingPull API 实现使用方客户端。或者,您也可以使用其他可用的传送模式(例如推送传送)实现 Pub/Sub 订阅。

并行性和排序

  • Pub/Sub Lite。Pub/Sub Lite 支持按分区进行并行处理。

  • Pub/Sub。Pub/Sub 支持按消息并行处理。

关键迁移时间点

Pub/Sub 不是基于分区的解决方案。Pub/Sub 消息还可以并发处理,这意味着无法保证消息顺序。如果您的应用需要消息排序,请使用 Pub/Sub 排序键

在 Pub/Sub Lite 中使用导出订阅时,Pub/Sub Lite 键会用作 Pub/Sub 消息中的排序键。这样可以确保消息继续按顺序传送。

为确保与 Pub/Sub 消息兼容,请验证您的 Pub/Sub Lite 键是否仅包含 UTF-8 编码字符。

  • Pub/Sub Lite 键以字节形式存储。
  • Pub/Sub 排序键以字符串形式存储。

Pub/Sub 排序键的发布者吞吐量上限为 1 MBps。Pub/Sub 中的消息排序仅在单个区域内得到保证。如需在 Pub/Sub 中接收有序消息,您必须在订阅设置中明确启用消息排序。

重放和清除

  • Pub/Sub Lite。Pub/Sub 精简版支持还原功能,无需额外配置。

  • Pub/Sub。Pub/Sub 支持还原功能,但需要进行额外配置才能进行设置。

关键迁移时间点

如需启用跳转功能,Pub/Sub 要求您同时在主题和订阅上明确配置设置。

  • 主题:您必须配置消息保留时长
  • 订阅:您必须配置已确认消息保留。

如果您需要与 Pub/Sub Lite 完全兼容,或者您的迁移需要重放或清除消息,请务必配置这些设置。无论您的具体要求如何,在分阶段迁移期间,能够检索和重新处理消息都是一项有价值的保护措施。它支持回滚,并在出现意外问题时最大限度地减少数据丢失。

容量管理和定价

  • Pub/Sub Lite。您可以使用 Pub/Sub Lite 预配来配置存储容量和吞吐量容量,从而手动预配 Pub/Sub Lite 容量。

  • Pub/Sub。Pub/Sub 是全代管式服务,可自动扩缩。

关键迁移时间点

在迁移到 Pub/Sub 时,您可以通过设置配额替换项或请求更改 Pub/Sub 资源的配额来管理容量和价格。

管理 Pub/Sub 容量的主要原因是遵守严格的费用要求。如果您没有任何严格的费用限制,Pub/Sub 可以高效地管理资源,而无需您进行太多干预。Pub/Sub 按使用量计费。如需了解详情,请参阅 Pub/Sub 价格

规划迁移

如需从 Pub/Sub Lite 迁移到 Pub/Sub,您可以使用 Pub/Sub Lite 导出订阅功能。通过导出订阅,您可以分阶段迁移 Pub/Sub Lite 应用。采用分阶段方法可让您迭代更新、测试和监控迁移,从而最大限度地降低错误和停机时间的风险。

准备工作

  • 评估现有的 Pub/Sub 精简版应用,并确定您需要的相应 Pub/Sub 功能。
  • 确保 Pub/Sub 满足您的所有功能和业务要求。

分阶段迁移工作流

以下步骤简要介绍了导出订阅迁移工作流。

  1. 创建相关的 Pub/Sub 主题以及对该主题的订阅
  2. 创建 Pub/Sub Lite 导出订阅
  3. 同时订阅 Pub/Sub 和 Pub/Sub Lite 订阅。
  4. 逐步更新发布端,以便将消息发送到 Pub/Sub 主题,而不是 Pub/Sub 精简版主题。
  5. 验证迁移的工作负载是否按预期运行。
  6. 关闭 Pub/Sub Lite 发布端和订阅端。

迁移阶段

以下部分详细介绍了分阶段迁移工作流中的每个步骤。

创建 Pub/Sub 主题和订阅

创建相应的 Pub/Sub 主题及其订阅。 在此阶段,您需要配置所需的主题和订阅设置,例如消息保留、消息确认和消息存储政策。

根据需要,建立和设置配额,以防止过度使用和意外结算。最重要的是,我们强烈建议您设置一个 Pub/Sub Lite 死信主题,以捕获无法成功迁移到 Pub/Sub 的所有消息。这样,您就可以排查错误并找出导出失败的根本原因,并将失败的消息重新发送到正确的主题,确保不会丢失数据。

创建 Pub/Sub Lite 导出订阅

为每个主题创建一个 Pub/Sub Lite 导出订阅,以便将消息从 Pub/Sub Lite 主题导出到其对应的 Pub/Sub 主题。您可以使用 Pub/Sub 精简版预留,集中管理所有导出订阅的吞吐量,而无需为每个导出订阅单独设置吞吐量容量。在此阶段结束时,从创建导出订阅之时起,您的 Pub/Sub 精简版主题和 Pub/Sub 主题都会收到相同的消息。

然后,您可以使用 Pub/Sub 主题在隔离的阶段逐步开发和测试订阅方客户端。这种方法可最大限度地减少对现有 Pub/Sub Lite 应用的影响。

对 Pub/Sub Lite 主题和 Pub/Sub 主题进行双重订阅

在开发环境中,使用适当的 Pub/Sub 客户端库更新订阅方客户端,以便直接从 Pub/Sub 主题读取消息。与 Pub/Sub Lite 不同,Pub/Sub 提供了多种与 Pub/Sub Lite 不同,Pub/Sub 提供多种传送模式(拉取和推送),因此请选择最符合应用需求的传送模式。

  • 如需模拟与 Pub/Sub Lite 相同的行为,请使用 StreamingPull API 配置您的 Pub/Sub 实例。

  • 在包含多个使用方应用的系统中,请逐个逐步迁移每个应用。对于每个订阅方应用,并行运行 Pub/Sub Lite 订阅方和新的 Pub/Sub 订阅方,以便验证新订阅方的行为和性能。密切监控这两个订阅方,以确保消息传送一致性、错误处理和整体功能。所有订阅者都成功迁移并通过验证后,请停用旧的 Pub/Sub Lite 订阅方客户端。

更新发布商

所有订阅者都成功使用 Pub/Sub 中的消息后,您可以逐步更新发布者,以便直接将消息发送到 Pub/Sub 主题。为此,请更新发布端以使用 Pub/Sub 客户端库。这样可确保您能够逐步将流量从 Pub/Sub Lite 转移到 Pub/Sub。

停用 Pub/Sub Lite

将所有订阅者和发布者成功迁移到 Pub/Sub 后,您可以关闭 Pub/Sub Lite 资源。这有助于避免为未使用的基础架构支付不必要的费用。

后续步骤