基于Flink+Paimon的流式湖仓探索|社区征文

2023总结
前言

各位好,笔者是一名银行业的科技类员工,从2021年底开始接触实时技术,最开始实时数据加工模式是“端到端”的烟囱式开发,经过一年多的实时需求开发积累,发现存在诸多问题,比如:只支持增量计算、基础ETL操作重复开发、中间结果无法持久化。伴随着湖仓技术的不断发展,公司在2023年启动对流式湖仓的探索,笔者有幸参与其中,希望分享下项目开发经验以及个人技术成长心得。

一、流式湖仓的建设背景

在数字化转型驱动下,数字资源价值加速释放,实时化需求日益成为银行业数据应用新常态,用以准确、实时地感知行内的生产经营变化,提升银行业务的时效性与灵活性,快速支持决策。

  • 从业务角度看:当前银行业的实时业务主要集中在营销、风控两大领域,涉及反欺诈识别、异常交易监控、达标实时送好礼、MGM渠道拉新、实时报表大屏等场景。同时,对于不同的场景,会存在共性逻辑,比如客户购买理财产品、会计科目当日发生额等,为保证实时数据加工指标的一致性,需要沉淀实时数据资产。

  • 从技术角度看:传统的T+1数据跑批模式,不支持高时效场景需求,需要依赖于Storm、Flink等实时计算引擎;但纯粹依托于Flink计算引擎,只得开展“端到端”的实时数据加工模式,无法沉淀实时数据资产,造成“烟囱式”开发。

综上所述,既要满足日益增长的实时业务需求,又要避免“烟囱式”开发模式,则需要建设兼具时效性和灵活性优势的流式湖仓,作为银行业实时数据的存储、加工、服务平台。

picture.image

二、 流式湖仓的建设实践

所谓流式湖仓,不妨将其拆解来看:“流式”指数据的计算形式是流动触发计算,而非定时任务调度;“湖”指数据的存储形式,实时数据入湖保证原始性和灵活性;“仓”指数据的组织形式,建设分层复用的数据模型,提升实时数据的质量和保证实时指标的一致性。基于上述理解,项目基于采用Flink + Paimon打造流式湖仓。

1. 实时技术选型

在实时计算引擎方面,Apache Flink依靠高吞吐、低延迟、高性能的流处理以及自身的设计特性,目前已经成为全球范围内实时流计算的事实标准。

在实时数据存储方面, Apache Paimon作为面向流而设计的数据湖,支持大规模更新及流读,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。从使用角度而言,我总结了以下特性:

  1. 支持Table Format存储抽象。存储形式易于理解,可存储全量、增量数据,以较低的成本支撑数据更新和读取。
  2. 支持流式读写,构建动态表。在Table Format存储形式上建立处理实时数据的增量管道,有利于后续流批一体的实践。
  3. 支持LSM-Tree存储结构。一方面大幅降低存储成本,另一方面很强的主键更新能力,有比较好的吞吐和常规的查询性能。
  4. 更好的本地化支持。Paimon基于“湖存储+ LSM”与 Flink做了更深度的集成,支持FlinkSQL对Paimon进行流式读写操作。

2. 实时数仓分层

随着行内业务对实时依赖度的不断增大,使得越来越多的业务指标需要加工,为了提高模型的复用率,同时兼顾易用性、一致性以及计算成本,因此项目决定搭建实时数据仓库。实时数据仓库的分层架构在设计上必须考虑到时效性问题,分层设计尽量精简,避免数据在流转过程中造成不必要的延迟响应,并降低中间流程出错的可能性。

picture.image

实时数仓共包含三层:DWD明细层、DWS汇总层、APP应用层,各层通过Flink-Streaming作业串联,在全链路流动的同时,数据沉淀到Paimon存储上。

明细层主要是为了解决一些原始数据中存在的噪声、数据不完整和数据格式不一致的问题,形成规范、统一的数据源;汇总层主要是扩充事实表维度,以及沉淀共性指标逻辑,保证实时指标的一致性;应用层主要是将实时数据加工成业务所需要的形式,并向外部输出实时数据结果。

picture.image

3. 实时数据治理

在实时数据治理方面,项目打通数据资产平台(离线已有),推动实时数据共建、共治、共享。

  • 共建:借助数据资产平台,用户可查看已接入的实时表,并根据自身需求申请接入新的源系统实时表,不断丰富实时数据仓库模型。
  • 共治:借助数据资产平台,用户可查看实时表的表结构、表数据量、字段码值、字段格式、样例数据等信息,针对其不合理之处反馈优化意见。
  • 共享:借助数据资产平台,用户可申请实时表的访问权限,满足下游应用系统对实时数据的使用需求。
三、 流式湖仓的建设成效

案例一:实时报表大屏

实时报表大屏功能够保证数据的及时性以及分析的灵活性,降低传统数据分析的时间成本,帮助用户及时掌握业务运营情况,提高工作效率。实时报表大屏包含对公存贷款、零售存贷款、理财产品销售、对公流程优化等场景。

相比于以往总行需要2-3天时间核对分支行业绩,实时报表大屏可以支撑总行公司部实时核对分行、支行存贷款和理财业绩,有效提高总分支行业绩核对工作效率。

案例二:实时营销

当前行内实时营销主要是采用事件触发式,覆盖新客培育、老带新、无效户促活、高价值客户的精准产品营销等场景。通过普惠抽奖、权益赠送、达标送好礼等场景化实时营销手段,促使客户形成“购买产品-实时奖励”的正反馈机制,提高客户粘性和归属感。在拉新促活场景中,与传统营销相比,实时营销的新客获客提升30%,无效户促活提升20%,取得良好的经济效益。

案例三:实时风控

项目利用流计算技术,对客户、设备、行为等多维特征数据进行实时加工,针对客户在不同业务场景下的授信申请、贷款逾期、信用卡逾期等风险行为,通过实时指标与反欺诈模型、信用评分模型相结合,整体风险识别精准度为10%(实时风控模型预警100个人,其中有10人存在欺诈、逾期等负面行为),是我行传统风险预警平台的15倍以上,有效扩充信贷欺诈风险的防控覆盖广度、增强信贷业务风险防控精度。

案例四:实时信贷流程优化

面对行内公司信贷业务存在的业务流程复杂、涉及部门繁多、人工审批繁复等痛难点,为提升业务质效,压减流程耗时,通过流程挖掘、流计算等大数据算法实现业务流程实时监控及分析,快速发现异常流程和业务卡点并定期统计分析业务堵点难点形成流程优化洞见。

自使用实时数据优化信贷流程后,公司授信业务全流程耗时压降20%(其中开户阶段效率提升30%、立项阶段耗时压减80%、贷前调查阶段耗时压减20%)。

四、 展望

笔者所参与的项目当前只是把Paimon作为流写流读的存储工具,同时离线和实时计算采用的是Lambda架构,对于SQL代码维护、研发口径一致性,实时离线报表指标对齐,都有着一定的挑战。

随着Flink不断迭代版本,加强批处理能力,结合流批一体的Paimon数据湖存储,可实现“计算+存储”的流批一体,未来通过一套架构、一套引擎、一份代码,完成流和批任务的研发,提高研发运维效率。

243
12
4
0
关于作者
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论