数据流是否应该使用发布/订阅主题或订阅中的事件?

时间:2019-05-24 15:12:05

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

我正在使用Dataflow将事件从PubSub流式传输到BigQuery。我看到在GCP中有两个用于执行此操作的模板:一个是Dataflow从某个主题读取消息的模板;另一个是还有一个来自订阅。

在这里使用订阅而不是仅使用主题中的事件有什么好处?

2 个答案:

答案 0 :(得分:2)

  

核心概念

     
      
  • 主题::发布者向其发送消息的命名资源。

  •   
  • 订阅:一种命名资源,代表来自单个特定主题的消息流,该消息流将传递给订阅   应用程序。

  •   

根据核心概念,区别非常简单:

  • 当您要发布消息从数据流到发布/订阅(实际上是给定主题)时,请使用主题

    < / li>
  • 使用来自数据流中发布/订阅的邮件,请使用订阅

因此,就您而言,请订阅

更多信息:

请注意,Pub / Sub使用自己的消息存储库来管理主题。但是,当您同时希望在BigQuery中移动这些消息(并最终执行自己的分析)时, BigQuery的Cloud Pub / Sub主题模板特别有用。

  

BigQuery模板的Cloud Pub / Sub主题是流传输管道   从Cloud Pub / Sub主题读取JSON格式的消息,然后   将它们写入BigQuery表。您可以快速使用模板   将Cloud Pub / Sub数据移至BigQuery的解决方案。模板读取   来自Cloud Pub / Sub的JSON格式的消息并将其转换为   BigQuery元素。

https://cloud.google.com/dataflow/docs/guides/templates/provided-streaming#cloudpubsubtobigquery

答案 1 :(得分:1)

“ BigQuery主题”和“ BigQuery订阅”这两个模板都会使用Pub / Sub中的消息,并将其流式传输到BigQuery中。

如果您使用从主题到BigQuery模板,则Dataflow会在后台为您创建一个从指定主题读取的订阅。如果您使用Subscription to BigQuery模板,则需要提供自己的订阅。

您可以通过创建从同一主题读取的多个连接到订阅的BigQuery管道,使用“订阅到BigQuery模板”来模拟“主题到BigQuery”模板的行为。

对于新部署,首选使用Subscription to BigQuery模板。如果使用Topic to BigQuery模板停止并重新启动管道,则会创建新的订阅,这可能会导致您丢失一些在管道关闭时发布的消息。订阅BigQuery模板没有此缺点,因为即使重新启动管道后,它也使用相同的订阅。