【译】Flink 应用实践

得益于其强大的可扩展性,Apache Flink 在开发并运行各种不同类型的应用方面都是一个不错的选择,这些特性包括:

  • 对流处理与批处理的支持
  • 复杂状态管理
  • 事件-时间型的处理方法
  • 状态的持续唯一性保证

不仅如此,Flink 还可以部署在各种各样的资源管理平台,如YARN、Apache Mesos 以及 Kubernetes,同时也支持在逻辑上独立运行为一个集群。即便是高可用方面,Flink 也无可挑剔。事实证明,Flink 可以扩展到成千上万个内核,处理TB量级的应用状态,高吞吐,低时延,同时能够hold得住世上大部分流处理应用。
接下来,我们会探索基于Flink 实现的最常见的几种应用,并给一些真实的案例。

  • 事件驱动型应用(Event-Driven Applications)
  • 数据分析型应用(Data Analytics Applications)
  • 数据流水线型应用(Data Pipeline Applications)

事件驱动型应用(Event-driven Applications)

什么是事件驱动型应用?

一个事件驱动型应用往往是一个有状态的应用,该应用从一个或多个事件流源接受事件,并且通过进行相应的计算、状态变更以及其他操作来对这些事件做出响应。
相比传统的应用设计,事件驱动型应用无疑是一个革命。在传统场景中,计算和存储是分开的,应用程序从远程事务数据库读取数据并将数据持久化到该数据库。而事件驱动型应用恰恰相反,它基于一些有状态的流处理应用,数据和计算资源位于一处,从而可以实现本地数据访问(从内存或本地磁盘)。在处理期间,会周期性的拉取本地状态并同步写入远端一个位置来实现容错性这一特征。下面的图表揭示了传统型架构与事件驱动型应用架构的不同:


image

事件驱动型应用的好处?

高吞吐、低时延:相比传统方式中先存到远程数据库,再读取进行处理,事件驱动型应用直接本地访问事件,并直接处理,从而带来更好的表现。
容错性设计:周期性检查本地任务状态并异步、增量地更新到远端持久层。因此,检查点对常规事件处理的影响非常小。

事件驱动型应用的好处不仅是提供本地数据访问这一点,在传统架构中,多个应用往往共享一个数据库实例,因此每当有数据结构变更时,其他服务往往都需要做一定的配合,或者实例扩容情况出现时,其他服务访问数据库也会受到一定的性能影响。然而,本地化的数据访问模式,使得事件驱动型应用只需要负责自己的数据即可,数据结构的变更以及本应用的扩容操作也只需要较少的协同操作。

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

事件驱动应用程序的限制由流处理器处理时间和状态的能力来定义。Flink的许多突出特征都集中在这些概念上。Flink提供了一组丰富的状态原语,可以管理非常大的数据卷(最多可达几TB),并且精确地保证了一致性。此外,Flink支持事件时间、高度可定制的窗口逻辑和ProcessFunction提供的细粒度时间控制,从而实现了高级业务逻辑。此外,Flink还提供了一个用于复杂事件处理(CEP)的库,用于检测数据流中的模式。

然而,Flink对于事件驱动应用程序的突出特性是savepoint。保存点是一个一致的状态镜像,可以用作兼容应用程序的起点。给定一个保存点,应用程序可以更新或调整其规模,或者可以启动多个应用程序版本以进行A/B测试。

数据分析型应用(Data-Analytics Applications)

什么是数据分析型应用?

分析工作从源数据中抽取并洞察信息。在传统架构中,分析工作往往是基于一个有限的数据集来做批量查询。如果想要得到最新数据的结果,需要不断地把新数据增量加进去再做分析工作。结果会写到存储系统中,或者生成报告。
但是,借助一复杂流处理引擎,分析工作可以实时运行。在这种模式下,应用接收实时数据,并且随着新数据被消费,持续产生新的结果。这些结果要么写到一个外部数据库,要么以内部状态被维护起来。报表应用可以直接从外部数据库或者从本地应用读取最新的数据。Apache Flink 同时支持批处理分析以及流处理分析:


image

流分析应用的好处是什么?

批处理架构往往由几个独立的组件组成:

  • 周期性拉取数据
  • 执行查询操作

这些操作带来了时间开销,一旦某个环节出错就会影响整体。而基于复杂流处理引擎(如:Flink )的应用把所有步骤合并到一起:数据抓取、持续结果计算,因此避开了各出错环节,同时可以依赖引擎的错误恢复机制。

Flink 是如何支持数据分析应用型应用的?

Flink 对持续的流处理以及批处理都支持得很好。具体来说,它具有一个符合ANSI标准的SQL接口,该接口具有用于批处理和流式查询的统一语义。不管是查询静态事件记录数据集,还是查询实时事件流,该接口都能计算出相同的结果。丰富的自定义函数使得用户能够在SQL查询中执行自己的代码。如果需要更加定制化的处理逻辑,Flink 的DataStream API 或者DataSet API 也能够提供初级的控制支持。此外,Flink的Gelly库为批量数据集的大规模和高性能图形分析提供了算法和构建块。

数据流水线型应用(Data Pipeline Applications)

什么是数据流水线?

ETL是一种常见的在不同存储系统之间转换、迁移数据的方法。通常来说,他的工作就是周期性的触发数据拷贝动作,从一个关系型数据库,到一个分析型数据库,或者数据仓库。
数据流水线跟ETL的目的是一样的,都是在不同存储系统之间转换、加工、迁移数据,然而他是以一种持续六的模式运行,而不是周期性的触发,因此,它可以从那些持续产生数据的源读取并迁移数据,同时在较低时延的情况下写入另一个数据源。比如说,一个数据流水线可以监控某个文件系统目录中新文件的生成,并且将写入一个事件日志流内,另一个应用就能基于此事件流实现一个增量型的文件搜索引擎。
下面的表格解释了周期性ETL以及持续数据流水线应用的区别:


image

数据流水线的好处是什么?

最明显的一个好处就是低时延,其次,由于这种模式能够持续的消费并产生数据,因此有更广阔的应用场景。

Flink 是如何支持数据流水线的?

很多常见的数据转换或者加工任务都可以通过Flink 的SQL接口来达成,它也支持自定义处理函数。用户还可以使用DataStream PI来实现更高级的数据流水线需求。Flink 提供了相当丰富的存储系统连接器,如:Kafka、Kinesis、Elasticsearch以及JDBC数据库系统。他也为那些监控文件目录的系统以及以时间桶形式写文件的系统提供持续的数据源支持。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容