design-patterns - 为什么使用 Gcloud Pub/Sub?
问题描述
为什么使用 Pub/Sub?用例:有一个 http 触发的“云功能”在其上发送一些数据。此函数在处理数据后,将数据发布到 Pub/Sub 主题。
然后是另一个 Cloud 函数,它是基于发布到该 Pub/sub 主题而触发的。因此,此 Cloud 函数从 pub/sub 获取已发布的数据并将其插入到 BigQuery 表中。
所以在这个用例中为什么要使用 pub sub,为什么我们不能只拥有一个从 http 命中获取数据并将其插入 BigQuery 的云函数。在这里选择 pub/sub 的设计思路是什么?
通常为什么使用 Pub/sub 架构?
解决方案
在此架构中使用 Cloud Pub/Sub 可能有多种原因。一个原因是,如果有任何扇出或计划扇出,发布的数据不仅会出现在 BigQuery 中,还会出现在其他地方。如果没有 Pub/Sub,http 触发的 Cloud Function 必须了解所有感兴趣的数据接收者,并将其发送给每个接收者。使用 Pub/Sub,任何对传入数据感兴趣的附加服务都可以对数据创建单独的订阅,并独立于 BigQuery 使用它。
另一个原因是能够将数据批量插入 BigQuery,而不会增加对初始 Cloud Function 的 http 请求的延迟。这可能是为了提高效率或对传入的数据进行某种跨事件预处理。通过使用 Pub/Sub,第一个 Cloud Function 可以在发布到 Cloud Pub/Sub 成功后立即响应请求,不必等待任何其他请求,并且可以确定该请求最终会得到处理。
在现在或将来没有这两个的情况下,直接写入 BigQuery 可能是有意义的。
推荐阅读
- javascript - 如何将所有更改的数据保存在详细信息网格(表格)中
- gmail - 从 Gmail API 发送的电子邮件将进入垃圾邮件
- python - Python按第一个元素排序二维数组(不是唯一的)
- google-apps-script - 如何编写条件 Gmail 插件触发器?
- jquery - 我的 Jquery 仅在页面刷新时有效?
- java - 使用 sourceSets 时,AndroidManifest.xml 中的资源链接失败
- java - java - 如何从catch块转到java中的try块?
- active-directory - Azure AD 多租户应用程序不可预测的行为?
- cron - 在 cron 中转义哈希 (#)
- php - 如果它们共享相同的ID,则将它们附加在一起