第1章 状态化流处理概述

第1章 状态化流处理概述

Apache Flink是一个分布式流处理引擎,它提供了直观且极富表达力的API来实现有状态的流处理应用,并且支持在容错的前提下高效、大规模地运行此类应用。Flink于2014年4月进入Apache软件基金会,并在次年一月成为了顶级项目。flink.apache.org

传统数据处理架构

绝大多数企业所实现的传统架构都会将数据处理分为两类:事务型处理和分析型处理

事务型处理

单体应用架构
微服务架构

分析型处理

存储于不同事物型数据库系统中的数据可用于业务分析,然而用于存储事务型数据的多个数据库系统通常是相互隔离的,如果能将它们联合分析必然会创造更高的价值。此外,还经常需要转换数据为某种通用格式。

对于分析类查询,我们通常不会直接在事务型数据库上执行,而是将数据复制到一个专门用来处理分析类查询的数据仓库。为了填充数仓,需要将事务型数据库系统中的数据拷贝过去。这个向数仓拷贝数据的过程被称为提取 - 转换 - 加载Extract - Transform - Load,ETL)。ETL的基本流程是:从事务型数据库中提取数据,将其转换为通用表示形式(可能包含数据验证、数据归一化、编码、去重、表模式转换等工作),最终加载到分析型数据库中。该流程可能会非常麻烦,通常需要复杂的技术方案来满足性能要求。为了保证数仓的数据同步,ETL过程需要周期性地执行。

一旦数据导入数仓,我们就能对它们做查询分析。通常数仓中的查询可分为两类:定期报告查询和即席查询。无论哪一类查询,都是在数仓中以批处理的方式执行。

状态化流处理

几乎所有数据都是以连续事件流的形式产生。作为一类面向无限事件流的应用设计模式,状态化流处理适用于企业IT基础设施中的很多场景。首先简要解释一下状态化流处理的工作原理。

任何一个处理事件流的应用,如果要支持跨多条记录的转换操作,都必须是有状态的,即能够存储和访问中间结果。应用在收到事件后可以执行包括读写状态在内的任意计算。原则上,需要在应用中访问的状态有多种可选的存储位置,例如:程序变量、本地文件、嵌入式或外部数据库等。

有状态的流处理应用通常会从事件日志中读取事件记录。事件日志负责存储事件流并将其分布式化。由于事件只能以追加的形式写入持久化日志中,所以其顺序无法在后期改变。事件日志系统中最流行的当属Apache Kafka

出于很多原因,将运行在Flink之上的有状态的流处理应用和事件日志系统相连会很有意义。在该架构下,事件日志系统可以持久化输入事件并以确定的顺序将其重放。一旦出现故障,Flink会利用之前的检查点恢复状态重置事件日志的读取位置,以此来使有状态的流处理应用恢复正常。随后应用会从事件日志中读取并(快速)重放输入事件,直到追赶上数据流当前的进度。该技术不但可用于失败恢复,还可用于应用更新、Bug修复、结果修正、集群迁移或针对不同版本应用执行A/B测试。

综上所述,状态化流处理是一类用途广泛、灵活多变的设计模式,能够解决很多不同的应用问题。接下来我们介绍三类常见的有状态的流处理应用:1.事件驱动型应用;2.数据管道应用;3.数据分析应用

事件驱动型应用

事件驱动型应用是一类通过接收事件流触发特定应用业务逻辑的有状态的流式应用。
事件驱动型应用的典型应用场景有:

  • 实时推荐(例如在客户浏览商家页面的同时进行产品推荐)
  • 模式识别或复杂事件处理(例如根据信用卡交易记录进行欺诈识别)
  • 异常检测(例如计算机网络入侵检测)

事件驱动型应用本质上是之前讨论的微服务的演变。微服务通过REST调用进行通信,利用事务型数据库或键值存储等外部系统存储数据;事件驱动型应用利用事件日志进行通信,其数据则会以本地状态形式存储。

作为基本需求,系统要提供精确一次(exactly-once)的状态一致性保障和针对应用的可伸缩能力。

数据管道

数据管道:以低延迟的方式获取、转换并插入数据。

流式分析

流式分析应用不需要等待周期性触发。相反,它会持续获取事件流,以极低的延迟整合最新事件,从而可以不断更新结果。通常情况下,流式应用会把它们的结果保存在某种支持高效更新的外部数据存储中,例如数据库或键值存储。
流式分析应用常用于:

  • 手机网络质量监控
  • 移动应用中的用户行为分析
  • 消费者技术中的实时数据即席分析
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值