Apache Kafka:分布式消息系统
Apache Storm:实时消息处理
我们如何在实时数据管道中使用这两种技术来处理事件数据?
就实时数据管道而言,它们似乎可以完成相同的工作。那么我们如何在数据管道中同时使用这两种技术呢?
Apache Kafka:分布式消息系统
Apache Storm:实时消息处理
我们如何在实时数据管道中使用这两种技术来处理事件数据?
就实时数据管道而言,它们似乎可以完成相同的工作。那么我们如何在数据管道中同时使用这两种技术呢?
官方公告博客 - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
当前Apache文档 - https://kafka.apache.org/documentation/streams/
在0.11 Kafka中,流处理功能进一步扩展,提供Exactly Once语义和事务处理。
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
Kafka和Storm有稍微不同的目的:
Kafka是一个分布式消息代理,可以处理每秒钟大量的消息。 它使用发布-订阅模式,并依赖于主题和分区。 Kafka使用Zookeeper在代理之间共享和保存状态。因此,Kafka基本上负责将消息从一台计算机传输到另一台计算机。
Storm是一个可扩展的、容错的、实时分析系统(类似于实时的Hadoop)。它从数据源(Spouts)中消费数据,并将其传递给管道(Bolts)。你可以将它们组合在拓扑结构中。因此,Storm基本上是一个计算单元(聚合、机器学习)。
但是你可以将它们合在一起使用:例如,您的应用程序使用kafka将数据发送到其他服务器,这些服务器使用storm对其进行一些计算。
Kafka - 提供实时流数据
Storm - 对该流数据执行一些操作
你可以查看 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
只要按照它的指示,你就会有一些想法。