Kafka vs StreamSets



我正在阅读与Kafka和StreamSets相关的文章,我的理解是

  1. Kafka 充当生产者系统和订阅者之间的代理。生产者将数据推送到 Kafka 集群,订阅者从 Kafka 拉取数据

  2. StreamsSets是一种通过管道将数据从一个源移动到另一个源的技术

现在,以下是我的问题,请帮助澄清

  1. Kafka 和 StreamSet 之间的根本区别是什么?是不是Kafka不移动数据,但StreamSets移动数据?

  2. 如果 Kafka 不移动数据,Kafka 的用途是什么?如果它像ETL解决方案一样移动数据,它与SSIS,Informatica等有何不同?

  3. StreamSets与SSIS,Informatica等有何不同?

StreamSets是一个图形工具,其中包含允许数据移动的组件,这些组件恰好包括Kafka生产者和消费者,但你不需要使用它们。

它们是互补的,通过使用 Kafka,您可以在流系统中允许背压,或者让非 StreamSet 生产者/消费者与其他 Kafka 主题进行交互。不,Kafka 不会移动数据(内部复制除外),与代理交互的客户端会移动数据。

我没有使用过Informatica或SSIS,但我敢肯定,如果你联系了StreamSets的人,他们可以回答他们的比较方式。

  1. 在 StreamSets 中,大多数时候我们创建"数据管道",将管道想象成一个可以由多个步骤/任务组成的应用程序,第一个任务可以从数据库或 kafka 或任何数量的数据源读取数据,第二步可以修改数据,第三步可以运行脚本......等等,最后它可以将转换后的数据保存到可能是数据库或任何其他云存储的目的地中。因此,Kafka 和 StreamSet 可以协同工作,而 StreamSets 可以从 Kafka 读取数据并写入 Kafka

  2. 我认为Kafka是一个收集来自多个来源的数据的地方,并在一段时间内可供消费者使用。例如,Kafka 可以定期从数据库表中读取并将更改存储在"主题"中,定期从 Web 服务读取,然后将此数据存储到另一个主题中。这些主题现在可供使用者使用,开发人员现在可以创建一个应用程序,该应用程序从第一个主题读取数据并对数据执行某些操作,Kafka 可以使用偏移量跟踪使用者读取的内容,并提供复制和其他选项。它消除了编写集成多个源和目标的自定义代码的需要,相反,您可以配置此部分。

StreamSets 可以读取和写入 Kafka。StreamSets不会将数据存储在自己的系统中,而Kafka将数据存储在可配置的时间段内。

  1. SSIS 类似于 StreamSets,因为它用于创建由多个任务组成的管道/包,每个任务都可以从以前的任务中获取数据/结果,然后对其进行处理。流集和 SSIS 都可以连接到多种数据源和目标。

我个人对 StreamSet 和 SSIS 的不同看法是:

StreamSets
  • 是基于Web的,而SSIS需要Visual Studio,StreamSets GUI更易于使用,并且不需要为每个开发人员安装特殊的软件。
  • 使用源代码管理将 StreamSets 管道部署到生产环境比 SSIS 包更容易。
  • SSIS 是一个Microsoft产品,因此它与其他Microsoft产品集成得很好。StreamSet 可以安装在任何平台上,这使其成为 AWS 云的理想选择。
  • 如果要编写SSIS脚本任务,则必须使用C#/DotNet。StreamSets脚本任务可以用Jython和JavaScript编写
  • SSIS 较旧,在线有大量文档。

感谢大家,我认为必须分享一些关于我们如何看待 kafka 和 streamset 之间的规范的想法,如果我们在同一集群中使用两者,那么我们如何区分。

"因为我们使用的是 Kafka 的可靠性 &Simplicity of Streamset">

  1. 流集消除了生产者和使用者的编码开销
  2. 流集用于 1 个源 1 个目标
  3. Kafka 将数据从多个来源传输到多个目标(发布-订阅方法)
  4. 流集消除了数据偏移问题

最新更新