Kafka 作为分布式数据库的局限性
Limitations of Kafka as a Distributed DB
我有一个应用程序需要在跨地理区域分布的实例状态之间进行有趣的编排,同时需要可扩展的分布式数据库。
目前我认为带有日志压缩的Kafka可以满足我对状态维护和实例间消息交换的需求,而Cassandra可以满足我对持久化数据的大容量分布式读写的需求。
然而,有相当多的数据以这种方式重复:许多通过 Kafka 交换的数据也需要存储到 Cassandra 以进行分布式数据访问。使用 Kafka 进行消息传递和分布式数据查询和持久化似乎很诱人。
因此,我有兴趣弄清楚使用例如Kafka 的拉取查询功能将其用作分布式数据库 [1].
不过,我对性能和可扩展性方面的期望有点怀疑,尤其是与 Cassandra 相比时,以及未知的陷阱。
将 Kafka 用作分布式数据库时有哪些权衡取舍?与 Cassandra 等“原生”分布式系统相比,它在性能方面有何优势?
[1] https://www.confluent.io/de-de/blog/pull-queries-in-preview-confluent-cloud-ksqdb/
pure KV lookups
然后 Kafka StateStores / Interactive Queries 可以 工作,但是 需要注意的是,如果您使用容器和编排器,您需要在持久卷上的某个地方维护这些商店的状态。否则,当容器迁移到新主机时,需要从头读取streams changelog topic,给你一个“冷启动”的问题,你将无法查询。
使用任何数据库(有持久化存储)都不会出现这个问题,总是可以立即查询。
不过,我不确定我是否会建议 Cassandra 用于严格的 KV 数据。
我有一个应用程序需要在跨地理区域分布的实例状态之间进行有趣的编排,同时需要可扩展的分布式数据库。
目前我认为带有日志压缩的Kafka可以满足我对状态维护和实例间消息交换的需求,而Cassandra可以满足我对持久化数据的大容量分布式读写的需求。
然而,有相当多的数据以这种方式重复:许多通过 Kafka 交换的数据也需要存储到 Cassandra 以进行分布式数据访问。使用 Kafka 进行消息传递和分布式数据查询和持久化似乎很诱人。
因此,我有兴趣弄清楚使用例如Kafka 的拉取查询功能将其用作分布式数据库 [1].
不过,我对性能和可扩展性方面的期望有点怀疑,尤其是与 Cassandra 相比时,以及未知的陷阱。
将 Kafka 用作分布式数据库时有哪些权衡取舍?与 Cassandra 等“原生”分布式系统相比,它在性能方面有何优势?
[1] https://www.confluent.io/de-de/blog/pull-queries-in-preview-confluent-cloud-ksqdb/
pure KV lookups
然后 Kafka StateStores / Interactive Queries 可以 工作,但是 需要注意的是,如果您使用容器和编排器,您需要在持久卷上的某个地方维护这些商店的状态。否则,当容器迁移到新主机时,需要从头读取streams changelog topic,给你一个“冷启动”的问题,你将无法查询。
使用任何数据库(有持久化存储)都不会出现这个问题,总是可以立即查询。
不过,我不确定我是否会建议 Cassandra 用于严格的 KV 数据。