apache-kafka - 我正在评估 Google Pub/Sub 与 Kafka。有什么区别?

标签 apache-kafka google-cloud-pubsub

我对kafka的工作不多,但想在GCE中构建数据管道。所以我们想了解 Kafka 与 PUB/Sub。基本上我想知道Kafka和Pub/sub中如何维护消息一致性、消息可用性、消息可靠性

谢谢

最佳答案

除了 Google Pub/Sub 由 Google 管理并且 Kafka 是开源的之外,另一个区别是 Google Pub/Sub 是一个消息队列(例如 Rabbit MQ),而 Kafka 更像是一个流日志。您无法使用 Pubsub “重新阅读”或“重播”消息。 (编辑 - 截至 2019 年 2 月,您可以重播消息并及时向后查找到某个时间戳,根据下面的评论)

使用 Google Pub/Sub,一旦从订阅中读出消息并得到确认,该消息就会消失。为了让不同的读者阅读更多的消息副本,您可以通过为该主题创建“订阅”来“扇出”该主题,其中每个订阅都将拥有该主题中所有内容的完整副本。但这也会增加成本,因为 Google 根据读取的数据量来收取 Pub/Sub 使用费。

使用 Kafka,您可以设置保留期(我认为默认为 7 天),并且无论有多少消费者读取消息,消息都会保留在 Kafka 中。您可以添加一个新的消费者(也称为订阅者),并让它在您需要的任何时候从主题的前面开始消费。您还可以将保留期设置为无限,然后您基本上可以使用 Kafka 作为不可变的数据存储,如下所述:http://stackoverflow.com/a/22597637/304262

Amazon AWS Kinesis 是 Kafka 的托管版本,而我认为 Google Pubsub 是 Rabbit MQ 的托管版本。 带有 SQS 的 Amazon SNS 也类似于 Google Pubsub(SNS 提供扇出,SQS 提供队列)。

关于apache-kafka - 我正在评估 Google Pub/Sub 与 Kafka。有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38572071/

相关文章:

apache-kafka - 更新代理设置(主题默认值)是否会更改现有主题?

sql-server - 具有事件源的 CQRS 模式具有用于读/写的单个数据库

google-cloud-platform - 云构建发布/订阅主题似乎未列出或无法访问

google-cloud-messaging - Google 云发布/订阅订阅的持久性?

google-cloud-pubsub - 推送机制 : Auth on webhook endpoint

ssl - 为什么我可以读取 ksqldb 流而不是 ksql 客户端中的主题?

elasticsearch - 从kafka导入数据到Elasticsearch时如何获取导入进度和错误日志?

go - Pubsub.pull请求无法正常工作-转到

json - 使用 Go 解码 PubSub 请求数据 []bytes

apache-kafka - Kafka - 紧凑且基于时间的保留