Apache Kafka:分布式消息传递系统
Apache Storm:实时消息处理
我们如何在实时数据管道中使用这两种技术来处理事件数据?
在实时数据管道方面,在我看来,两者的工作完全相同。我们如何在数据管道上同时使用这两种技术?
Apache Kafka:分布式消息传递系统
Apache Storm:实时消息处理
我们如何在实时数据管道中使用这两种技术来处理事件数据?
在实时数据管道方面,在我看来,两者的工作完全相同。我们如何在数据管道上同时使用这两种技术?
Answers:
您将Apache Kafka用作可处理大量数据的分布式健壮队列,并使您能够将消息从一个端点传递到另一个端点。
风暴不是队列。这是一个具有分布式实时处理能力的系统,这意味着您可以并行对实时数据执行所有类型的操作。
这些工具(据我所知)的通用流程如下:
实时系统->卡夫卡->风暴-> NoSql-> BI(可选)
因此,您可以使用实时应用程序处理大量数据,并将其发送到Kafka队列。Storm从kafka提取数据并应用一些必需的操作。在这一点上,您通常希望从此数据中获得一些好处,因此您可以将其发送到Nosql数据库以进行其他BI计算,或者可以从任何其他系统中查询此NoSql。
Kafka和Storm的用途略有不同:
Kafka是一个分布式消息代理,可以每秒处理大量消息。它使用发布-订阅范例,并依赖主题和分区。Kafka使用Zookeeper在代理之间共享和保存状态。因此,Kafka基本上负责将消息从一台计算机传输到另一台计算机。
Storm是一个可扩展的,容错的实时分析系统(像Hadoop一样实时)。它使用来自源(喷口)的数据,并将其传递到管道(螺栓)。您可以将它们组合在拓扑中。因此,Storm基本上是一个计算单元(聚合,机器学习)。
但是,您可以将它们一起使用:例如,您的应用程序使用kafka将数据发送到其他服务器,这些服务器使用Storm对其进行计算。
我知道这是一个较旧的线程,Apache Kafka和Storm的比较在编写时是有效和正确的,但值得注意的是,Apache Kafka多年来已经发展了很多,并且自0.10版(2016年4月)以来,Kafka包括了Kafka Streams API,可提供流处理功能,而无需任何其他软件(例如Storm)。Kafka还包括用于连接到各种数据源和数据宿(目的地)的Connect API。
公告博客-https: //www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
当前的Apache文档-https://kafka.apache.org/documentation/streams/
在0.11 Kafka中,流处理功能被进一步扩展以提供“精确一次语义和事务”。
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
Kafka-提供实时流
风暴 -在该流上执行一些操作
您可以看一下GitHub项目https://github.com/abhishekgoel137/kafka-nodejs-d3js。
(D3js是一个图形表示库)
理想情况:
Realtime application -> Kafka -> Storm -> NoSQL -> d3js
该存储库基于:
Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
正如每个人向您解释的那样,Apache Kafka:是连续消息队列
Apache Storm:是连续处理工具
在这方面,Kafka将使用API从任何网站(如FB,Twitter)获取数据,并且使用Apache Storm处理该数据,您可以将处理后的数据存储在您喜欢的任何数据库中。
https://github.com/miguno/kafka-storm-starter
只要遵循它,您就会知道
只需Kafka将消息从节点发送到另一个节点,然后Storm就可以处理消息。检查此示例,了解如何将Apache Kafka与Storm集成