[Flink基础]--什么是流处理?

感谢原文作者:https://data-artisans.com/what-is-stream-processing

什么是流处理?

Data Artisans由ApacheFlink®的原始创建者创建,我们花了很长时间来解决流处理领域的问题。在这篇介绍性文章中,我们将提供有关流处理和Apache Flink适合的视角。

要了解更多信息,您可以下载有关Apache Flink的状态流处理的报告,包括真实的Flink用例。

 

流处理是对运动中数据的处理,或者换句话说,在生成或接收数据时直接计算数据

 

大多数数据都是连续的流:传感器事件,网站上的用户活动,金融交易等等 - 所有这些数据都是随着时间的推移而创建的。

 

在流处理之前,此数据通常存储在数据库,文件系统或其他形式的大容量存储中。应用程序将根据需要查询数据或计算数据。

 

静态数据的概述,在现代流处理之前很常见。

流处理之前:静态数据基础架构


流处理改变了这种模式:应用程序逻辑,分析和查询不断存在,数据不断地流经它们。

在从流中接收到事件时,流处理应用程序对该事件作出反应:它可以触发动作,更新聚合或其他统计,或“记住”该事件以供将来参考。


流式计算还可以联合处理多个数据流,并且事件数据流上的每个计算可以产生其他事件数据流。

 

由有状态流处理提供支持的现代架构

                                                          A stream processing infrastructure


接收和发送数据流并执行应用程序或分析逻辑的系统称为流处理器。流处理器的基本职责是确保数据有效流动,并且计算可扩展并具有容错能力。

Apache Flink是一个功能强大,成熟的开源流处理框架,可以解决这些挑战。


流处理范例自然地解决了当今实时数据分析和事件驱动应用程序开发人员面临的许多挑战:

 

  • 应用程序和分析立即对事件做出反应:“事件发生” - >“insight derived” - >“action is taken”之间没有滞后时间。操作和分析是最新的,反映了数据何时仍然新鲜,有意义且有价值。
  • 流处理可以处理比其他数据处理系统大得多的数据量:直接处理事件流,并且只保留数据中有意义的子集。
  • 流处理自然而轻松地模拟大多数数据的连续和及时性质:这与静态/静态数据的预定(批量)查询和分析形成对比。增量计算更新,而不是周期性地重新计算所有数据,自然适合流处理模型。
  • 流处理分散和分离基础架构:流式范例减少了对大型和昂贵的共享数据库的需求。相反,每个流处理应用程序都维护自己的数据和状态,流处理框架使其变得简单。通过这种方式,流处理应用程序自然地适合微服务架构。


有状态流处理(Stateful Stream Processing)


有状态流处理是流处理的子集,其中计算维持上下文状态。此状态用于存储从先前看到的事件派生的信息。

实际上,所有非平凡的流处理应用程序都需要有状态的流处理

 

  • 防欺诈应用程序将保留该州每张信用卡的最后交易。将每个新事务与状态中的事务进行比较,标记为有效或欺诈,并使用该事务更新状态。
  • 在线推荐应用程序将保留描述用户偏好的参数。每个产品交互都会生成一个更新这些参数的事件。
  • 处理歌曲播放列表或电子商务购物车的微服务接收每个用户与歌曲或产品交互的事件。州保留所有添加项的列表。

有状态流处理的可视化

                                                              Stateful stream processing


从概念上讲,有状态流处理将数据库或键/值存储表以及事件驱动/响应应用程序或分析逻辑集中到一个紧密集成的实体中。

状态与应用程序/分析逻辑的执行之间的深度集成可实现非常高的性能,可伸缩性,数据一致性和操作简单性。


有状态流处理需要支持状态管理的流处理器。Apache Flink对有状态流处理提供世界级的支持,包括处理非常大的状态大小,有状态流程序的弹性重新扩展,状态快照(用于版本控制和应用程序更新)以及升级和模式演变功能的能力。

 

流处理统一了数据处理,分析和应用程序

您可能已经注意到我们在前面的部分中提到了实时数据处理/分析和事件驱动的应用程序。那些不是两个不同的领域,通过Hadoop或SQL仓库等框架实现处理和分析,并通过应用程序框架和数据库实现应用程序?

当前的数据处理/分析和事件驱动应用程序的方法有很多共同之处。为了使分析能够实时或接近实时地生成结果,系统必须不断地计算和更新每个记录或事件的结果。

现代应用程序和微服务也以事件驱动或“反应”方式操作,这意味着它们的逻辑和计算由事件触发(例如,通过用户与网站交互来生成事件)。

Apache Flink统一了流处理和批处理
流处理统一了应用程序和分析。这简化了整体基础架构,因为许多系统可以构建在通用架构上,并且还允许开发人员构建使用分析结果的应用程序来响应数据中的洞察力 - 直接采取行动。

例如:

  • 基于分析模型将银行交易分类为欺诈,然后自动阻止交易
  • 根据有关其行为的模型向用户发送推送通知
  • 根据传感器数据的实时分析结果调整机器的参数

有兴趣了解更多?阅读  Apache Flink  及其核心功能,或访问我们的博客,查看Apache Flink用户的实际用例

 

猜你喜欢

转载自blog.csdn.net/high2011/article/details/82895963