Flink 原理与项目实战

转存失败重新上传取消

一、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 任务调度原理

                 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值