精选30+云产品,助力企业轻松上云!>>>

点击蓝色“大数据每日哔哔”关注我

加个“星标”,第一时间获取大数据架构,实战经验



Flink 主要应用场景有三类:

1.Event-driven Applications【事件驱动】

2.Data Analytics Applications【分析】

3.Data Pipeline Applications【管道式ETL】

下面分别介绍三种场景中的应用:

Event-driven Applications

事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。

下图描述了传统应用和事件驱动型应用架构的区别。

左边是为 Traditional transaction Application(传统事务应用),右边是Event-driven Applications(事件驱动应用)。

Traditional transaction Application执行流程:比如点击流Events可以通过Application写入Transaction DB(数据库),同时也可以通过Application从Transaction DB将数据读出,并进行处理,当处理结果达到一个预警值就会触发一个Action动作,这种方式一般为事后诸葛亮。

Event-driven Applications执行流程:比如采集的数据Events可以不断的放入消息队列,Flink应用会不断ingest(消费)消息队列中的数据,Flink 应用内部维护着一段时间的数据(state),隔一段时间会将数据持久化存储(Persistent sstorage),防止Flink应用死掉。Flink应用每接受一条数据,就会处理一条数据,处理之后就会触发(trigger)一个动作(Action),同时也可以将处理结果写入外部消息队列中,其他Flink应用再消费。

事件驱动型应用的优势?

事件驱动型应用无须查询远程数据库,本地数据访问使得它具有更高的吞吐和更低的延迟。而由于定期向远程持久化存储的 checkpoint 工作可以异步、增量式完成,因此对于正常事件处理的影响甚微。事件驱动型应用的优势不仅限于本地数据访问。传统分层架构下,通常多个应用会共享同一个数据库,因而任何对数据库自身的更改(例如:由应用更新或服务扩容导致数据布局发生改变)都需要谨慎协调。反观事件驱动型应用,由于只需考虑自身数据,因此在更改数据表示或服务扩容时所需的协调工作将大大减少。

Flink 如何支持事件驱动型应用?


事件驱动型应用会受制于底层流处理系统对时间和状态的把控能力,Flink 诸多优秀特质都是围绕这些方面来设计的。它提供了一系列丰富的状态操作原语,允许以精确一次的一致性语义合并海量规模(TB 级别)的状态数据。此外,Flink 还支持事件时间和自由度极高的定制化窗口逻辑,而且它内置的 ProcessFunction 支持细粒度时间控制,方便实现一些高级业务逻辑。同时,Flink 还拥有一个复杂事件处理(CEP)类库,可以用来检测数据流中的模式。

Flink 中针对事件驱动应用的明星特性当属 savepoint。Savepoint 是一个一致性的状态映像,它可以用来初始化任意状态兼容的应用。在完成一次 savepoint 后,即可放心对应用升级或扩容,还可以启动多个版本的应用来完成 A/B 测试。

典型的事件驱动类应用:

1.欺诈检测(Fraud detection)

2.异常检测(Anomaly detection)

3.基于规则的告警(Rule-based alerting)

4.业务流程监控(Business process monitoring)

5.Web应用程序(社交网络)

Data Analytics Applications

如下图所示,Apache Flink 同时支持流式及批量分析应用。

Data Analytics Applications包含Batch analytics(批处理分析)和Streaming analytics(流处理分析)。

Batch analytics可以理解为周期性查询:比如Flink应用凌晨从Recorded Events中读取昨天的数据,然后做周期查询运算,最后将数据写入Database或者HDFS,或者直接将数据生成报表供公司上层领导决策使用。

Streaming analytics可以理解为连续性查询:比如实时展示双十一天猫销售GMV,用户下单数据需要实时写入消息队列,Flink 应用源源不断读取数据做实时计算,然后不断的将数据更新至Database或者K-VStore,最后做大屏实时展示。

Flink 为持续流式分析和批量分析都提供了良好的支持。具体而言,它内置了一个符合 ANSI 标准的 SQL 接口,将批、流查询的语义统一起来。无论是在记录事件的静态数据集上还是实时事件流上,相同 SQL 查询都会得到一致的结果。同时 Flink 还支持丰富的用户自定义函数,允许在 SQL 中执行定制化代码。如果还需进一步定制逻辑,可以利用 Flink DataStream API 和 DataSet API 进行更低层次的控制。此外,Flink 的 Gelly 库为基于批量数据集的大规模高性能图分析提供了算法和构建模块支持。

Data Pipeline Applications

提取-转换-加载(ETL)是一种在存储系统之间进行数据转换和迁移的常用方法。ETL 作业通常会周期性地触发,将数据从事务型数据库拷贝到分析型数据库或数据仓库。

这里所说的数据管道和 ETL 作业的用途相似,都可以转换、丰富数据,并将其从某个存储系统移动到另一个。但数据管道是以持续流模式运行,而非周期性触发。因此它支持从一个不断生成数据的源头读取记录,并将它们以低延迟移动到终点。例如:数据管道可以用来监控文件系统目录中的新文件,并将其数据写入事件日志;另一个应用可能会将事件流物化到数据库或增量构建和优化查询索引。

下图描述了周期性 ETL 作业和持续数据管道的差异:

Data Pipeline Applications包含Periodic (周期性)ETL和Data Pipeline(管道)

Periodic ETL:比如每天凌晨周期性的启动一个Flink ETL Job,读取传统数据库中的数据,然后做ETL,最后写入数据库和文件系统。

Data Pipeline:比如启动一个Flink 实时应用,数据源(比如数据库、Kafka)中的数据不断的通过Flink Data Pipeline流入或者追加到数据仓库(数据库或者文件系统),或者Kafka消息队列。

