一种基于FlinkSQL的SQL一致性状态恢复装置制造方法及图纸

技术编号:35904669 阅读:13 留言:0更新日期:2022-12-10 10:42
本发明专利技术公开了一种基于FlinkSQL的SQL一致性状态恢复装置,通过对FlinkSQL作业的计算拓扑,为SQL的计算拓扑生成唯一设置计算函数Hash值,固化整个计算拓扑的计算中间状态数据存储,来实现FlinkSQL同时运行多个SQL,SQL的变更,删除,新增之间的分布式状态互不影响,来保证实时计算的数据一致性状态恢复。本发明专利技术通过SQL计算拓扑一致性Hash值算法来固定计算拓扑的分布式状态,增强FlinkSQL的任务隔离性,提升资源的利用率。提升资源的利用率。提升资源的利用率。

【技术实现步骤摘要】
一种基于FlinkSQL的SQL一致性状态恢复装置


[0001]本专利技术涉及支付,金融领域,特别涉及一种基于FlinkSQL的SQL一致性状态恢复装置。

技术介绍

[0002]在流计算场景中,数据没有边界源源不断的流入的,每条数据流入都可能会触发计算,比如在进行count或sum这些操作,选择每次触发计算将所有流入的历史数据重新计算,如果遇到网络中断,对应的上次计算结果就会丢失,在节点恢复时,是需要将所有历史数据重新计算一遍的,这样比较消耗计算资源。Flink实时计算中采用了分布式快照的设计方案解决了运行计算任务的过程中见计算结果存储问题。在整个任务运行的过程中,中间存在着多个临时状态,比如说某些数据正在执行一个operator,但是只处理了一半数据,另外一般还没来得及处理,这也是一个状态。需要一种机制去保存记录执行过程中的中间状态,这种机制就是状态管理机制。
[0003]Flink是可以通过设置计算函数节点的Hash值来确保整个计算拓扑的一致性,来保障任务恢复的时候,函数节点能够从正确的位置获取到该函数的中间存储。但是当我们使用FlinkSQL开发作业的时候,无法为Flink作业设置计算函数的Hash值,以及在多个SQL任务同时运行在一个FlinkJob中时,以及在多个SQL作业有增删的时候,FlinkSQL作业在失败恢复的时候不能够从指定的Hash获取计算函数的中间状态。在这样的背景下,我们希望通过设计为不同SQL的计算拓扑生成唯一的计算Hash值,多个SQL的Hash相互隔离,来实现FlinkSQL作业能够同时运行,以及任务之间的变更仍然能够保证新、老的SQL任务能够获取到计算中间状态,保证计算的一致性。

技术实现思路

[0004]本专利技术要解决的技术问题是克服现有技术的缺陷,提供一种基于FlinkSQL的SQL一致性状态恢复装置,通过对FlinkSQL作业的计算拓扑,为SQL的计算拓扑生成唯一设置计算函数Hash值,固化整个计算拓扑的计算中间状态数据存储。来实现FlinkSQL同时运行多个SQL,SQL的变更,删除,新增之间的分布式状态互不影响,来保证实时计算的数据一致性状态恢复。
[0005]本专利技术提供了如下的技术方案:
[0006]本专利技术提供一种基于FlinkSQL的SQL一致性状态恢复装置,该装置包含SQL任务提交客户端,SQLGateway、SQL拓扑分析器、SQL拓扑Hash生成器,FlinkRuntime计算引擎,主要流程如下所示:
[0007](1)SQL客户端提交多个SQL任务到SQLGateway;
[0008](2)SQLGateway对每条SQL调用SQL拓扑分析器,生成对应的Flink计算拓扑;
[0009](3)生成的计算拓扑交给SQL拓扑Hash生成器,为该拓扑生成唯一的Hash值;
[0010](4)SQLGateway把任务提交运行,在运行时的Flink程序定期进行状态存储到外部
分布式存储系统中;
[0011](5)在FlinkRuntime遇到异常进行容错恢复的时候,从分布式快照中加载对应的状态快照,然后根据计算的拓扑唯一Hash值,进行获取状态,恢复计算结果。
[0012]与现有技术相比,本专利技术的有益效果如下:
[0013]现有的FlinkSQL作业时不支持多个SQL任务修改,从计算中间状态恢复也会出现脏数据。未变更的SQL任务,也会出现恢复状态异常的情况。FlinkSQL只推荐通过分开运行SQL任务的方式,提交到不同的FlinkSQL作业中来保障SQL的修改隔离。但是这样会造成数据的消费冗余,计算节点资源浪费;本专利技术通过SQL计算拓扑一致性Hash值算法来固定计算拓扑的分布式状态,增强FlinkSQL的任务隔离性,提升资源的利用率。
附图说明
[0014]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:
[0015]图1是本专利技术的整体架构图;
[0016]图2是本专利技术的任务恢复流程示意图;
[0017]图3是本专利技术的SQL拓扑分析器,根据SQL的语法树生成对应的计算拓扑,转换成Flink的基础函数示意图;
[0018]图4是图3中计算拓扑生成了固定的、唯一的计算拓扑Hash值示意图。
具体实施方式
[0019]以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。其中附图中相同的标号全部指的是相同的部件。
[0020]实施例1
[0021]如图1

