📜  Kafka流处理的关键概念

📅  最后修改于: 2021-01-05 03:00:09             🧑  作者: Mango

流处理的关键概念

用户应了解以下有关流处理的概念:

时间

这是必不可少的,也是最令人困惑的概念。在流处理中,大多数操作都依赖时间。因此,对于这种流应用程序,通常的时间观念是典型的任务。

Kafka Stream处理涉及以下时间概念:

  • 事件时间:事件发生的时间和最初创建记录的时间。因此,事件时间在流数据的处理期间很重要。
  • 日志追加时间:事件到达的时间,以便代理存储。
  • 处理时间:流处理应用程序接收事件以应用某些操作的时间。时间可以是毫秒,天或小时。在这里,根据每个流处理应用程序恰巧何时读取事件,将不同的时间戳分配给同一事件。同样,同一应用程序中两个线程的时间戳可能不同。因此,处理时间非常不可靠,并且最好避免。

流处理应用程序中维护着不同的状态。

状态为:

  • 内部或本地状态:只能由特定的流处理应用程序的实例访问的状态。内部状态通过应用程序内的嵌入式内存数据库进行管理和维护。尽管本地状态非常快,但是内存大小有限。
  • 外部状态:这是在外部数据存储(例如NoSQL数据库)中维护的状态。与内部状态不同,它提供了几乎无限的内存大小。同样,可以从不同的应用程序或它们的实例中访问它。但是,它带来了额外的延迟和复杂性,这使得某些应用程序可以避免。

流表对偶

表是由主键唯一标识的记录的集合。触发查询以检查特定时间点的数据状态。表格不包含历史记录,特别是除非我们设计了历史记录。另一方面,流包含更改的历史记录。流是事件的字符串,其中每个事件都会导致更改。因此,表和流是同一枚硬币的两侧。因此,要将表转换为流,用户需要捕获修改表的命令。诸如插入,更新和删除之类的命令将被捕获并存储到流中。另外,如果用户要将流转换为表,则需要转换流包含的所有更改。这种转换过程也称为实现流。因此,我们可以具有将流转换为表以及将表转换为流的双重过程。

时间窗

时间窗口一词是指将总时间分成几部分。因此,取决于时间窗口的流上有一些操作。这样的操作称为窗口操作。例如,对在两个流上执行的加入操作进行窗口化。尽管人们很少关心操作所需的窗口类型。