与对象更改通知相比,Google Club Pub/Sub 的可扩展性如何
Posted
技术标签:
【中文标题】与对象更改通知相比,Google Club Pub/Sub 的可扩展性如何【英文标题】:How scalable are Google Club Pub/Sub compared Object Change Notifications 【发布时间】:2017-09-07 14:26:50 【问题描述】:正如标题所问,在使用签名 URL 上传对象时,与 Google Cloud Storage 中的对象更改通知相比,Google Club Pub/Sub 的可扩展性如何?
在能够在短时间内处理许多上传的对象方面,它们之间的比较如何?如果快速上传许多对象,交付会更慢吗?例如,1000 个对象/秒?
如果两者都不可扩展,还有哪些其他选择?
出于我的目的,我需要上传一张图片,然后当通知发送到我的 Google App Engine 应用程序时,我需要写入我的数据库。上传图片和通知之间的时间间隔很重要(最多 2-3 秒)。
【问题讨论】:
【参考方案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? 是的,如果您上传带有一些自定义对象元数据的对象,那么当通知到达时,这些额外的元数据将可用。 还有一个与此相关的问题:***.com/questions/43360536/…以上是关于与对象更改通知相比,Google Club Pub/Sub 的可扩展性如何的主要内容,如果未能解决你的问题,请参考以下文章
为了在 Google Cloud 中启用 Cloud Pub/Sub 作为通知通道,必须做些啥
在 Google Cloud Pub/Sub 中处理订阅过滤器更改的最佳方式是啥?
Google API:通过 Google Talk 通知日历条目更改