当前位置:   article > 正文

第1章 有状态的流式处理_有状态流处理

有状态流处理

目录

第1章 有状态的流式处理

1.1 传统数据处理架构

1.1.1 事务处理

1.1.2 分析处理

1.2 有状态的流式处理

1.2.1 事件驱动应用程序

1.2.2 数据管道

1.2.3 流分析

1.3 开源流处理的演进

1.4 Flink 简介

1.5 编写第一个 Flink 程序

1.5.2 下载 Flink 运行时环境,提交 Jar 包的运行方式


第1章 有状态的流式处理

        Apache Flink 是一个分布式流处理器,具有直观和富有表现力的 API,可实现有状态的流处理应用程序。它以容错的方式有效地大规模运行这些应用程序。Flink 于 2014 年 4 月加入 Apache 软件基金会作为孵化项目,并于 2015 年 1 月成为顶级项目。从一开始, Flink  就拥有一个非常活跃且不断增长的用户和贡献者社区。到目前为止,已有超过五百人为Flink 做出贡献,并且它已经发展成为最复杂的开源流处理引擎之一,并得到了广泛采用的证明。Flink 为不同行业和全球的许多公司和企业提供大规模的商业关键应用。

        流处理技术在大大小小的公司中越来越受欢迎,因为它为许多已建立的用例(如数据分析,ETL   和事务应用程序)提供了卓越的解决方案,同时也促进了新颖的应用程序, 软件架构和商机。接下来我们将讨论,为什么有状态流处理变得如此受欢迎并评估其潜力。我们首先回顾传统的数据应用程序架构并指出它们的局限性。接下来,我们介绍基于状态流处理的应用程序设计与传统方法相比,它具有许多有趣的特征最后,我们简要讨论开源流处理器的发展,并在本地Flink 实例上运行流应用程序。

1.1 传统数据处理架构

数十年来,数据和数据处理在企业中无处不在。多年来,数据的收集和使用一直在  增长,公司已经设计并构建了基础架构来管理数据。大多数企业实施的传统架构区分了两种类型的数据处理:事务处理(OLTP)和分析处理(OLAP)。

1.1.1 事务处理

公司将各种应用程序用于日常业务活动,例如企业资源规划(ERP)系统,客户关系  管理(CRM)软件和基于Web 的应用程序。这些系统通常设计有单独的层,用于数据处理(应用程序本身)和数据存储(事务数据库系统),如图所示。

图 1.1: 事务处理

应用程序通常连接到外部服务或直接面向用户,并持续处理传入的事件,如网站上的订单,电子邮件或点击。处理事件时,应用程序将会读取远程数据库的状态,或者通  过运行事务来更新它。通常,一个数据库系统可以服务于多个应用程序,它们有时会访  问相同的数据库或表。

       当应用程序需要扩展时,这样的设计可能会导致问题。由于多个应用程序可能会同  时用到相同的数据表示,或者共享相同的基础设施,因此想要更改表的结构或扩展数据  库,就需要仔细的规划和大量的工作。克服紧耦合应用程序的最新方法是微服务设计模  式。微服务被设计为小型、完备且独立的应用程序。他们遵循UNIX 的理念,即“只做一件事并且把它做好”。通过将几个微服务相互连接来构建更复杂的应用程序,这些微服务 仅通过标准化接口(例如 RESTful HTTP 连接)进行通信。由于微服务严格地彼此分离并且仅通过明确定义的接口进行通信,因此每个微服务都可以用不同技术栈来实现,包  括编程语言、类库和数据存储。微服务和所有必需的软件和服务通常捆绑在一起并部署  在独立的容器中。下图描绘了一种微服务架构。

图 1.2: 事务处理

 

1.1.2 分析处理

大量数据存储在公司的各种事务数据库系统中,它们可以为公司业务运营提供宝贵  的参考意见。例如,分析订单处理系统的数据,可以获得销量随时间的增长曲线;可以  识别延迟发货的原因;还可以预测未来的销量以便提前调整库存。但是,事务数据通常  分布在多个数据库中,它们往往汇总起来联合分析时更有价值。而且,数据通常需要转  换为通用格式。

所以我们一般不会直接在事务数据库上运行分析查询,而是复制数据到数据仓库。  数据仓库是对工作负载进行分析和查询的专用数据存储。为了填充数据仓库,需要将事务数据库系统管理的数据复制过来。将数据复制到数据仓库的过程称为 extract-transform- load(ETL)。ETL 过程从事务数据库中提取数据,将其转换为某种通用的结构表示,可能包括验证,值的规范化,编码,重复数据删除(去重)和模式转换,最后将其加载到分析数据库中。ETL 过程可能非常复杂,并且通常需要技术复杂的解决方案来满足性能要求。ETL  过程需要定期运行以保持数据仓库中的数据同步。

将数据导入数据仓库后,可以查询和分析数据。通常,在数据仓库上执行两类查询。  第一种类型是定期报告查询,用于计算与业务相关的统计信息,比如收入、用户增长或者输出的产量。这些指标汇总到报告中,帮助管理层评估业务的整体健康状况。第二种  类型是即席查询,旨在提供特定问题的答案并支持关键业务决策,例如收集统计在投放  商业广告上的花费,和获取的相应收入,以评估营销活动的有效性。两种查询由批处理  方式由数据仓库执行,如图所示。

 

图 1.3: 事务处理

如今,Apache Hadoop 生态系统的组件,已经是许多企业 IT 基础架构中不可或缺的组成部分。现在的做法不是直接将所有数据都插入关系数据库系统,而是将大量数据(如日志文件,社交媒体或 Web 点击日志)写入 Hadoop 的分布式文件系统(HDFS)、S3 或其他批量数据存储库,如Apache    HBase,以较低的成本提供大容量存储容量。驻留在此类存储系统中的数据可以通过SQL-on-Hadoop 引擎查询和处理,例如 Apache Hive,Apache Drill 或Apache Impala。但是,基础结构与传统数据仓库架构基本相同。

 

1.2 有状态的流式处理

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/921700
推荐阅读
相关标签
  

闽ICP备14008679号