Flink 使用场景

打印 上一主题 下一主题

主题 659|帖子 659|积分 1977

Apache Flink 功能强盛,支持开发和运行多种差别种类的应用程序。它的重要特性包罗:批流一体化、细密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不但可以运行在包罗 YARN、 Mesos、K8s 在内的多种资源管理框架上,还支持在裸机集群上独立摆设。在启用高可用选项的环境下,它不存在单点失效题目。毕竟证明,Flink 已经可以扩展到数千焦点,其状态可以达到 TB 级别,且仍能保持高吞吐、低耽误的特性。天下各地有很多要求严苛的流处理应用都运行在 Flink 之上。

事件驱动型应用

什么是事件驱动型应用?
事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。事件驱动型应用是在计算存储分离的传统应用底子上进化而来。在传统架构中,应用必要读写远程事件型数据库。
相反,事件驱动型应用是基于状态化流处理来完成。在该设计中,数据和计算不会分离,应用只需访问当地(内存或磁盘)即可获取数据。体系容错性的实现依赖于定期向远程持久化存储写入 checkpoint。下图形貌了传统应用和事件驱动型应用架构的区别。

事件驱动型应用的优势?

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

事件驱动型应用会受制于底层流处理体系对时间和状态的把控本领,Flink 诸多优秀特质都是围绕这些方面来设计的。它提供了一系列丰富的状态操作原语,答应以精确一次的一致性语义合并海量规模(TB 级别)的状态数据。此外,Flink 还支持事件时间和自由度极高的定制化窗口逻辑,而且它内置的 ProcessFunction支持细粒度时间控制,方便实现一些高级业务逻辑。同时,Flink 还拥有一个复杂事件处理(CEP)类库,可以用来检测数据流中的模式。
Flink 中针对事件驱动应用的明星特性当属 savepoint。Savepoint 是一个一致性的状态映像,它可以用来初始化恣意状态兼容的应用。在完成一次 savepoint 后,即可放心对应用升级或扩容,还可以启动多个版本的应用来完成 A/B 测试。
典范的事件驱动型应用实例

  1. 反欺诈
  2. 异常检测
  3. 基于规则的报警
  4. 业务流程监控
  5. (社交网络)Web 应用
复制代码
什么是数据分析应用?

数据分析任务必要从原始数据中提取有价值的信息和指标。传统的分析方式通常是利用批查询,或将事件纪录下来并基于此有限数据集构建应用来完成。为了得到最新数据的分析效果,必须先将它们加入分析数据集并重新执行查询或运行应用,随后将效果写入存储体系或天生报告。
借助一些先进的流处理引擎,还可以实时地举行数据分析。和传统模式下读取有限数据集差别,流式查询或应用会接入实时事件流,并随着事件消耗连续产生和更新效果。这些效果数据可能会写入外部数据库体系或以内部状态的形式维护。仪表展示应用可以相应地从外部数据库读取数据或直接查询应用的内部状态。如下图所示,Apache Flink 同时支持流式及批量分析应用。

流式分析应用的优势?

和批量分析相比,由于流式分析省掉了周期性的数据导入和查询过程,因此从事件中获取指标的耽误更低。不但云云,批量查询必须处理那些由定期导入和输入有界性导致的人工数据边界,而流式查询则无须考虑该题目。
另一方面,流式分析会简化应用抽象。批量查询的流水线通常由多个独立部件组成,必要周期性地调度提取数据和执行查询。云云复杂的流水线操作起来并不容易,一旦某个组件堕落将会影响流水线的后续步调。而流式分析应用整体运行在 Flink 之类的高端流处理体系之上,涵盖了从数据接入到连续效果计算的全部步调,因此可以依赖底层引擎提供的故障恢复机制。
Flink 如何支持数据分析类应用?

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

提取-转换-加载(ETL)是一种在存储体系之间举行数据转换和迁移的常用方法。ETL 作业通常会周期性地触发,将数据从事件型数据库拷贝到分析型数据库或数据仓库。
数据管道和 ETL 作业的用途相似,都可以转换、丰富数据,并将其从某个存储体系移动到另一个。但数据管道是以连续流模式运行,而非周期性触发。因此它支持从一个不断天生数据的源头读取纪录,并将它们以低耽误移动到尽头。例如:数据管道可以用来监控文件体系目次中的新文件,并将其数据写入事件日志;另一个应用可能会将事件流物化到数据库或增量构建和优化查询索引。下图形貌了周期性 ETL 作业和连续数据管道的差异。

典范的数据分析应用实例

  1. 电信网络质量监控
  2. 移动应用中的产品更新及实验评估分析
  3. 消费者技术中的实时数据即席分析
  4. 大规模图分析
复制代码
数据管道的优势?

和周期性 ETL 作业相比,连续数据管道可以显着低落将数据移动到目的端的耽误。此外,由于它可以或许连续消耗和发送数据,因此用途更广,支持用例更多。
Flink 如何支持数据管道应用?

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

  1.     [电子商务中的实时查询索引构建](https://www.ververica.com/blog/blink-flink-alibaba-search)
  2.     [电子商务中的持续 ETL](https://jobs.zalando.com/tech/blog/apache-showdown-flink-vs.-spark/)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表