相当于Google Cloud Platform上的Kafka/AWS Kinesis Stream

Ren*_*nan 13 amazon-web-services apache-kafka google-cloud-platform amazon-kinesis google-cloud-pubsub

我正在构建一个不断附加缓冲区的应用程序,而许多读者独立地使用此缓冲区(一次写入多次读取/ WORM).起初我想过使用Apache Kafka,但由于我更喜欢​​as-a-service选项,我开始调查AWS Kinesis Streams + KCL,看来我可以用它们来完成这项任务.

基本上我需要2个功能:排序(所有读者必须以相同的顺序读取事件)以及从读者开始消费的缓冲区中选择偏移量的能力.

现在我也在评估Google Cloud Platform.在我阅读文档时,似乎建议Google Pub/Sub与AWS Kinesis Stream等效,但在更详细的层面上,这些产品似乎有很多不同:

  • Kinesis保证在碎片内部进行订购,而在Pub/Sub订购时则是尽力而为;
  • Kinesis具有读者可用的所有缓冲区(限制为最多7天),可以使用偏移量来选择起始读取位置,而在PubSub上,只有订阅后的消息可用于消费.

如果我做对了,PubSub不能被认为是Kinesis的等价物.也许如果与Google Dataflow一起使用?我必须承认,我仍然看不出如何.

那么,PubSub是Kinesis的替代品吗?如果没有,是否有符合我要求的Google云端产品?

谢谢!

小智 8

Pub/Sub 现在支持本机排序。至于在消费之前要求订阅(~Kafka 中的消费者组)存在的要求,对于用户来说很少有问题。如果不出意外,您可以创建快照,以便将新订阅重置为任何其他现有订阅的状态。

这有点晚了,但是@Renan,如果您仍在观看,很想听听您最终如何构建系统。

  • 感谢您分享有关本机排序的信息,这是一个很好的功能!最后我最初使用AWS Kinesis,然后迁移到Kafka(由于与本文无关的其他原因)。 (2认同)

HJE*_*JED 5

一个相当复杂的解决方案,但可能会有所帮助:

  • 使用pub / sub将事件推送到单个主题。此时,它们将是无序的。
  • 创建一个从pub / sub主题读取的云数据流流传输管道。让它进行流写入至云大查询,然后向每个表条目添加时间戳。
  • 您的读者是否对bq表进行查询,请按时间戳顺序进行排序以保持一致的顺序。您可以使用ROW_NUMBER作为偏移量。

希望能有所帮助。

  • @Renan(如果您不打算实施[在Pub / Sub中订购消息的推荐方法]之一)(https://cloud.google.com/pubsub/docs/subscriber#at-least-once-delivery),托管[在Compute Engine上的Kafka](https://pantheon.corp.google.com/launcher/details/bitnami-launchpad/kafka?project=javatester-1002&organizationId=433637338589)的方法确实是您的最佳选择。请注意,发布/订阅工程师一直在努力实现消息排序,但是此功能目前没有ETA。 (2认同)
  • @Jordan我可以尝试实现一种排序方法。但是我最想念的是能够从一个已知的,错误的偏移量开始读取缓冲区的能力(如果我没有记错的话,最大可用性限制为7天)。我的理解是,在PubSub中,我只能接收订阅后发布的消息,而看不到以前的消息。如果您认为这将有助于阐述100%的Google Cloud解决方案,那么我可能会更新我的问题以提供更多背景知识。谢谢! (2认同)
  • @Renan寻找上一条消息也几乎可以发布了!您可以看到在此[旧Google网上论坛表单](https://groups.google.com/forum/#!searchin/cloud-pubsub-discuss/offset|sort:relevance/cloud-pubsub-discuss / 1uLYENQKFQc / AyBRmtwDBAAJ)。我没有这些新功能的预计上市时间,但它们确实非常接近发布到Pub / Sub生产中! (2认同)