当前位置:  开发笔记 > 编程语言 > 正文

流处理和消息处理之间的区别

如何解决《流处理和消息处理之间的区别》经验,为你挑选了2个好方法。

流处理和传统消息处理之间的基本区别是什么?正如人们所说kafka是流处理的不错选择,但本质上kafka是一个类似于ActivMQ,RabbitMQ等的消息传递框架.

为什么我们通常不会说ActiveMQ也适用于流处理.

是否消费者使用消息的速度决定它是否是流?



1> Matthias J. ..:

在传统的消息处理中,您对消息应用简单计算 - 在大多数情况下,每个消息单独计算.

在流处理中,您可以同时对多个输入流和多个记录(即消息)应用复杂操作(如聚合和连接).

此外,传统的消息传递系统不能"回到过去" - 即,在将消息传递给所有订阅的消费者之后自动删除消息.相比之下,Kafka保留消息,因为它使用基于拉的模型(即,消费者从Kafka中提取数据)一段可配置的时间.这允许消费者多次"倒回"和消费消息 - 或者如果添加新的消费者,它可以读取完整的历史记录.这使得流处理成为可能,因为它允许更复杂的应用程序.此外,流处理不一定是关于实时处理 - 它是关于处理无限输入流(与应用于有限输入的批处理相反).

Kafka提供Kafka Connect和Streams API - 所以它是一个流处理平台,而不仅仅是一个消息/ pub-sub系统(即使它在它的核心中使用它).


此外,输入流可能是无限的,但处理更像是有限输入的滑动窗口.从这个意义上说,流和批处理之间没有任何区别.批处理只是流处理的一种特殊情况,其中窗口是强定义的.

2> Paresh..:

基本上Kafka是类似于ActiveMQ或RabbitMQ的消息传递框架.汇流会采取一些努力将Kafka带入流媒体.

https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

那么为什么Kafka在谈论流处理时会出现?

流处理框架因数据输入而不同.在批处理中,您有一些文件存储在文件系统中,并且您希望继续处理它并存储在某个数据库中.虽然在像Spark,Storm等流处理框架中可以从一些传感器设备获得连续输入,但是在那里使用api feed和kafka来为流引擎提供信息.


Apache Kafka将自己描述为"分布式流媒体平台",请参阅https://kafka.apache.org/.早在2012年,它就像一个消息传递系统一样开始,但现在它远不止于此.Kafka特别推出了自己的流处理引擎,称为Kafka的Streams API(简称Kafka Streams).您不再需要使用Storm或Spark等单独的流处理技术,并且很多Spark/Storm/...的前用户已经开始迁移到Kafka的Streams API以简化和改进他们的数据架构.
推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有