为什么我们要求Apache Kafka使用NoSQL数据库?

时间:2018-02-12 09:17:11

标签: mongodb nosql apache-kafka

Apache Kafka是一种实时消息服务。它以分布式和容错的方式安全地存储数据流。我们可以在生产者时过滤流数据。我不明白为什么我们需要像MongoDB这样的NoSQL数据库来在Apache Kafka中存储相同的数据。真正的问题是为什么我们将相同的数据存储在NoSQL数据库和Apache Kafka中?

我认为如果我们需要NoSQL数据库,我们可以首先从MongoDB中的客户端收集数据流,而无需使用Apache Kafka。但是,大多数大数据架构偏好使用Apache Kafka在数据源和NoSQL数据库之间。(seeand also see

对于真实系统有什么好处?

1 个答案:

答案 0 :(得分:6)

这种架构有几个优点:

  1. Kafka作为数据集成总线

    它有助于轻松地在多个生产者和许多消费者之间分配数据。 Apache Kafka在这里用作“数据”集成消息总线。

  2. Kafka作为数据缓冲区

    将Kafka放在像MongoDB或MySQL这样的“终端”数据存储器前面就像一个自然的数据缓冲区。因此,您可以独立部署/维护/重新部署您的消费者服务。当您的服务停止维护时,Kafka仍然存储所有传入的数据,这非常有用。

  3. Kafka作为短时数据存储

    您不必将所有内容存储在Kafka中:您经常使用Kafka主题进行保留。这意味着Kafka会自动删除所有早于某个值的数据。因此,例如,您可能拥有1周保留的Kafka主题(因此您只存储1周的数据),但同时您的数据仍然存在于经典SQL-DB或Cassandra等长时间存储服务中。

    < / LI>
  4. Kafka作为长期数据存储

    另一方面,您可以将Apache Kafka用作长期存储系统。使用压缩主题使您只能存储每个键的最后一个值。因此,您的主题将成为应用的最后一个状态存储。