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

xzabzqsa  于 2021-06-07  发布在  Kafka
关注(0)|答案(5)|浏览(727)

流处理和传统消息处理的基本区别是什么?正如人们所说,kafka是流处理的好选择,但本质上kafka是一个类似于activmq、rabbitmq等的消息传递框架。
为什么我们一般不说activemq也适合流处理呢。
是不是消费者消费消息的速度决定了它是否是一个流?

mpgws1up

mpgws1up1#

如果您喜欢直截了当的话:消息传递是两个或多个进程或组件之间的通信,而流则是在事件发生时传递事件日志。消息携带原始数据,而事件包含有关事件发生和活动(如顺序)的信息。所以Kafka同时做信息和流媒体。Kafka中的主题可以是原始消息或事件日志,通常会保留数小时或数天。事件可以进一步聚合为更复杂的事件。

hpxqektj

hpxqektj2#

基本上,kafka是类似于activemq或rabbitmq的消息传递框架。有一些努力,Kafka走向流是由合流。
https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
那为什么Kafka在谈到流处理的时候会出现呢?
流处理框架因数据输入的不同而不同,在批处理中,有些文件存储在文件系统中,需要不断地处理这些文件并存储在数据库中。流内处理框架如spark、storm等将从一些传感器设备获得连续的输入,而api feed和kafka则用于流引擎。

im9ewurl

im9ewurl3#

消息处理意味着对和/或使用单个消息的操作。流处理包括对单个消息和/或使用单个消息的操作,以及对流入系统的消息集合的操作。例如,假设交易是针对支付工具进行的,流处理可以用来连续计算每小时的平均花费。在这种情况下,可以在流上施加一个滑动窗口,该窗口在一小时内拾取消息并计算平均数量。这样的数字就可以作为欺诈检测系统的输入

xt0899hw

xt0899hw4#

尽管rabbit支持流媒体,但它实际上并不是为它而构建的(参见rabbit)´rabbit是一个消息代理,kafka是一个事件流平台。
Kafka可以处理大量关于兔子的“信息”。Kafka是一个日志,而兔子是一个队列,这意味着一旦消费,兔子´如果你需要的话,你的信息就不在了。
不过,rabbit可以指定消息优先级,但kafka不能´t。
这取决于你的需要。

k4aesqcs

k4aesqcs5#

在传统的消息处理中,您对消息应用简单的计算——在大多数情况下,每个消息都单独进行计算。
在流处理中,您可以同时对多个输入流和多个记录(即消息)应用复杂的操作(如聚合和联接)。
此外,传统的消息传递系统不能“回到时间”,即消息传递给所有订阅的用户后,系统会自动删除消息。相反,kafka使用基于pull的模型(即,消费者从kafka中提取数据)将消息保留一段可配置的时间。这允许使用者“倒带”并多次使用消息——或者,如果您添加了一个新的使用者,它可以读取完整的历史记录。这使得流处理成为可能,因为它允许更复杂的应用程序。此外,流处理不一定是实时处理,而是处理无限的输入流(与应用于有限输入的批处理相反)。
kafka提供了kafka connect和streams api——因此它是一个流处理平台,而不仅仅是一个消息传递/发布子系统(即使它在其核心中使用了它)。

相关问题