【问题标题】:我可以对 Google Cloud Pub/Sub 消息大小限制做些什么?
【发布时间】:2022-01-23 11:03:45
【问题描述】:

因此,消息大小限制为 10Mb。

我一直使用 Pub/Sub 作为数据管道的输入和输出,因为它具有低延迟。这里的假设是 Pub/Sub 是 Google Cloud 上将数据拉入 Compute Engine 实例并一次将一个(或几个)数据点(不是以批处理方式)推出该实例的最快机制。然后具有 pub/sub 推送订阅的 Cloud Function 将输出写入 BigQuery。

我处理的 99% 的数据不超过 1MB。但也有一些异常值超过 10MB。

我能做些什么呢?利用某种压缩?将输出写入 Cloud Storage 而不是 Pub/Sub?也许到一个持久的SSD?我想确保我的计算实例一次消化一个数据点,并以最少的时间拉取和推送数据以及最多的转换时间来输出输出。

【问题讨论】:

  • 如果您的消息大于几 KB,那么您的设计不正确。发布一条消息,其中包含指向存储在 Cloud Storage 上的数据的链接。 PubSub 是一个消息传递系统,而不是数据传输系统。性能会提高,成本会降低。请参阅@guillaume-blaquiere 正确答案。除非您有大量 CPU 周期可以浪费,否则不要使用压缩。
  • 正如我所说,超过 99% 的消息小于 1MB。将 GCS 添加到这种组合中会引入许多不必要的复杂性和延迟。我 99% 的数据处理成本 98% 用于计算,0.5% 用于 Cloud Pub/Sub,1.5% 用于其他东西。让我的计算实例等待 GCS 上传/下载会花费更多。你还觉得我的设计不对吗?
  • 极端案例决定了设计是否正确。您回答了自己的问题。

标签: google-cloud-platform google-cloud-pubsub


【解决方案1】:

最安全和最具可扩展性的方法是将数据保存到 Cloud Storage 并仅在 PubSub 中发布文件引用,而不是内容。这也是最具成本效益的方式。

如果数据是可压缩的,您也可以想象压缩数据。它可能比使用 Cloud Storage 更快,但没有那么可扩展。

【讨论】:

  • Pub/Sub 是否有内置压缩 API?或者我想用自定义代码压缩和解压它?
  • 不,这是自定义代码。用于压缩/解压缩消息内容的自定义代码,或用于向 Cloud Storage 写入/读取的自定义代码。在这两种情况下,您都必须编写代码。最低延迟是不使用 GCS。
猜你喜欢
  • 1970-01-01
  • 2017-09-28
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2018-09-13
  • 2020-08-16
  • 1970-01-01
相关资源
最近更新 更多