数智洞见 | 银行业务暴增数据难支撑、难溯源、难协同?离线开发有妙招

2021-12-07 14:30:59 浏览数 (1)

近年来,银行业的数据规模呈指数级增长趋势,以大数据为驱动,探索多元化业务新增长模式,深入推进业务模式数字化转型,已成为银行业的共识。以袋鼠云在助力金融行业数字化转型的过程中,所接触到的某银行客户A为例,该企业在数字化建设方面做了很多积极探索。

自建的大数据平台使用弊端暴露

早在2014年的时候,客户行内就成立了数据部门搭建了一套功能较为齐全,流程运转良好的数据平台体系。客户A采用GaussDB和Oracle作为存储和计算引擎,自研了数据同步工具和资产管理平台,使用开源的ETL工具进行数据开发和任务调度,形成了一个五脏俱全的数据平台。这个数据平台在当时数据规模不太大,业务需求不太多的情况下有效地支撑了业务的全方面需求,后台数据部门与前方业务部门灵活而紧密地合作着,完成了许多重要的业务目标。然而随着数据规模和业务需求的不断加速增长,传统的数据开发模式也不断地暴露出严重阻碍业务增长的弊病,主要有以下方面:

数据质量差:准确性和有效性难以保障,数据无法深入业务支持决策;

数据开发自动化程度低:数据开发任务上线发布、表血缘生成等关键环节需要人工配置,工作繁琐,且容易出错;

数据链路复杂,问题难溯源:任务数量庞大,数据加工链路长,依赖关系复杂,排查数据问题困难。

现有系统难以有效协同:行方已具备数据集成、数据开发、任务上线、资产管理等多套系统,但系统之间并没有形成完善的工作流程,很多环节需要人工衔接,便利性极差;

● 技术架构难以承载业务增长:底层的数据仓库采用传统的MPP技术架构(GaussDB),基本能够满足过去任务量少、数据量小的开发模式,但随着行方业务的发展,传统的架构已无法满足任务需求。

开发工具运维难度高:数据开发工具版本混乱,开源组件众多、更新迭代快,安装部署维护使用的技术门槛高。在开发/调试、调度配置、上线发布、手动脚本存在多种技术栈,使用及管理过程存在较大难度。

以上问题导致需求响应周期长、工作效率低,业务增长出现瓶颈。

具体的建设目标

基于以上问题,我们与客户A共同打造了一站式金融数据中台PaaS——数栈(银行版)。数栈(银行版)在数栈原生功能的基础上针对银行行业的需求进行了一系列的功能新增和改造,帮助银行建立自主可控的数据共享能力中心,助力银行业数智化升级。具体目标有:

1.形成统一的大数据开发平台:兼容银行原有的GaussDB和Oracle存储计算能力,涵盖数据采集、数据开发、数据质量校验、任务运维与监控、发布管理、元数据查询等数据开发完整流程相关功能;落地统一建模规范、数据标准和代码规范,实现数据开发流程标准化,降低因开发人员经验与水平差异带来的开发问题,提高代码质量,提升数据产出的准确性和时效性,快速响应业务需求。

2.开发与管理智能化,降低人工成本:通过表级和字段级血缘自动解析、数据质量自动校验、任务审核通过后自动发布等功能,开发人员可更专注于业务实现,高效、便捷、规范地完成数据开发工作。通过智能监控及时发现和解决问题,免除人工巡检的同时最大程度减少异常任务对业务的影响。

3.资源弹性扩缩容:匹配业务需求的技术架构,计算存储资源可快速扩缩容;

4.自动化数据资产管理,细粒度掌控资产变化:建立字段级数据资产管理,宏观统计数据资产现状,精细化掌控资产变化,上游字段变动,自动分析下游影响范围并通知责任人,实现数据资产的智能化管理。

建设方案

针对以上目标,我们设计了如下的产品和技术架构:

产品架构图

计算存储平台

对接行内已采购的华为GaussDB和Oracle的计算和存储能力,另外引入袋鼠云自研的DTHadoop,根据业务需求灵活选择。

执行引擎

数栈账号可绑定数据库账号,实现GaussDB表权限管理;YARN上可进行资源队列的划分,不同租户绑定至不同的队列,从而实现资源隔离,优先保障重要租户和项目下任务的资源分配;任务支持设置优先级,满足同一计划时间和上游依赖完成的情况下,高优先级的任务可优先被分配运行资源。

数据开发套件

  • 数据开发

1)数据开发页面采用云端可视化开发IDE,支持多人协作完成数据开发;

2)支持通过任务组件来创建任务,当业务逻辑发生变更时,只需要变更组件的代码并提交,所有引用該组件的任务代码即可同步变更;

3)对接代码评分插件,针对不同程度的代码不规范条例设置了量化的扣分规则,不达标的代码对应任务不允许运行与上线,实现线上化、智能化控制代码质量,保障数据库的稳定及数据安全;

