Google Pub/Sub 多个主题 vs 多个订阅过滤器

use*_*373 3 google-cloud-platform google-cloud-pubsub

我正在开发一个分布式高度可扩展的应用程序,使用 Google Pub/Sub 作为消息代理。在阅读这些文章时,我喜欢 pub/sub 的订阅过滤器功能。

我正在考虑拥有一个具有多个订阅的主题。多个发布者将向同一主题发布离散消息。每个订阅将使用属性过滤器来提取特定于其要求的消息。

有谁知道使用发布/订阅过滤器的缺点?我应该继续采用这种单一主题的方法还是为每种消息类型创建单独的主题?

Kam*_*osn 8

使用过滤器的多个订阅或多个主题之间的选择归结为以下几点:

  1. 订阅者是否需要来自多个发布者的消息?如果是这样,单个主题可能更有意义,这样您的订阅者就不必了解并在许多不同的订阅上创建订阅者。还有一个问题是订阅者如何发现它需要订阅的订阅集。当然,您可以通过将所有订阅指向同一端点来使用推送而不是拉取,这样订阅者就不需要知道订阅列表。
  2. 来自不同发布者的消息是否属于同一类型?如果是的话,那么单个主题就有意义了。然而,如果消息的类型都不同,那么单独的主题可能更有意义。否则,这有点像List<Object>Java 中的每个项目都是不同的子类。
  3. 吞吐量是多少?即使使用过滤器,您仍然需要为被过滤掉的消息付费。因此,如果您有 10 个关于同一主题的订阅,每个订阅都过滤并获取 1/10 的消息,您仍然需要为 10 次消息传送付费。当然,您无需为处理这些消息的实际处理能力付费,也无需支付任何区域间网络成本,但您仍将为过滤掉的消息支付 40 美元/TB 的费用。如果您有大量订阅和大量消息,这可能会变得昂贵。