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

时间:2017-09-11 20:29:07

标签: 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云端平台。在我阅读文档时,似乎Google Pub / Sub被建议与AWS Kinesis Stream等效,但在更详细的层面上,这些产品似乎有很多不同:

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

如果我做对了,PubSub不能被认为是Kinesis的等价物。也许如果与Google Dataflow一起使用?我必须承认我仍然无法理解。

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

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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

希望有所帮助。

答案 1 :(得分:2)

Pub/Sub 现在支持 ordering natively。至于在消费之前需要订阅(Kafka中的~consumer group),这对用户来说很少是问题。如果不出意外,您可以创建 snapshots,它允许您将新订阅重置为任何其他现有订阅的状态。

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