更多精彩内容,欢迎观看:
带你读《Apache Doris 案例集》——03 Apache Doris 在金融壹账通指标中台的应用实践(1):https://developer.aliyun.com/article/1405768
一体化指标数据平台
在架构升级完成后,我们可以建设统一的指标体系,通过指标内容、 BI 与 Al 技术构建平台功
能,共同建设一体化指标数据平台。
构建指标体系
金融壹账通借助归因关系分析帮助机构自上而下对指标进行建设,梳理核心KPI 并逐层拆建指标,保障指标体系的完整性与可落地性。根据指标生成方式,将指标类型进行细分,以银行营销场景举例,针对银行资产管理中对客户资产总值的衡量指标(AUM) 可以细分为以下三种类型:
●原子指标:通过数据源接入到指标平台的最细粒度指标,一般为表字段,例如AUM 余额。
●衍生指标:为了进一步指标分析,平台自动衍生一系列指标,如AUM 同比、环比净增等。
●派生指标:为了满足复杂的指标分析场景,基于原子指标,添加过滤条件或者结合其他指标进行运算,帮助用户自助配置看板,节省取数过程。例如用户希望生成客均AUM 余额进行分析,平台可以借助原子指标AUM 余额与全量客户数生成该指标。
构建指标平台功能
指标平台的功能实现主要依赖于 Apache Doris 数仓架构的支持,整体指标线上流程基于开发和业务配合完成。开发人员首先统一在平台进行元数据管理和指标录入,包括对加工报表的底表进行注册,配置中间表的数据粒度和更新频率等,接着对表进行关联、录入指标名称和指标口径信息。在输入指标基础信息之后,交由业务人员负责,选择对指标分析所需维度,对指标进行发布。
基于以上两个步骤,我们可以在平台中对指标数据进一步分析。如上图左侧所示,指标平台提供了各种柱状分析视图,业务人员能够可视化地查看指标排行榜看板,分析各银行分行AUM 排名情况。同时,我们融入了 Al 智能算法,借助时序模型检测指标异常,通过根因分析算法辅助KPI 检视,并分析指标异动原因。对于存量指标,平台提供了价值评分体系,能够及时下线价值低的指标,达到边使用边治理的目的。
基于ApacheDoris指标应用实践
一体化数据平台的建设完全解决了金融壹账通在传统报表开发时指标口径不统一和指标重复计算的问题。在分析效率方面,我们希望在复杂的多表关联场景下,实现接口600毫秒响应时间、查询响应在100毫秒内的目标。因此,我们对Apache Doris 进行了测试与调优,从数据的前期准备、集群部署、模型调优三方面分享Apache Doris在该场景下的应用实践。
在前期数据准备过程中,考虑到我们的数据集和官网测试的 SSB 数据集很相似,我们选择了官网推荐的开发测试环境配置,选用 Apache Doris 1.1版本进行测试。因为我们是通过 Python Mock 数据直接生成 CSV 文件,所以我们采用 Stream Load 的方式分批导数,每次导入的CSV 文件都在Stream Load 推荐的文件大小1-10G以内,最终数据压缩比达到3:1,但单节点导入速度超过40 MB /s。
在集群部署过程中,为了对指标性能和服务器监控(CPU、IO、磁盘和内存),我们借助Prometheus导入ApacheDoris监控模版对集群部署监控,由Prometheus接收ApacheDoris暴露监控项,再借助Grafana 进行可视化呈现。
在准备工作完成后即可开始进行大表关联查询,我们选择了耗时较长的 SQL 来查询指标趋势图。基于毫秒级查询目标,我们实施了两个优化解决方案。第一个方案是利用 Colocation Join将数据在建表时提前聚合。第二个方案是借助 Audit Loader 的方式收集高频 SQL, 反向优化数仓的表构建以及改写 SQL, 使用偏宽表设计代替之前的星型/雪花模型。通过两个方案的测试与评估,我们发现第二个方案能够在查询响应、服务资源节省中达到更加显著的收益。
亿级数据多表关联查询,实现毫秒级查询响应
我们将SQL 查询执行时间进行了统计,如上图所示在采取方案一Colocation Join 的方式时,查询响应时间从之前的5秒提升至1秒。虽然查询效率有所提升,但是我们希望能够更进一步缩短响应时间,完成预期目标。在采用方案二来调整数据模型后,SQL 执行时间从原来的5秒达到63毫秒响应时间,查询响应时间得到显著提升,满足我们对查询响应毫秒级的目标。
同时,我们借助 Grafana 查看 Apache Doris 查询性能,发现宽表构建的方案能够使查询时间从
原来的十多秒缩短至百毫秒内,服务器也不再出现抖动的情况。
启用 SQL 缓存,节省服务器资源
采取宽表构建方案后,为了进一步提升查询性能,我们还启用了 SQL 缓存,帮助 T+1 报表场景
实现高效查询性能:
●在启用缓存之后,基本所有查询时长都在个位数,最终达到单用户访问页面在4秒内加载的成果;
●在30个指标同时进行时(SQL 指令超120条),接口都可以满足600ms 内返回;
●在并发场景下,最优TPS 达到300, CPU、内存、磁盘和IO 满足80%以下;
●经评估,我们发现在官网推荐的测试集群规模下, ApacheDoris都可以缓存上万指标,极大节省了资源。
未来规划
目前,金融壹账通基于 Apache Doris 实现了指标统一构建、查询、治理的一体化数据平台,为金融机构提供了全面的指标分析与展示,智能的指标生命周期管理等服务。在这样的平台建设下,集团内外多场景取得了非常显著的成果,截止目前,完成上万活跃指标、上千分析维度的积累,加工形成了上万个看板,减少了30%ETL 开发工作量。未来,公司将基于Apache Doris不断探索与优化,我们将重点推进以下几个方面的工作:
●平台实时分析:基于 Apache Doris构建湖仓一体,结合 Flink CDC、Apache Iceberg共同构建统一实时分析,
●平台物化视图:期待新版本亮点,探索多表关联下的查询优化,比如构建多表物化视图。
●其他产品迁移:将中台其他产品迁移至 ApacheDoris。目前,标签平台基于 Elasticsearch存在一定的使用问题,未来我们也准备将该平台迁入Apache Doris。
在此特别感谢SelectDB技术团队和Apache Doris社区在使用过程中遇到任何问题都能及时响应,为我们降低了许多试错成本。未来,我们也会更积极参与社区贡献及活动,与社区共同进步和成长!