【发布时间】:2018-03-26 01:48:39
【问题描述】:
我在 GCP 上有一个后端服务器集群,它们需要相互发送消息。所有服务器都需要接收每条消息,但我可以容忍低错误率。我可以处理在给定服务器上多次接收消息。数据包排序无关紧要。
我不需要太多的持久层。消息在发送后几秒钟内就会失效。
我连接了 Google Cloud PubSub 并很快意识到,对于给定的订阅,您可以拥有任意数量的订阅者,但只能保证其中一个订阅者会收到消息。我考虑过让所有订阅者都无法确认它,但这似乎是一种粗俗的黑客行为,可能不会很好地工作。
我的服务器集群由自动缩放器动态调整大小。它根据需要使用动态主机名和 IP 地址启动 VM 实例。没有方便的方法将动态主机映射到静态订阅,但感觉这是我唯一真正的选择:创建比我的最大服务器池大小更多的订阅,然后使用某种 paxos 系统(运行时配置、zookeeper 等)为订阅分配服务器。
我开始觉得,即使我的用例感觉非常简单(“每台服务器都可以向我组中的每台其他服务器多播一条消息”),但它可能并不适合 Cloud PubSub。
我应该使用 GCM/FCM 吗?还是其他一些技术?
【问题讨论】:
标签: rabbitmq google-cloud-messaging message-queue multicast google-cloud-pubsub