GCP 数据流的推送与拉取

Posted

技术标签:

【中文标题】GCP 数据流的推送与拉取【英文标题】:Push vs Pull for GCP Dataflow 【发布时间】:2020-11-09 19:46:59 【问题描述】:

我想知道应该在 GCP pubsub 中创建哪种类型的订阅,以便处理来自 pubsub 主题的高频数据。 我将以每秒 100 多条消息的速度在数据流中摄取数据。 拉取或推送订阅真的很重要,以及它将如何影响速度等等。

【问题讨论】:

欢迎来到 *** =) 请检查如何提出一个好问题:***.com/help/how-to-ask。多花几分钟让你的问题清晰具体,将极大地改善某人回答问题的变化,并且答案很有帮助。 【参考方案1】:

如果您通过 Dataflow 使用 PubSub 订阅,则只有 Pull 订阅可用

要么创建一个,然后在数据流管道的参数中提供它 或者您仅在数据流管道中指定主题,Dataflow 将自行创建拉取订阅。

如果这两种情况,Dataflow 将以流模式处理消息

区别

如果您自己创建订阅,所有消息将被存储和保留(默认最多 7 天),并在数据流管道启动时使用。

如果您让 Dataflow 创建订阅,则只有在订阅创建之后到达的消息才会被数据流管道使用。如果您不想丢失消息,则不推荐使用此解决方案。如果你不关心旧消息,这是一个不错的选择。

高频

那么,每秒100条消息绝对不是高频。 1 个 pubsub 主题每秒最多可以摄取 1 000 000 条消息。别担心!

推VS拉

型号不同。

使用推送订阅,您必须指定一个使用该消息的 HTTP 端点(在 GCP 或其他地方)。这是一个 webhook 模式。如果平台端点随流量自动扩展(例如 Cloud Run、Cloud Functions),则消息速率可能会非常高!! HTTP 返回码代表消息确认。 使用拉订阅,客户端需要打开订阅连接,然后拉消息。客户端需要明确地确认消息。可以同时连接多个客户端。使用客户端库,消息通过 gRPC 协议使用,接收和使用消息的效率更高(在网络带宽方面)

安全角度

使用推送,如果端点需要身份验证,则它是要在 HTTP 端点上进行身份验证的 PubSub

使用 pull 时,需要在 PubSub 订阅上对客户端进行身份验证。

【讨论】:

以上是关于GCP 数据流的推送与拉取的主要内容,如果未能解决你的问题,请参考以下文章

GCP Pubsub 主题持续时间中存在的消息数

[git]-本地创建仓库并推送GitHub服务器

git解决冲突,在乌龟工具中一定要点击提交

消息传输推与拉的比较

IM系统:消息推送及离线存储

终端对平台推送拉取数据选型