《Apache Flink 案例集(2022版)》——5.数字化转型——中信建设-Apache Flink 在国有大型银行智能运营场景下的应用(上) https://developer.aliyun.com/article/1227900
应用场景
Flink流处理在中信应用于三个不同的场景,包括零售业务实时指标统计、基金投顾实时指标统计和资金流水明细查询。
零售业务线实时指标是管理驾驶舱的重要组成部分,决策者通过分析公司运营指标,对公司的运营和发展作出合理决策。
面向零售业务设计实时数仓,需要获得开户统计、客户服务、APP 运营几个主题的统计指标,根据实时数据处理架构和数据仓库分层的设计,面向零售业务的实时数仓可以分为以下几个流程:
首先是构建 ODS 层数据,实时采集客户信息表、业务流水表、渠道表等相关基础表的 CDC 日志。每个业务库的数据表对应接入到一个 Kafka 的 topic 中建立实时数仓的 ODS 层;
其次是 DWD 层的数据建模,创建 Flink 任务消费 ODS 层的 Kafka 消息,进行数据清洗,过滤、脱敏、关联转换等处理。同时以客户账户粒度进行数据合流,借助离线维表进行扩围操作,以获得账户粒度的明细表,实现 DWD 层的建立;
之后是 DWS 层的数据建模,基于 DWD 层的数据进行汇总,通过分析业务需求,将 DWD 层的数据按照主题进行划分,汇总出渠道服务主题宽表、业务部运营主题宽表、交易产品主题宽表等公共指标宽表,建立 DWS 层;
最后根据实际业务需求,计算业务指标建立 ADS 层。对于一部分用户账户粒度的业务指标,可通过 DWD 层的明细直接计算得到,部分粗粒度的业务指标比如 APP 渠道服务客户人数、投顾产品阅读人数等,可以通过 DWS 层计算获得。最终计算结果接入到数据网关将数据统一提供给下游系统或通过 BI 系统展示。
基金业务在证券行业的重要性日益凸显,它能实时提供基金投顾产品的销售信息,为基金投顾及时调整策略提供数据支持。基金投顾场景的数据有三个特点:
第一,涉及的数据规模比较小;
第二,数据在开盘时间提供给公司内部人员查看;
第三,数据对准确性的要求特别高。
针对数据量小的特点,中信将数据指标结果输出到 Oracle 关系数据库;针对开盘时间将数据供给内部人员查看的特点,通过开启实时任务的启停策略,将更多的资源留给夜间跑批的任务来使用;针对数据准确性要求很高的特点,通过夜间离线跑批的方式对数据进行修正,以保证数据的准确性。
原来的方案是通过页面触发存储过程来读取数据,而且读取的数据不是源系统数据,存在分钟级别的延迟。而实时数据加工方案通过实时推送客户新增、追加、签约、保有、签约率、规模等维度的指标,让业务部门可以更高效地掌握核心数据。
资金流水实时ETL场景主要满足业务人员在开盘期间快速查询客户某个时间段内的交易流水明细数据。它需要解决三个问题:
第一,资金流水明细总共几十亿条数据,数据量很大的情况下,如何做到快速查询?
第二,开盘时间内满足业务人员查询,且非开盘时间内数据量较小,是否采用定时调度?
第三,资金流水一定不能出错,如何保证数据的准确性?
针对数据量大的特点,中信最终选择通过HBase组件来存储数据,通过合理设计RowKey与建立数据分区,达到快速查询指定时间段内的资金流水明细情况;针对非开盘时间内交易数据量很小的特点,开启任务的定时启停策略,将更多的资源留给夜间跑批任务;针对数据准确性要求高的特点,通过离线数据修正的方法来达到准确性的要求。
未来规划
中信目前正在开发中的场景分为以下几个方面: 账户资产,包括实时资产持仓指标统计,客户交易盈亏、交易记录的分析; 营销知识,包括MOT流失客户提醒与召回、开户未成功客户提醒与跟踪、两融业务潜在新客户的挖掘、电商 APP 活动的内容与内容运营; 风控,包含以客户维度的持仓集中度指标,以公司维度的融资额度占公司净资本等指标的分析统计。 另外中信正在调研 OLAP 多维分析组件,由于目前实时开发仍然采用 Lambda 架构,结果表存储组件涉及到关系型数据库比如 MySQL、SQL Server、Oracle 以及 NoSQL 数据库比如 HBase、ES、Redis。数据孤岛是目前面临的严重问题,希望通过 OLAP 组件实现实时数据的与离线数据的统一写入,实现流批一体,打破目前数据孤岛的局面,希望在流批一体存储层达到统一存储、统一对外服务、统一分析处理的目的。