【发布时间】:2019-03-17 11:07:55
【问题描述】:
我正在考虑构建一个简单的解决方案,其中生产者服务将事件推送到消息队列,然后让流服务通过 gRPC 流 API 提供这些服务。
Cloud Pub/Sub 似乎非常适合这项工作,但扩展流媒体服务意味着该服务的每个副本都需要创建自己的订阅并在缩减之前将其删除,这似乎不必要地复杂,而不是平台的本意为。
另一方面,Kafka 似乎在这种情况下工作得很好,但我想避免必须管理底层平台本身,而是利用云基础架构。
我还应该提到,拥有流式 API 的原因是允许流向前端(可能无法访问底层基础架构)
有没有更好的方法来使用 GCP 平台做这样的事情,而无需部署和管理我自己的基础架构?
【问题讨论】:
-
不确定我是否关注扩展说明,cloud pub sub 允许同一订阅上的多个订阅者上下扩展吞吐量,您到底是什么意思?
-
gRPC 流服务的想法是将 所有 事件流式传输到 pubsub 主题。如果同一服务的 2 个实例都订阅了同一个订阅,这意味着它们各自将收到大约 50% 的传入事件,这意味着在这 2 个实例中的任何一个上调用 API 的任何人都只会收到一半的事件。为了使流服务正常工作,每个实例都需要接收 100% 的事件,这意味着它们不能订阅相同的订阅。也许我错了?
-
当您说“这似乎不必要地复杂,而不是平台的目的”时,您指的是哪个“平台”? Cloud Pub/Sub 中的订阅本质上相当于 Kafka 中的消费者组。您发现两者之间有什么主要区别吗?
-
听起来您希望每个实例跟踪所有事件,如果您要添加实例以增加查询容量,您可能希望按照 CQRS 分离职责(即查询数据存储的查询节点并摄取将事件推送到其中的节点)
-
@KamalAboul-Hosn 我指的是为服务的每个实例动态生成一个新订阅,以获取本质上是短暂消息的内容,并确保在实例关闭时删除订阅,因此它不花钱。在 kafka 中,我可以只有一个主题并附加单独的订阅者,每个订阅者都可以独立跟踪自己在队列中的偏移量
标签: google-cloud-platform google-cloud-pubsub event-stream