和周期性 ETL 作业相比,持续数据管道可以明显降低将数据移动到目的端的延迟。此外,由于它能够持续消费和发送数据,因此用途更广,支持用例更多。

很多常见的数据转换和增强操作可以利用 Flink 的 SQL 接口(或 Table API)及用户自定义函数解决。如果数据管道有更高级的需求,可以选择更通用的 DataStream API 来实现。Flink 为多种数据存储系统(如:Kafka、Kinesis、Elasticsearch、JDBC数据库系统等)内置了连接器。同时它还提供了文件系统的连续型数据源及数据汇,可用来监控目录变化和以时间分区的方式写入文件。


参考:

https://flink.apache.org/zh/usecases.html

https://www.cnblogs.com/dajiangtai/p/10642423.html


推荐阅读


Spark 入门系列-简介以及生态

实时数仓与离线数仓总结(一)

Flink 里程碑版本即将发布,快点入手

(完)

本文分享自微信公众号 - 大数据每日哔哔(bb-bigdata)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

从 Flink 应用场景出发,了解它的设计思路相关推荐

  1. 高并发场景下秒杀系统的设计思路

    点击上方「蓝字」关注我们 1. 概述 秒杀系统之所以难做,是因为在极短的时间内涌入大量的请求,来同时访问有限的服务资源,从而造成系统负载压力大,甚至导致系统服务瘫痪以及宕机的可能.本文会介绍秒杀系统中 ...

  2. 【专栏原创]】忘掉一切,从用户场景出发——我在需求上犯过的错

    点击上方 "公众号" 可以订阅哦! 在做产品之前,看过一些书和网络博文.这些书或者网络博文里面讲到的如何抓取用户需求往往是这样说的: 贴近用户,做用户调研: 换位思考,了解用户: ...

  3. 阿里云张献涛:一切从场景出发,实现计算的全场景覆盖

    简介:阿里云弹性计算的最新进展 9月18日,2020云栖大会上,阿里巴巴研究员.阿里云智能弹性计算负责人张献涛分享了阿里云弹性计算的最新进展. 图:阿里巴巴集团研究员.阿里云智能弹性计算负责人张献涛 ...

  4. Flink 新场景:OLAP 引擎性能优化及应用案例

    摘要:本文由阿里巴巴技术专家贺小令(晓令)分享,主要介绍 Apache Flink 新场景 OLAP 引擎,内容分为以下四部分: 背景介绍 Flink OLAP 引擎 案例介绍 未来计划 一.背景介绍 ...

  5. Apache Flink新场景——OLAP引擎

    最近我们也正打算做OLAP分析平台,在调研的过程中,发现已有的成熟技术只能满足我们的部分需求,相信大家也有这样的困惑,本文分享的是来自阿里巴巴集团的技术专家贺小令分享为什么选择使用 Flink 作为新 ...

  6. 从用户交互场景出发,欧瑞博MixPad要系统化定义智能居住空间

    近两年,智能家居市场十分火爆,国内消费者对智能家居产品的接受程度越来越高,不过,消费热潮还集中在浪潮一般出现的各类智能家居单品上.很难有一款产品能够系统化地为消费者描绘全屋智能家居解决方案,从而改变人 ...

  7. 车联网 TSP 平台场景中的 MQTT 主题设计

    本文作者:田桢,前上汽大众平台架构师,现为中科创达汽车云技术负责人 前言 在车联网生态中,TSP(Telematics Service Provider)平台在产业链中居于核心地位,上接汽车.车载设备 ...

  8. 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景

    Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用 ...

  9. MySQL在并发场景下的问题及解决思路

    MySQL在并发场景下的问题及解决思路 参考文章: (1)MySQL在并发场景下的问题及解决思路 (2)https://www.cnblogs.com/leefreeman/p/8286550.htm ...

最新文章

  1. 注定一爆就完的ZAO ,为什么只是一剂社交毒药?
  2. 关于Apahce服务器安装中遇到的问题
  3. oracle数据库元数据SQL查询
  4. 60个我们应该看到的简单和创意的广告
  5. 聊聊并发(四)深入分析ConcurrentHashMap
  6. web.xml.jsf_看一下即将发布的JSF 2.3 Push支持
  7. CentOS 7 搭建CA认证中心实现https取证
  8. Android开发笔记(七十七)图片缓存算法
  9. js的深拷贝的理解和实现
  10. iOS中分段控制器与UIScrollView结合使用
  11. 【OneNote】同时设置中英文字体显示(雅黑+Consolas)
  12. 全志平台动态mac地址解决办法记录
  13. 全国计算机等级证书和职业资格证书(计算机)哪个好
  14. oracle的mins,分钟的英文缩写,10min还是10mins!
  15. Vivado IP核之复数浮点数乘法 Floating-point
  16. 地理信息三维可视化技术在城市规划中的应用
  17. mysql 等待函数,mysql 函数
  18. linux下eeprom读写测试,本科毕业设计__基于linux的eeprom的读写控制.doc
  19. 最简单的springboot整合websocket方式
  20. android 隐藏输入法时自动关闭弹窗,Android疑难杂症之Dialog消失,关闭输入法

热门文章

  1. Xcode 9.0 beta 3 GPUImage崩溃问题(presentBufferForDisplay)
  2. 通过安装扩展让 KDE Plasma 5 桌面看起来感觉就像 Windows 10 桌面
  3. 提高个人执行力的途径
  4. Node Sass could not find a binding for your current environment: OS X 64-bit with Node.js 10.x
  5. NodeJS的环境变量process.env.*
  6. Mysql 基础命令
  7. SqlMap自动化SQL注入测试工具简绍
  8. 虚拟机网络连接三种方式(桥接、NAT、主机)
  9. 地图中添加沿线文字标注
  10. 5000+图片找到你喜欢的那个TA,Python爬虫+颜值打分