4,本专利技术提供一种基于FlinkSQL的SQL一致性状态恢复装置,该装置组件包括:SQL任务网关,SQL拓扑分析器,SQL拓扑Hash生成器。
[0022]1、SQL任务网关接手用户提交的SQL,提交给SQL拓扑分析器为每一个SQL生成对应的计算拓扑;
[0023]2、为整个SQL计算拓扑的计算函数生成唯一Hash值;
[0024]3、FlinkSQL作业在新增SQL任务时候,为新SQL生成唯一拓扑Hash,从指定的状态存储进行恢复作业计算。
[0025]该装置中的SQL任务提交客户端,SQLGateway、SQL拓扑分析器、SQL拓扑Hash生成器,FlinkRuntime计算引擎主要流程如下所示:
[0026](1)SQL客户端提交多个SQL任务到SQLGateway;
[0027](2)SQLGateway对每条SQL调用SQL拓扑分析器,生成对应的Flink计算拓扑;
[0028](3)生成的计算拓扑交给SQL拓扑Hash生成器,为该拓扑生成唯一的Hash值;
[0029](4)SQLGateway把任务提交运行,在运行时的Flink程序定期进行状态存储到外部分布式存储系统中;
[0030](5)在FlinkRuntime遇到异常进行容错恢复的时候,从分布式快照中加载对应的
状态快照,然后根据计算的拓扑唯一Hash值,进行获取状态,恢复计算结果;
[0031]在Flink中仅仅提供了基础算子的分布式快照功能,用户需要在编写FlinkAPI的程序中,手动设置对应的Hash值,才能够让整个作业恢复。但是Flink程序目前不支持FlinkSQL任务的Hash值的设定,并且在任务恢复的过程中会存在数据状态错乱的问题,流程如图2。
[0032]SQL拓扑分析器,根据SQL的语法树生成对应的计算拓扑,转换成Flink的基础函数如图3。
[0033]在平台中SQL代表了计算任务,即使相同的SQL在不同的提交时间,也代表不同的计算任务,也有不同的计算状态,也就是我们需要在恢复的时候为它们生成不同的Hash值。在此,我们引入SQL_ID。单个SQL解析出来多个计算函数,并且计算拓扑是一个有向无环图的结构,我们给每一个计算函数引入本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FlinkSQL的SQL一致性状态恢复装置,其特征在于,该装置包含SQL任务提交客户端,SQL Gateway、SQL拓扑分析器、SQL拓扑Hash生成器,Flink Runtime计算引擎,主要流程如下所示:(1)SQL客户端提交多个SQL任务到SQL Gateway;(2)SQL Gateway对每条SQL调用SQL拓扑分析器,生成对应的Flink计...

【专利技术属性】
技术研发人员:尹春光张璐波万成龙从光辉
申请(专利权)人:天翼电子商务有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1