【问题标题】:What is the advantage and disadvantage when considering Kafka as a storage?考虑将 Kafka 作为存储有什么优缺点?
【发布时间】:2019-11-14 00:16:56
【问题描述】:

我有两种方法:

方法 #1

Kafka --> Spark Stream (processing data) --> Kafka -(Kafka Consumer)-> Nodejs (Socket.io)

方法 #2

Kafka --> Kafka Connect (processing data) --> MongoDB -(mongo-oplog-watch)-> Nodejs (Socket.io)

注意:在方法 #2 中,我使用mongo-oplog-watch 来检查插入数据的时间。

在实时应用程序上下文中使用 Kafka 作为存储与使用其他存储(如 MongoDB)有什么优势和劣势?

【问题讨论】:

标签: node.js mongodb apache-kafka


【解决方案1】:

Kafka 主题通常有一个保留期(默认为 7 天),之后它们将被删除。不过,没有硬性规定我们不能坚持使用 Kafka。

您可以将主题保留期设置为-1 (reference)

据我所知,在 Kafka 中持久化数据的唯一问题是安全性。开箱即用的卡夫卡(至少到目前为止)不提供静态数据加密。您需要使用自定义解决方案(或自行开发的解决方案)。

Protecting data-at-rest in Kafka with Vormetric

也有一个 KIP,但它正在讨论中

Add end to end encryption in Kafka (KIP)

另一方面,MongoDB 似乎提供静态数据加密。

Security data at rest in MongoDB

最重要的是,它还取决于您要存储的数据类型以及您想用它做什么。

如果您正在处理非常复杂的数据(不像 Key-Value 那样容易,即给出键并获取值模型),例如,通过索引字段等进行查询(就像您通常使用日志所做的那样),那么 MongoDB 可能会有意义。

简单来说,如果您通过多个字段(除了键)进行查询,那么将其存储在 MongoDB 中可能是有意义的,如果您打算将 Kafka 用于此目的,您可能最终会创建每个字段都应该查询的主题......这太多了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2010-10-27
    • 2015-09-29
    • 2010-09-17
    • 2019-12-13
    相关资源
    最近更新 更多