为什么我们要求Apache Kafka使用NoSQL数据库?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我们要求Apache Kafka使用NoSQL数据库?相关的知识,希望对你有一定的参考价值。
Apache Kafka是一种实时消息服务。它以分布式和容错的方式安全地存储数据流。我们可以在生产者时过滤流数据。我不明白为什么我们需要像MongoDB这样的NoSQL数据库来在Apache Kafka中存储相同的数据。真正的问题是为什么我们在NoSQL数据库和Apache Kafka中存储相同的数据?
我想如果我们需要NoSQL数据库,我们可以在不使用Apache Kafka的情况下首先从MongoDB中的客户端收集数据流。但是,大多数大数据架构偏好使用Apache Kafka在数据源和NoSQL数据库之间。(see)
这对于真实系统有什么好处?
答案
这种架构有几个优点:
- Kafka作为数据集成总线 它有助于轻松地在多个生产者和许多消费者之间分配数这里Apache Kafka充当“数据”集成消息总线。
- Kafka作为数据缓冲区 将Kafka放在像MongoDB或mysql这样的“终端”数据存储之前就像一个自然的数据缓冲区。因此,您可以独立部署/维护/重新部署您的消费者服务。当您的服务停止维护时,Kafka仍然存储所有传入的数据,这非常有用。
- Kafka作为短时数据存储 您不必将所有内容存储在Kafka中:您经常使用Kafka主题进行保留。这意味着Kafka会自动删除所有早于某个值的数据。因此,例如,您可能拥有1周保留的Kafka主题(因此您只存储1周的数据),但同时您的数据仍然存在于经典SQL-DB或Cassandra等长时间存储服务中。
- Kafka作为长期数据存储 另一方面,您可以将Apache Kafka用作长期存储系统。使用压缩主题使您只能存储每个键的最后一个值。因此,您的主题将成为应用的最后状态存储。
以上是关于为什么我们要求Apache Kafka使用NoSQL数据库?的主要内容,如果未能解决你的问题,请参考以下文章