转存失败重新上传取消
一、Flink 是什么
Flink 能解决什么问题
如某业务服务性抽审逻辑: 按照窗口统计24小时内的接单数量,然后根据接单数量实时按照抽审比率进行抽审。
实现方式一
方案: 定时任务按照时间区间扫描表,统计接诊数量,按照比率抽审,校验抽审比率,防止超抽或少抽,记录抽审问题单。
问题: 大量快递员,大量问题。扫码主表对业务压力过大。且实现逻辑复杂。
实现方式二
方案二 采用redis 的zset 按照时间排序,手动实现滑动窗口,进行统计。
问题: 实现逻辑复杂,且redis 停机故障后,实时产生的数据无法统计。
实现方式 more ?
是否有一种实时窗口,能统计接诊量,并独立记录已经抽审的问题,避免主干业务压力,中间结果数据无执行记录 ?
Flink 介绍
Flink是新的stream计算引擎,用java实现。既可以处理stream data也可以处理batch data,可以同时兼顾Spark以及Spark streaming的功能,与Spark不同的是,Flink本质上只有stream的概念,batch被认为是special stream。Flink在运行中主要有三个组件组成,JobClient,JobManager 和 TaskManager。主要工作原理如下图
用户首先提交Flink程序到JobClient,经过JobClient的处理、解析、优化提交到JobManager,最后由TaskManager运行task。
二、Flink 特点
2.1 批流一体
处理有界数据、无界数据。
2.2 可靠的容错能力
集群级容错
集群管理器紧密集成。 如Hadoop YARN、Mesos或Kubernetes
高可用性设置。 消除单点故障。 HA 模式机遇Zookeeper。
应用级容错
一致性。 恢复机制基于应用程序状态的一致性检查点。支持Exactly-Once 语义。取保精确处理一次。
轻量级 。检查点状态可能达到TB级,生成和保存成本高。Flink 提供了执行异步和增量检查点。
2.3 高吞吐、低延迟。
2.4 大规模复杂运算
2.5 多平台部署。
三、Flink 架构
3.1 技术架构
Flink 主要由部署层、运行时层、API层、应用框架层、连接器组成。
应用框架层
Table&sql , CEP(复杂事件处理),Gelly(图计算),ML(机器学习)等
API层
Flink基于流执行引擎,Flink提供了跟多高抽象层的API便于用户编写分布式任务。下面介绍常见的几种API;
DataSet API: 对静态数据进行批处理作业,将静态数据抽象成分布式的数据集,用户可以方便的使用Flink提供的各种操作符对分布式数据集进行处理,支持Java,Scala和python;
DataStream API:对数据流进行流处理作业,将流式的数据抽象成分布式的数据流,用户可以方面的对分布式数据流进行各种操作,支持Java,scala和python;
Table API:对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过SQL的DSL对关系表进行各种查询操作,支持Java和Scala;
SQL: SQL查询是使用TableEnvironment的sqlquery()方法执行的,该方法以SQL的形式返回SQL查询的结果。Table可以在后续的SQL和Table API查询中使用,可以转换诶DataSet和DataStream,也可以写入TableSink。SQL和Table API可以无缝的整合,进行整体优化并转换为单个程序。要访问SQL中查询的表,必须在TableEnvironment中注册他,可以从TableSource,Table,DataStream和DataSet注册表,用户也可以在TableEnvironment中注册外部目录以制定数据源的位置。Blink开源后,将使Flink SQL更加完善稳定。
StateFul Stream Processing:最低级抽象只提供有状态流,通过Process Function嵌入到DataStream API中,它允许用户自由处理来自一个或者多个流的时间,并使用一致的容错状态,此外用户可以注册event time和processing time回调,允许程序实现复杂的计算。
3.2 任务调度原理

最低0.47元/天 解锁文章
611

被折叠的 条评论
为什么被折叠?



