背景
随着网络迅速发展,大数据的处理呈现出非常明显的实时化趋势。在实时化的大趋势底下,了解并熟悉Flink常用的三大典型应用场景,对于我们理解并使用Flink具有很大的帮助。
事件驱动型应用
事件驱动表示一个事件会触发另一个或者是很多个后续的事件,然后这一系列事件会形成一些信息,基于这些信息需要做一定的处理。
通俗讲,事件驱动型应用是一类具有状态的应用,会根据事件流中的事件触发计算、更新状态或进行外部系统操作。
常见于实时计算业务中,比如:实时推荐,金融反欺诈,实时规则预警等。
常见的事件驱动型场景举例
- 社交场景下,如用户点赞,关注某博主,被关注人的粉丝数就会发生变化。之后如果被关注的人发了一条动态,关注他的粉丝也会收到消息通知。
- 网购的场景下,如用户给商品做评价,这些评价一方面会影响店铺的星级,另外一方面有恶意差评的检测。此外,用户通过点击信息流,也可以看到商品派送或其他状态,这些都可能触发后续的一系列事件。
- 金融反欺诈的场景,诈骗者通过短信诈骗,然后在取款机窃取别人的钱财。在这种场景底下,我们通过摄像头拍摄后,迅速反应识别出来,然后对犯罪的行为进行相应的处理。
数据分析型应用
用适当的统计分析方法将收集来的大量数据进行分析,将他们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。
营销大屏,销量的升降,营销策略的结果进行环比、同比的比较,PV、UV 的统计,这些背后都涉及到大量信息实时的分析和聚合,都是非常典型的数据分析型应用场景。
以淘宝双 11 为例,在 2020 年天猫双 11 购物节,阿里基于 Flink 的实时计算平台每秒处理的消息数达到了 40 亿条,数据体量达到 7TB,订单创建数达到 58 万/秒,计算规模也超过了 150 万核。
类似上图这种数据体量大,计算准确性要求高,结果要求快且准的场景,也是Apache Flink 非常擅长的。
数据管道型应用 (ETL)
ETL(Extract-Transform-Load)是从数据源抽取/转换/加载/数据至目的端的过程。
通俗讲,ETL就是从一个或多个数据源获取数据,进行一些转换操作和信息补充,将结果存储起来。如图
传统的 ETL 使用离线处理,经常做的是小时级别或者天级别的 ETL。
实时数仓要求在分钟级或者秒级就能够对数据进行更新,从而进行及时的查询,能够看到实时的指标,便于对业务做及时的判断与分析。
Flink使用何种方式来处理ETL?
一方面 Flink 有非常丰富的 Connector,支持多种数据源和数据 Sink,囊括了所有主流的存储系统。另外它也有一些非常通用的内置聚合函数来完成 ETL 程序的编写,因此 ETL 类型的应用也是它非常适合的应用场景。