我正在构建一个应用程序,它不断地附加到一个缓冲区,而许多读卡器独立地使用这个缓冲区(write-once-read-many/worm)。起初我想使用apachekafka,但由于我更喜欢as-a-service选项,我开始研究aws kinesis streams+kcl,似乎我可以用它们完成这个任务。
基本上我需要两个特性:排序(所有读卡器必须以相同的顺序读取事件)和选择缓冲区中从读卡器开始消费的偏移量的能力。
现在我也在评估谷歌云平台。当我阅读文档时,似乎建议将google pub/sub等同于aws kinesis stream,但在更详细的层面上,这些产品似乎有很多不同:
kinesis保证在shard中进行订购,而在pub/sub上订购则是在尽力而为的基础上进行的;
kinesis有所有的缓冲区(最多7天)可供读者使用,它可以使用偏移量来选择开始阅读的位置,而在pubsub上,只有订阅后的消息可供使用。
如果我没弄错的话,pubsub不能被认为是一个运动等价物。如果和googledataflow一起使用呢?我必须承认,我还是不知道该怎么做。
那么,pubsub是运动的替代品吗?如果没有,是否有一个谷歌云产品可以满足我的要求?
谢谢!
1条答案
按热度按时间3bygqnnd1#
一个相当复杂的解决方案,但它可能有帮助:
使用pub/sub将事件推到单个主题。在这一点上,它们将是无序的。
创建从发布/子主题读取的云数据流管道。让它对CloudBigQuery进行流式写入,为每个表条目添加一个时间戳。
您的读者对bq表进行查询,按时间戳排序以获得一致的顺序。您可以使用行号作为偏移量。
希望有帮助。