Kafka 与 StreamSets

Kafka vs StreamSets

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

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

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

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

  1. Kafka 和 StreamSets 的根本区别是什么?是 Kafka 不移动数据而 StreamSets 移动数据吗?

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

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

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

它们是互补的,通过使用 Kafka,您可以允许 back-pressure 在流式系统中或 non-StreamSets producers/consumers 与其他 Kafka 主题交互。不,Kafka 不会移动数据(内部复制除外),与代理交互的客户端会移动数据。

我没有使用过 Informatica 或 SSIS,但我敢肯定,如果您联系过 StreamSets 的某个人,他们会回答他们如何比较

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

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

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

  1. SSIS 类似于 StreamSets,用于创建由多个任务组成的 pipelines/packages,每个任务都可以从之前的任务中获取 data/result,然后用它做一些事情。 StreamSets 和 SSIS 都可以连接到多种数据源和目标。

我个人对 StreamSets 和 SSIS 的不同之处的看法是:

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

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

“因为我们使用的是 Kafka 的可靠性和 Streamset 的简单性”

  1. Streamset 消除了生产者和消费者的编码开销
  2. 流集用于 1 个源 1 个目标
  3. Kafka 将数据从多个来源获取到多个目的地(pub-sub 方法)
  4. Streamset 消除了数据漂移问题