一种确定变更影响面的方法及系统与流程

文档序号:30583552发布日期:2022-06-29 13:53阅读:128来源:国知局
1.本技术属于信息
技术领域
:,具体涉及一种确定变更影响面的方法及系统。
背景技术
::2.当业务侧发生变更时,该变更涉及的影响面往往也要进行相适应的修改,才能保证业务的正常进行。3.目前多采用人工方式确定业务侧变更的影响面,存在影响面定位不及时的问题,容易造成线上事故。技术实现要素:4.本技术实施例提供一种确定变更影响面的方法及系统,能够解决相关技术中由于变更影响面定位不及时导致容易造成线上事故的问题。5.第一方面,本技术实施例提供了一种确定变更影响面的系统,该系统包括:监听模块、解析模块以及告警模块;6.所述监听模块用于对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给所述告警模块;7.所述解析模块用于对数据侧数据进行血缘分析,构建数据血缘关系;8.所述告警模块用于根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知。9.可选地,在一个实施例中,所述解析模块包括血缘解析服务单元和血缘存储单元;10.所述血缘解析服务单元用于对所述数据侧数据进行血缘分析,构建所述数据血缘关系;11.所述血缘存储单元用于存储所述数据血缘关系;12.所述告警模块具体用于根据所述目标变更从所述血缘存储单元存储的所述数据血缘关系中调用所述目标变更对应的目标数据血缘关系,基于所述目标数据血缘关系确定所述目标变更对应的影响面。13.可选地,在一个实施例中,所述解析模块还包括元数据服务单元;14.所述元数据服务单元用于对所述血缘解析服务单元构建得到的所述数据血缘关系进行补充。15.可选地,在一个实施例中,所述解析模块还包括资产打标服务单元;16.所述资产打标服务单元用于基于所述数据血缘关系进行数据链路打标和数据链路分级,得到各数据链路的分类和分级结果。17.可选地,在一个实施例中,所述解析模块还包括数据资产库;18.所述数据资产库用于存储所述各数据链路的分类和分级结果。19.第二方面,本技术实施例提供了一种确定变更影响面的方法,该装方法包括:20.对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给告警模块;21.对数据侧数据进行血缘分析,构建数据血缘关系;22.所述告警模块根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知。23.可选地,在一个实施例中,所述对数据侧数据进行血缘分析,构建数据血缘关系之后,所述方法还包括:24.存储所述数据血缘关系;25.所述根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,包括:26.根据所述目标变更从所述数据血缘关系中调用所述目标变更对应的目标数据血缘关系,基于所述目标数据血缘关系确定所述目标变更对应的影响面。27.可选地,在一个实施例中,所述对数据侧数据进行血缘分析,构建数据血缘关系之后,所述方法还包括:28.对所述数据血缘关系进行补充。29.可选地,在一个实施例中,所述对数据侧数据进行血缘分析,构建数据血缘关系之后,所述方法还包括:30.基于所述数据血缘关系进行数据链路打标和数据链路分级,得到各数据链路的分类和分级结果。31.可选地,在一个实施例中,所述得到各数据链路的分类和分级结果之后,所述方法还包括:32.存储所述各数据链路的分类和分级结果。33.本技术带来的有益效果如下:34.采用本技术实施例提供的方案,监听模块用于对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给所述告警模块;解析模块用于对数据侧数据进行血缘分析,构建数据血缘关系;告警模块用于根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知;使得可以及时确定业务侧变更对应的影响面并进行通知,进而技术人员可以及时采取相应措施,以避免线上事故的发生。附图说明35.为了更清楚地说明本技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:36.图1为本技术实施例提供的一种确定变更影响面的系统的结构示意图;37.图2为本技术实施例提供的另一种确定变更影响面的系统的结构示意图;38.图3为本技术实施例提供的又一种确定变更影响面的系统的结构示意图;39.图4为本技术实施例提供的一种确定变更影响面的方法的流程示意图。具体实施方式40.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本技术保护的范围。41.如
背景技术
:所述,当业务侧发生变更时,该变更在数据侧所涉及的影响面往往也要进行相适应的修改,才能保证业务的正常进行。由于业务侧数据一般利用mysql/pg数据库管理系统进行管理,数据侧数据一般利用如hive等数据仓库工具进行管理,这种差异使得业务侧和数据侧之间存在一定的隔离性,当业务侧发生变更时,数据侧不能及时响应,以至于不能及时进行相适应的修改。目前,为使业务侧变更涉及的影响面也能够进行相适应的修改,保证业务的正常、顺利进行,多依赖人工方式(口口相传)确定业务侧变更的影响面,如,技术人员收到业务侧变更的消息,然后根据该变更在数据侧进行人工查询,确定该变更的影响面,这种方式往往存在着影响面定位不及时的问题,容易造成线上事故。42.针对此,本技术实施例提供一种确定变更影响面的系统,以解决上述技术问题。如图1所示,该系统可以包括监听模块、解析模块以及告警模块;所述监听模块用于对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给所述告警模块;所述解析模块用于对数据侧数据进行血缘分析,构建数据血缘关系;所述告警模块用于根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知。43.其中,所述监听模块可以是二次开发的archery,archery是一种漏洞评估和管理工具,通过对其进行二次开发,可以赋予其实时监听业务侧目标变更以及实时发送目标变更至告警模块的功能。44.在本技术实施例中,监听模块将监听到的业务侧目标变更发送给告警模块时,可以通过消息队列kafka将监听到的业务侧目标变更推送至告警模块,如图2所示。具体地,可以对archery执行输出端进行改造,增加输出kafka功能,archery的监听功能和输出kafka功能改造过程可以如下:45.在archery的config.html添加kafka推送相关的配置,一个是开关,一个是server地址,增加kafka-send.py把与用户在业务侧提交申请阶段和执行阶段相关的ddl(数据定义语言)推送到kafka_api.py;在kafka_api.py新增kafka推送的工具类。相应地,告警模块可以提供kafka推送的入口,最终调用kafka_api.py;并可以重新封装kafka的推送信息格式,使得后续在通知时可以分别通过电话、短信、微信、钉钉、飞书、邮件等方式进行通知,如图1所示。46.在本技术实施例中,监听模块监听的对象可以是业务库,如图1所示,业务库例如可以是mysql、pg,其中可以存储有业务表。业务侧发生的所述目标变更可以是ddl表结构、api接口参数或mq(消息队列)消息体等发生变更,当发生这些变更,而没有对相关影响面进行对应修改时,容易导致业务报错,因此本技术实施例可以确定这些变更对应的影响面。47.在一种实施方式中,告警模块在接收到所述目标变更后,还可以直接将所述目标变更进行通知。能够理解的是,本技术实施例通过设置监听目标变更并实时推送目标变更的逻辑,使得可以实时捕捉业务侧发生的目标变更,进而业务侧发生目标变更后,技术人员可以实时获知,提高事前、事中的感知度,从而提前做好即将采取措施(如即将要对影响面进行修改)的准备。48.所述解析模块对数据侧数据进行血缘分析,可以是对数据侧的数据仓库中的数据进行血缘分析,该数据仓库中存储有业务数据。为便于获取数据仓库中的数据,解析模块可以利用查询引擎,查询引擎可以包括flinksql、sparksql、hivesql和trinosql中的任意一个或多个,不同的场景可以应用不同的查询引擎。为了满足更多场景下的查询需求,在本技术实施例中,查询引擎包括flinksql、sparksql、hivesql和trinosql,如图1所示。49.在本技术实施例中,解析模块可以根据数据全链路对数据侧数据进行血缘分析。解析模块基于对数据侧数据的血缘分析,构建出来的数据血缘关系,具体可以是任务级、库级、表级、字段级血缘关系;即,解析模块对数据侧数据进行血缘分析,构建任务级、库级、表级、字段级血缘关系,也可以用任务/库/表/字段表示。例如,上游业务侧存在表a,下游数据侧存在表b和表c,表b和表c均是由表a经过计算得到的,那么解析模块构建出来的表级血缘关系可以为表a、表b和表c之间的上述血缘关系。50.在本技术实施例中,所述告警模块进一步可以包括确定单元和通知单元,如图2所示,确定单元用于根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,通知单元用于根据确定单元得到的结果进行通知,即,将所述影响面进行通知。51.确定单元根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,具体可以包括:根据所述目标变更,从所述数据血缘关系中确定所述目标变更对应的目标数据血缘关系;基于所述目标数据血缘关系确定所述目标变更对应的影响面。52.可以理解的是,数据侧数据较多,解析模块对于数据侧数据进行血缘分析,可以得到多个数据血缘关系。若要确定所述目标变更对应的影响面,先要确定该变更涉及的数据血缘关系,即对应的目标数据血缘关系,然后基于该目标数据血缘关系确定对应的影响面。基于目标数据血缘关系确定对应的影响面,可以是通过目标数据血缘关系确定上下游受影响的任务/表等,即为对应的影响面。例如,接上述示例,业务侧表a发生变更,告警模块根据该变更可以获取解析模块解析得到的数据血缘关系中与表a相关的目标数据血缘关系,表a、表b和表c如上述的血缘关系,表a发生更改,表b和表c一般也会受到影响,因此可以定位影响面为表b和表c。53.在实际应用中,通知单元的通知内容中不仅可以包括影响面,还可以包括业务侧变更,以及两者之间的对应关系。54.在本技术实施例中,通知单元进行通知之前,确定单元还可以将所述目标变更与所述目标数据血缘关系进行比较,判断变更对应的影响面是否已经进行修改(如表b和表c是否进行相应修改),在未进行修改的情况下,通知单元再进行通知。具体过程可以例如:将ddl表结构、api接口参数、mq消息体等变更与任务/库/表/字段进行比较,出现不一致时,说明业务侧发生变更,但上游业务侧服务/任务/接口等变更没有及时通知,下游数据侧没有及时修改,此时可以进行通知,通知业务侧变更以及对应的影响面,使得技术人员及时发现问题并解决,保证业务的正常、顺利进行。55.可以理解,采用本技术实施例提供的确定变更影响面的系统,通过监听模块对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给告警模块,通过解析模块对数据侧数据进行血缘分析,构建数据血缘关系,以及通过告警模块根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知;使得可以及时确定业务侧变更对应的影响面并进行通知,进而技术人员可以及时采取相应措施,以避免线上事故的发生。56.另外,相关技术中还存在着上游业务侧服务/任务/接口等变更通知不及时,容易造成线上事故的问题,本技术上述实施例通过上述方案构建了自动化通知告警机制,解决了该问题的同时,也大大节约了人力。57.并且,相关技术中人工确定业务侧变更影响面的方式往往也存在着影响面定位不准确的问题,如只定位到了表b,没有定位到表c,而本技术实施例提供的确定变更影响面的系统由于可以基于解析模块构建的数据血缘关系进行影响面定位,可以准确确定业务侧变更的影响面。58.为了便于告警模块根据业务侧变更调用数据血缘关系,在一种实施方式中,本技术实施例提供的确定变更影响面的系统中,如图2所示,所述解析模块包括血缘解析服务单元和血缘存储单元,所述血缘解析服务单元用于对数据侧数据进行血缘分析,构建数据血缘关系;所述血缘存储单元用于存储所述数据血缘关系;则,所述告警模块具体用于根据所述目标变更从所述血缘存储单元存储的所述数据血缘关系中调用所述目标变更对应的目标数据血缘关系,基于所述目标数据血缘关系确定所述目标变更对应的影响面。59.其中,所述血缘解析服务单元可以是sql血缘解析服务单元,实时解析flinksql、sparksql、hivesql、trinosql。所述血缘解析服务单元中可以部署语法解析器例如antlr,以对数据侧数据进行解析。60.进一步,所述血缘解析服务单元具体可以包含临时表存储器和血缘关系存储器。其中,临时表存储器:存放的是从词法解析器中传来的修改嵌套查询结构而生成的临时表名称。这些表由解析器构建而非sql编写者构建,因而sql文本并未设置删除语法来删除这些临时表。在整个语法解析的最后,会查询这个存储器的内容,删除多余的血缘关系。血缘关系存储器:在每一次完成生成、插入语法解析后,会将对应解析出来的目标表列名字段与源表列名字段的对应关系存储到血缘关系存储器中。61.在本技术实施例中,血缘解析服务单元解析得到的数据血缘关系可以以图的形式存在血缘存储单元中,通过血缘关系,可以直观地得到数据整个生命周期。具体过程可以为:通过解析数据接入任务(如datax任务离线数据同步工具/平台),数据开发任务(如hivesql/sparksql/prestosql/flinksql等类型任务),数据服务等数据流转环节,通过血缘解析服务单元构建出任务级、库级、表级、字段级血缘依赖,存储到血缘存储单元。例如,从datax的reader中解析出输入库/表/字段;从writer中可以解析到输出库/表/字段;其他sql任务可类似可以得到输入和输出,连接多个输入和输出就可以得到一张或者多张由点和线组成的图,将得到这些图存储到血缘存储单元即可。62.所述血缘存储单元中可以存储血缘解析服务单元解析得到的所有数据血缘关系。所述血缘存储单元具体可以是nebula图数据库,可以实现大数据量场景下的数据血缘关系的快速导入。如表1所示,从不同量级的图从入库时间,一度好友查询,二度好友查询,共同好友查询几个方面对几个图数据库进行了对比,可以看到在导入性能上,数据量小的时候nebulagraph的导入效率稍慢于neo4j,但在大数据量的时候nebulagraph的导入明显优于其他两款图数据库;在3种查询场景下,nebulagraph的效率都明显高于neo4j,与hugegraph相比也有一定的优势。63.表1[0064][0065]可以理解,采用上述方案,通过在解析模块中设置血缘解析服务单元和血缘存储单元,利用血缘存储单元存储血缘解析服务单元构建的数据血缘关系,可以便于告警模块快速调用所需的数据血缘关系。[0066]为了将影响面通知到对应的负责人,如接上述示例,表b和表c分别有不同的负责人,当确定表a的影响范围为表b和表c后,分别通知到表b和表c对应的负责人,才能快速采取措施。因此,在一种实施方式中,本技术实施例提供的确定变更影响面的系统中,所述解析模块还包括元数据服务单元,如图2所示;所述元数据服务单元用于对所述血缘解析服务单元构建得到的数据血缘关系进行补充(即,补足血缘依赖),得到补充后的数据血缘关系。[0067]其中,所述元数据服务单元可以是在血缘解析服务单元构建得到的数据血缘关系不准确、不合理或者血缘依赖不足的情况下,对所述数据血缘关系进行补充。[0068]在本技术实施例中,血缘解析服务单元构建的是任务级、库级、表级、字段级血缘关系,可以用任务/库/表/字段表示;缺少与对应负责人的血缘依赖关系,血缘依赖不足。此时,元数据服务单元可以对所述任务级、库级、表级、字段级血缘关系进行补充,补足对应负责人的血缘依赖关系,得到任务级、库级、表级、字段级、负责人血缘关系,可以用任务/库/表/字段/负责人表示。相应地,血缘存储单元中存储的可以是补充后的数据血缘关系,如任务/库/表/字段/负责人。[0069]可以理解,采用上述方案,通过在解析模块中设置元数据服务单元,对任务级、库级、表级、字段级血缘关系进行补充,补足对应负责人的血缘依赖关系,使得当确定变更对应的影响面后,可以精准地通知到对应的负责人,从而可以快速采取措施,进一步避免线上事故的发生。[0070]为了优先保障核心业务链路的顺利进行和稳定性,在一种实施方式中,本技术实施例提供的确定变更影响面的系统中,所述解析模块还包括资产打标服务单元,如图2所示;所述资产打标服务单元用于基于所述血缘解析服务单元构建的数据血缘关系进行数据链路打标和数据链路分级,得到各数据链路的分类和分级结果,以实现数据资产的分类和分级。[0071]在实际应用中,业务侧变更对应的影响面中,可能有些数据链路较为重要,有些数据链路重要程度较低,针对重要程度不同的数据链路可以设置不同的通知优先级。如接上述示例,表b对应的数据链路较为重要,表c对应的数据链路重要程度较低,那么可以设置不同的通知优先级,如表b优先通知,表b不仅通知到负责人,还通知到负责人的上级等,或者例如表b进行通知,表a不进行通知等。可以理解,通过对数据资产分类和分级,制定对应的通知优先级,可以优先保障核心业务链路的顺利进行和稳定性。[0072]资产打标服务单元基于血缘解析服务单元构建的数据血缘关系进行数据链路打标(进行标记)和数据链路分级,可以由下述过程得到:资产打标服务单元扫描所述数据血缘关系(如图2所示,该数据血缘关系可以由血缘存储单元获得)并存储,并对存储的数据依赖链路(数据链路)进行统计,将表在各数据依赖链路上出现次数统计并存储,根据出现次数可以设置各个节点的权重。在实际应用中,为提升资产打标服务单元打标和分级的准确性,还可以进一步结合元数据服务单元提供的数据。[0073]在本技术实施例中,资产打标服务单元具体可以包括定时扫描任务子单元和数据资产查询服务子单元。其中,定时扫描任务子单元:以每个表作为根节点,扫描其依赖关系并存储,再对存储的依赖链路进行统计,将表链路上出现次数统计并存储。数据资产查询服务子单元:根据定时扫描任务存储的表在链路上出现次数统计结果提供api查询接口,使得监听模块监听到源头表结构变化后,下游数据侧就可以快速反应,快速修复受影响的表和任务,也可以确定出优先需要修复的任务和表。[0074]进一步,告警模块在确定业务侧变更对应的影响面后,以及在进行通知之前,还可以根据所述数据链路打标和所述数据链路分级,确定对应的通知优先级。例如,根据所述数据链路打标和所述数据链路分级,确定表b对应的链路为重要程度较高的核心业务链路,通知优先级较高,可以优先进行通知,使得可以优先采取措施。[0075]可以理解,采用上述方案,通过在解析模块中设置资产打标服务单元,基于数据血缘关系进行数据资产打标、分级,梳理出核心业务链路,针对不同类型、等级的数据资产可以设置不同的通知优先级,从而可以优先保障核心业务链路的顺利进行和稳定性。[0076]为了便于告警模块调用打标和分级结果,在一种实施方式中,本技术实施例提供的确定变更影响面的系统中,所述解析模块还包括数据资产库,如图2所示,所述数据资产库用于存储资产打标服务单元进行数据链路打标和数据链路分级后的结果,也可以理解为用于存储各数据链路的分类和分级结果。[0077]在本技术实施例中,数据资产库不仅还可以存储数据链路打标和数据链路分级后的结果,还可以存储资产打标服务单元由血缘存储单元获取的任务级、库级、表级、字段级、负责人血缘依赖关系,那么,告警模块中用于和业务侧目标变更进行比较的数据血缘关系可以从数据资产库中调用。在实际应用中,为进一步保证比较结果准确,也可以进一步从血缘存储单元调用数据血缘关系进行比较。[0078]可以理解,采用上述方案,通过在解析模块中设置数据资产库存储数据链路打标和数据链路分级后的结果,可以便于通知单元快速调用以及快速确定各链路的通知级别。[0079]以下将结合具体的示例对本技术上述实施例提供的确定变更影响面的系统进行阐述,应当理解的是下述示例仅为一种具体的实施方式,并不表示对本技术上述实施例提供的确定变更影响面的系统的不当限定。[0080]如图3所示,一种确定变更影响面的系统,包括archery监听模块、sql血缘解析服务单元、确定单元、通知单元、nebula图数据库、元数据服务单元、资产打标服务单元以及数据资产库。[0081]其中,archery监听模块用于对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给所述确定单元。archery监听模块为对archery二次开发得到的,赋予archery实时监听业务侧变更以及实时发送目标变更的功能。archery监听模块进一步通过消息队列kafka将监听到的业务侧变更推送至确定单元。[0082]archery的变更监听功能和输出kafka功能改造过程可以为:在archery的config.html添加kafka推送相关的配置,一个是开关,一个是server地址,增加kafka-send.py把与用户在业务侧提交申请阶段和执行阶段相关的ddl(数据定义语言)推送到kafka_api.py;在kafka_api.py新增kafka推送的工具类。相应地,确定单元可以提供kafka推送的入口,最终调用kafka_api.py;并可以重新封装kafka的推送信息格式,使得后续通知单元可以分别通过电话、短信、微信、钉钉、飞书、邮件等方式进行通知。[0083]业务侧发生的所述目标变更可以是ddl表结构、api接口参数或mq消息体等发生变更。在接收到所述目标变更后,可以直接将所述目标变更进行通知。能够理解的是,通过设置监听目标变更并实时推送目标变更的逻辑,使得可以实时捕捉业务侧发生的目标变更,进而业务侧发生目标变更后,技术人员可以实时获知,提高事前、事中的感知度,从而提前做好即将采取措施(如即将要对影响面进行修改)的准备。[0084]业务侧的库、表变更在archery监听模块上变更,archery监听模块可以得到变更记录表,用于记录ddl表结构、api接口参数、mq消息体等变更信息,使得后续通知单元在进行通知时,相应的技术人员及时的看到变更的详细信息,进而及时解决问题。其中,变更记录表的结构如下:[0085]createtablelb_archery_change_info([0086]idintnotnullauto_incrementcomment”,[0087]change_idintnotnullcomment'变更事件1.字段增加;2.字段删除:3.字段重命名:4.表删除;5.库删除',[0088]before_changevarchar(3072)comment'变更前记录信息',[0089]after_changevarchar(3072)comment'变更后记录信息',[0090]is_deletedintnotnulldefault0comment'删除状态是否删除0:正常;1:删除',[0091]created_uservarchar(32)notnulldefault'管理员'comment'创建人',[0092]created_timedatetimenotnulldefaultcurrent_timestampcomment'创建时间',[0093]update_uservarchar(32)notnulldefault'管理员'comment'更新人',[0094]update_timedatetimenotnulldefaultcurrent_timestamponupdatecurrent_timestamp(0)comment'更新时间',[0095]primarykey(id)[0096])defaultcharset=utf8comment='lb_archery_change_infoarchery上表的变更明细'[0097]sql血缘解析服务单元用于对数据侧数据进行血缘分析,构建数据血缘关系。其中部署有antlr语法解析器,可以实时解析flinksql、sparksql、hivesql、trinosql以构建数据血缘关系。sql血缘解析服务单元构建得到的数据血缘关系,具体为任务级、库级、表级、字段级血缘依赖关系。[0098]nebula图数据库用于存储sql血缘解析服务单元解析得到的数据血缘关系。sql血缘解析服务单元解析得到的数据血缘关系以图的形式存储在nebula图数据库中。nebula图数据库中存储数据血缘关系相关表,用于存储血缘图信息;例如从datax的reader中解析出输入库/表/字段,从writer中解析出输出库/表/字段,其他sql任务可类似可以得到输入和输出,连接多个输入和输出就可以得到一张或者多张由点和变组成的图。数据血缘关系相关表的结构如下:[0099]createspacelb_blood_relationship;//血缘图空间[0100]createtagtable(sourcestring,dbstring);//点,标记表[0101]createtagfield(sourcestring,tablestring,dbstring);//点,标记字段[0102]createedgetable();//边,表依赖[0103]createedgefield();//边,字段依赖[0104]元数据服务单元用于在sql血缘解析服务单元构建得到的数据血缘关系不准确、不合理或者血缘依赖不足的情况下,对所述数据血缘关系进行补充。sql血缘解析服务单元构建的是任务级、库级、表级、字段级血缘依赖关系,缺少与对应负责人的血缘依赖关系,元数据服务单元可以对所述任务级、库级、表级、字段级血缘依赖关系进行补充,补足对应负责人的血缘依赖关系,得到任务级、库级、表级、字段级、负责人血缘依赖关系。相应地,nebula图数据库中存储的可以是补充后的数据血缘关系。[0105]资产打标服务单元用于根据nebula图数据库中存储的数据血缘关系进行数据链路打标和数据链路分级,进而对数据资产进行分类和分级。资产打标服务单元扫描所述数据血缘关系并存储,并对存储的数据依赖链路进行统计,将表在各数据依赖链路上出现次数统计并存储,根据出现次数可以设置各个节点的权重。为提升资产打标服务单元打标和分级的准确性,还可以进一步结合元数据服务单元提供的数据。[0106]数据资产库用于用于存储数据资产的分类和分级结果。数据资产的分类和分级结果可以以资产分级表的形式存储,其中主要包含任务id,表id,任务owner,涉及到各项业务的描述等字段,用于存储表和任务的相关信息,在消息推送过程中可以用于确定影响范围和表的责任人。资产分级表的结构如下:[0107]createtablelb_assets_level([0108]idintnotnullauto_incrementcomment”,[0109]task_idbigintnotnullcomment'任务id',[0110]table_idbigintnotnullcomment'表id',[0111]levelintnotnullcomment'链路出现次数',[0112]is_deletedintnotnulldefault0comment'删除状态是否删除0:正常;1:删除',[0113]created_uservarchar(32)notnulldefault'管理员'comment'创建人',[0114]created_timedatetimenotnulldefaultcurrent_timestampcomment'创建时间',[0115]update_uservarchar(32)notnulldefault'管理员'comment'更新人',[0116]update_timedatetimenotnulldefaultcurrent_timestamponupdatecurrent_timestamp(0)comment'更新时间',[0117]primarykey(id)[0118])defaultcharset=utf8comment='lb_assets_level资产分级表'[0119]确定单元用于根据目标变更从数据资产库中调用对应的目标数据血缘关系,将两者进行比较,不一致时,基于所述目标数据血缘关系确定变更对应的影响面,再基于数据资产库中存储数据资产的分类和分级结果,确定影响面中各数据链路的通知优先级,通知单元根据所述通知优先级通知到对应的责任人。在确定目标变更对应的影响面时,还可以进一步结合nebula图数据库中的数据。[0120]在通知了后,通知单元中可以得到变更推送表并存储,主要记录把archery上的变更和hive上的变更推送给了哪些人,用于在报警推送过程中,确定责任人和受影响范围内的人,可以让相关受影响的用户及时准确的收到报警,进而及时的解决问题。变更推送表的结构如下:[0121]createtablelinkis_asset_table([0122]idbigint(255)auto_incrementprimarykey,[0123]partition_tabletinyint(1)null,[0124]table_sourcetinyint(1)notnullcomment'表来源,1代表hive,2代表glue',[0125]commentvarchar(255)nullcomment'表中文名/表备注',[0126]creatorvarchar(255)notnullcomment'表创建者',[0127]namevarchar(255)notnullcomment'表名',[0128]`database`varchar(64)notnullcomment'数据库名',[0129]locationvarchar(500)nullcomment'表路径',[0130]create_timedatetimenotnullcomment'表创建时间',[0131]constraint`database`unique(`database`,name)[0132])comment'数据资产模型表'collate=utf8_bin[0133]在报警推送过程中,除了责任人和受影响范围内的人,还有一些用户虽然和这些表没有依赖关系,但是他们是表的使用者(如数据分析师/运营等),为让这些用户及时准确的收到报警,进而及时的解决问题,因此,通知单元还可以提供订阅服务,存储变更订阅表,并根据变更订阅表将目标变更推送给相应的订阅人,变更订阅表可以记录用户订阅了哪些mysql表或者hive表。变更订阅表的结构如下:[0134]createtablelb_assets_change_subscribe([0135]idintnotnullauto_incrementcomment”,[0136]table_idvarchar(32)notnullcomment'表id',[0137]user_idvarchar(32)comment'用户id',[0138]is_deletedintnotnulldefault0comment'删除状态是否删除0:正常;1:删除',[0139]created_uservarchar(32)notnulldefault'管理员'comment'创建人',[0140]created_timedatetimenotnulldefaultcurrent_timestampcomment'创建时间',[0141]update_uservarchar(32)notnulldefault'管理员'comment'更新人',[0142]update_timedatetimenotnulldefaultcurrent_timestamponupdatecurrent_timestamp(0)comment'更新时间',[0143]primarykey(id)[0144])defaultcharset=utf8comment='lb_assets_change_subscribe变更订阅表'[0145]该系统中关于archery监听模块、sql血缘解析服务单元、确定单元、通知单元、nebula图数据库、元数据服务单元、资产打标服务单元以及数据资产库的其他说明也可以参考上述实施例,在此不再赘述。[0146]可以理解,采用上述系统,通过archery监听模块对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给确定单元,通过sql血缘解析服务单元对数据侧数据进行血缘分析,构建数据血缘关系,以及通过确定单元根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并通过通知单元将所述影响面进行通知;使得可以及时确定业务侧变更对应的影响面并进行通知,进而技术人员可以及时采取相应措施,以避免线上事故的发生。并且,通过设置元数据服务单元,对sql血缘解析服务单元构建的任务级、库级、表级、字段级血缘关系进行负责人血缘关系补充,使得可以精准地通知到对应的负责人。另外,通过设置资产打标服务单元,基于数据血缘关系进行数据链路打标和数据链路分级,得到各数据链路的分类和分级结果,实现数据资产的分类和分级,使得在根据数据血缘关系分析出目标变更对应的影响面后,还可以依据数据资产等级,进行不同粒度的通知,从而可以优先保障核心业务链路的顺利进行和稳定性。[0147]基于与本技术实施例提供的确定变更影响面的系统相同的思路,本技术实施例还提供了一种确定变更影响面的方法,图4示出了本技术实施例提供的确定变更影响面的方法的流程图,图4所示的流程图,包括:[0148]步骤401,对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给告警模块;[0149]步骤402、对数据侧数据进行血缘分析,构建数据血缘关系;[0150]步骤403、告警模块根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知。[0151]可以理解,采用本技术实施例提供的确定变更影响面的方法,通过对业务侧进行监听,响应所述业务侧发生目标变更,将所述目标变更发送给告警模块,对数据侧数据进行血缘分析,构建数据血缘关系,告警模块根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,并将所述影响面进行通知;使得可以及时确定业务侧变更对应的影响面并进行通知,进而技术人员可以及时采取相应措施,以避免线上事故的发生。[0152]在一种实施方式中,所述对数据侧数据进行血缘分析,构建数据血缘关系之后,本技术实施例提供的确定变更影响面的方法还包括:存储所述数据血缘关系;所述根据所述目标变更和所述数据血缘关系确定所述目标变更对应的影响面,包括:根据所述目标变更从所述数据血缘关系中调用所述目标变更对应的目标数据血缘关系,基于所述目标数据血缘关系确定所述目标变更对应的影响面。[0153]可以理解,采用上述方案,通过存储构建的数据血缘关系,可以便于告警模块快速调用所需的数据血缘关系。[0154]在一种实施方式中,所述对数据侧数据进行血缘分析,构建数据血缘关系之后,本技术实施例提供的确定变更影响面的方法还包括:对所述数据血缘关系进行补充。[0155]可以理解,采用上述方案,通过对任务级、库级、表级、字段级血缘关系进行补充,补足对应负责人的血缘依赖关系,使得当确定变更对应的影响面后,可以精准地通知到对应的负责人,从而可以快速采取措施,进一步避免线上事故的发生。[0156]在一种实施方式中,所述对数据侧数据进行血缘分析,构建数据血缘关系之后,本技术实施例提供的确定变更影响面的方法还包括:基于所述数据血缘关系进行数据链路打标和数据链路分级,得到各数据链路的分类和分级结果。[0157]可以理解,采用上述方案基于数据血缘关系进行数据资产打标、分级,梳理出核心业务链路,针对不同类型、等级的数据资产可以设置不同的通知优先级,从而可以优先保障核心业务链路的顺利进行和稳定性。[0158]在一种实施方式中,所述得到各数据链路的分类和分级结果之后,本技术实施例提供的确定变更影响面的方法还包括:存储所述各数据链路的分类和分级结果。[0159]可以理解,采用上述方案,通过存储数据链路打标和数据链路分级后的结果,可以便于告警模块快速调用以及快速确定各链路的通知级别。[0160]本技术实施例提供的确定变更影响面的方法可以应用于图1-图3系统实施例中各个确定变更影响面的系统,为避免重复,这里不再赘述。[0161]需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。[0162]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。[0163]上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1