4)支持代码的版本对比与一键回滚,出现问题时可立即恢复。

  • 调度引擎

建立全行级智能调度服务:自主研发的调度引擎(DAGScheduleX),单台虚拟机最高支持万级别任务的复杂调度,支持周期性、跨周期、跨产品的上下游依赖(例如一个标签任务可依赖于一个离线任务)、优先级等多维度调度模式,支持离线任务的质量校验。

  • 运维中心

1)统一运维平台,全方位监控任务执行过程,可依据任务周期属性、依赖配置、模型等级及优先级等信息进行智能调度;

2)可识别任务失败、超时等多种异常情况,并将告警发送至相关人员的邮件、短信以及银行自主研发的监控小程序中,特殊情况下可进行任务的历史数据重刷、重跑、杀死、紧急去依赖等操作;

3)自动生成任务和表血缘,可支持任务和表热度分析。

  • 发布管理

银行业对于生产环境数据安全有非常严苛的要求,任务在发布前需要进行人工审核,且测试环境与生产环境大部分存在网络隔离,任务的发布无法像网络打通的环境那样一键完成,因此任务发布环节数栈对接了行内的devops发布系统,发布申请提交时发布包将自动上传系统,管理员审核通过后从devops自动发布至生产环境,减少人工上传下载的工作量和误操作的可能性。

离线数据开发平台完整覆盖了数据开发/测试->上线发布->任务运维的完整链路,真正实现“一站式”线上化数据开发。

数据资产套件

  • 数据地图

1)打造字段级资产管理,自动建立字段级血缘关系,支持扩展管理元数据;

2)支持按算法、字符转义和替换多种方式根据字段血缘进行数据脱敏,保障数据安全;

3)对于SparkSQL产生的小文件问题可时行自动合并治理,保障任务运行性能。

  • 数据模型

对接数据标准,根据用户输入的中文信息,自动匹配词根表,规范建模过程;

  • 数据质量

1)与存在数据产出的任务进行绑定,内置丰富的数据质量校验规则,可依据规则本身的强弱性自动调起或阻塞下游任务的继续执行;

2)离线开发平台-数据资产管理模块可在开发阶段、数据管理阶段同时发挥作用,解决开发过程中的数据参考问题。

数据应用引擎

在开发套件完成数据开发后,应用层的数据可被数栈的数据服务、智能标签等使用,也可对接第三方的BI平台等进行数据可视化分析和其他应用;

技术架构

1)Iaas层支持分布式多节点,可按业务数据需要进行弹性扩缩容。

2)Console负责多集群的创建,每个集群可配置不同的存储、计算和资源调度引擎,并可在YARN上进行队列划分和资源使用的实时监控;

3)EasyManager负责应用的安装部署与运维,并可实时监控引擎组件的健康状态;

4)FlinkX为袋鼠云自研分布式异构数据源批流一体同步工具,可支持近30种数据源的读写,其多通道并发、断点续传等能力可充分保障数据不重不丢地快速传输;

5)DAGScheduleX为分布式调度引擎可实现在大规模任务场景下周期性、依赖性任务调度与状态监控;支持百万级任务并发调度,满足银行数据中台日常调度需求。

6)外部数据源的数据通过FlinkX同步后可通过DAGScheduleX的任务调度到达GaussDB、Oracle和Hive上进行存储与计算,也可通过DTGateway进行请求的管理,服务于上层的离线开发、数据质量、智能标签和数据服务;

除此之外,数栈还提供7*24小时的产品技术支持服务,在客户遇到问题时第一时间进行解答或协助排查,帮助开发人员更好地使用产品,也大大降低生产问题导致故障的发生率。

建设效果

  • A银行在引入数栈(银行版)后,数据开发无须关心组件的底层逻辑,数据平台的运维人力从原3个人减为1个人,团队资源可以把精力更多地放在业务需求实现上;
  • 行内每天跑批的任务数从8000增长到近10万,但异常任务基本在个位数,且异常任务的修复时间平均缩短了80%;
  • 数仓数据处理ETL任务平均运行时间效率上提升2-3倍,任务运行的完成时间从上午10点提前到7点;
  • 灵活开放的架构设计,在后期扩展新的数据源和底层计算存储引擎时均能快速支持到位。

最终提高了数据开发及流程标准化水平,为银行各条线提供完整、准确、及时的高质量数据服务。

未来展望

根据客户A在数据生产过程中碰到的实际问题,未来我们将从以下几方面去拓展产品能力:

  • 资源利用调节

依靠产品手段调节资源利用的峰谷问题,在节约成本的同时让资源利用率最大化;

  • 数据治理

数据量庞大、生产链路长、数据是否有被使用的问题日益突出,需要建立一套数据治理方案,让数据落到责任人,成本可量化,推动业务人员自主进行数据治理。

  • 智能查询

通过语音或文本进行数据智能查询,帮助非开发人员快速有效地做数据可视化查询,让数据可观可感。

End

0 人点赞