【问题标题】:How scalable are Google Club Pub/Sub compared Object Change Notifications与对象更改通知相比,Google Club Pub/Sub 的可扩展性如何
【发布时间】:2017-09-07 14:26:50
【问题描述】:

正如标题所问,在使用签名 URL 上传对象时,与 Google Cloud Storage 中的对象更改通知相比,Google Club Pub/Sub 的可扩展性如何?

在能够在短时间内处理许多上传的对象方面,它们之间的比较如何?如果快速上传许多对象,交付会更慢吗?例如,1000 个对象/秒?

如果两者都不可扩展,还有哪些其他选择?

出于我的目的,我需要上传一张图片,然后当通知发送到我的 Google App Engine 应用程序时,我需要写入我的数据库。上传图片和通知之间的时间间隔很重要(最多 2-3 秒)。

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-cloud-storage google-cloud-pubsub


    【解决方案1】:

    在每秒 1000 次对象更改时,您希望使用 Cloud Pub/Sub 通知。

    对象更改通知和 Cloud Pub/Sub 通知都可以在 1000 QPS 下正常工作。但是,在这种负载下,有几个理由更喜欢 Cloud Pub/Sub。

    首先,Cloud Pub/Sub 订阅支持拉取消息。通过一次调用 pull(),您可以一次检索 100 条或更多消息,然后通过一次调用 acknowledge() 将它们全部确认。对象更改通知总是在每条消息中调用一次您的服务。使用 Cloud Pub/Sub 可以立即将您的服务器需要处理的 RPC 数量减少两个数量级。

    其次,在高 QPS 下,您将需要开始考虑失败、超时和重试。出于各种原因,Cloud Pub/Sub 在这里也是一个更好的选择。一方面,它支持可配置的确认截止日期,而对象更改通知始终必须在 20 秒内处理。另一方面,您可以查询以查看当前积压的大小,以防您落后。如果您使用推送订阅,如果您的消息接收器离线一段时间,Cloud Pub/Sub 的流量也会更加友好,因此您不会在自己的服务器恢复在线时不堪重负。

    第三,灵活性。 Cloud Pub/Sub 就是围绕这个用例设计的。接收大量消息是他们的全部生计,并且有许多功能和库专注于它。不过,云存储专注于存储数据。对象更改通知有效,但它永远不会提供与 Cloud Pub/Sub 一样多的通知功能。

    【讨论】:

    • 太棒了!感谢您的详细描述。上传带有签名 URL 的对象时是否也可以传递自定义标头,然后由 Cloud Pub/Sub 传递给 servlet?
    • 是的,如果您上传带有一些自定义对象元数据的对象,那么当通知到达时,这些额外的元数据将可用。
    • 还有一个与此相关的问题:stackoverflow.com/questions/43360536/…
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2020-06-23
    • 2018-10-08
    • 2020-01-17
    • 2018-09-08
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多