从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践

作者:武基鹏,无锡锡商银行 大数据技术经理

编辑整理:SelectDB 技术团队

导读:为实现数据资产的价值转化以及全面数字化、智能化的风险管理,无锡锡商银行大数据平台经历从 Hive 离线数据仓库到 Apache Doris 实时数据仓库的演进,目前已接入数百张实时表、上百数据服务接口 ,接口 QPS 达到数百万级别,解决了离线数据仓库时效性不足、成本高昂、效率低下等问题,查询提速超 10 倍,为用户提供及时、有效、安全的数据服务及使用体验。

面对大数据、物联网、人工智能等新兴技术给金融行业带来的变革,无锡锡商银行将科技能力和大数据能力的发展放在重要位置。为实现数据资产的价值转化以及全面数字化、智能化的风险管理,基于“业务线上化、风控数据化、架构平台化”三翼一体的科技布局,无锡锡商银行建立了大数据平台,以管理每日流入的海量交易记录与信贷申请数据,借助用户画像、实时报表、实时风控等应用,为用户提供更加及时、有效、安全的数据服务及使用体验。

无锡锡商银行大数据平台经历了基于 Hive 离线数据仓库到基于 Apache Doris 的实时数据仓库演进。通过架构的升级,解决了离线数据仓库时效性不足、成本高昂、效率低下等问题,实现查询速度 10 倍提升,使得银行能够更快感知客户行为,及时洞察异常交易行为、识别和预防潜在的风险。本文将详细介绍无锡锡商银行大数据平台演进历程以及 Apache Doris 在实时查询、营销服务、风控服务等场景的落地实践。

基于 Hive 的大数据离线数据仓库

01 需求场景

无锡锡商银行早期建设了大数据离线数据仓库,主要服务于数据报送、数据风控、数据运营、即席查询及日常取数等场景,需求场景包括且不限于:

  • 数据报送:客户风险、EAST 报送、1104、大集中、征信报送、利率报备、反洗钱、金融基础数据报送等。
  • 数据风控:包含对贷款类风控指标、用户行为指标、反欺诈、贷后预警、贷后管理等风险控制。
  • 数据运营:对 BI 业务报表、管理驾驶舱、行外渠道和行内各系统进行定时批量供数。
  • 即席查询及日常取数:根据业务需求进行数据分析、数据开发及数据提取。

02 架构及痛点

在早期离线数据仓库中,数据主要来源于 Oracle、MySQL、MongoDB、Elasticsearch 以及文件。通过使用 Sqoop、Spark、外部数据源和 Shell 等工具,将数据离线抽取到 Hive 离线数据仓库中,并在 Hive 中通过 ODS、DWD、DWS 和 ADS 分层处理,最终输出结果为应用服务层提供支持。

架构及痛点.PNG

近些年,随着无锡锡商银行业务的发展与扩张,相关业务部门对数据处理的要求也越来越高,离线数据仓库已无法满足新的需求,主要体现在:

  • 数据时效性不足:离线数据仓库使用离线抽取的方案,数据时效性为 T+1,而报表、数据大盘、营销指标、风控变量要求数据实时更新,当前架构无法满足。
  • 数据查询效率低:需满足秒级别、毫秒级的查询响应。离线数据仓库执行引擎主要是 Hive 及 Spark,Hive 执行时会将查询分解为多个 MapReduce 任务,并需读取和写入 HDFS 中的数据,执行时长一般为分钟级别,严重影响查询效率。
  • 维护成本高:离线数据仓库底层涉及技术栈繁多 ,包括 LDAP、Ranger、ZooKeeper、HDFS、YARN、Hive、Spark 等多个系统,这将导致较高的系统维护成本。虽然线上也有 HBase + Phoenix 的实时存储与服务,但由于其组件比较“重”、社区不活跃,且某些特性无法满足实时场景需求,仍然不能完全解决当前的问题。

技术选型

面对离线数据仓库时效性不足、查询效率不高,多个技术栈带来的维护成本高等痛点,实时数据仓库的构建势在必行。在对多个 MPP 数据库进行深入的调研后,无锡锡商银行决定以 Apache Doris 为核心构建实时数据仓库平台。这一技术选型旨在确保平台在数据写入、查询及服务层面均能满足实时业务分析的高要求。选择 Apache Doris 的理由如下:

  • 高效数据更新: Apache Doris Unique Key 支持大批量数据更新、小批量数据实时写入以及轻量化表结构的修改。尤其在处理大量数据和分区时,能够有效避免庞大的修改量和修改不准确的问题,从而提供更加便捷实时的数据更新。
  • 低延时实时写入: 支持秒级别的数据实时写入、更新和删除;支持主键表模型写时合并,可实现微批高频实时写入;并且支持主键模型 Sequence 列设置,可保证数据导入过程中的有序性。
  • 查询性能优异: Apache Doris 多表 Join 能力强大,依托向量化执行引擎、CBO 查询优化器、MPP 架构、智能物化视图等功能,能够实现海量数据的毫秒级查询响应,满足即查即走的数据查询要求。同时 Apache Doris 2.0 版本支持行列混存,在点查询场景可以实现数万并发的毫秒级响应。
  • 平台极简易用: 兼容 MySQL 协议,并提供丰富的 API 接口,能够降低上层应用的使用难度。同时,Apache Doris 架构精简,只有 FE 和 BE 两进程,节点扩缩容简单、集群管理和数据副本管理均支持自动化,具备部署简单、使用成本及运维成本低的特点。

引入 Apache Doris 搭建大数据实时数据仓库

2022 年 4 月,无锡锡商银行引入 Apache Doris 构建实时数据仓库平台。考虑到银行数据规模非常庞大,接入实时数据的同时,再从业务库同步全量历史数据难度较大,因此,初期实时数据搭建主要依托于离线数据。

首先,采用 HDFS Broker 方式高效初始化历史实时数据;同时,借助采集工具 DataPipeline 将数据实时采集至 Kafka 集群中,再由 Flink 写硬编码模式将数据实时写入 Apache Doris 中。最后,借助飞流平台的接口服务能力,将 Apache Doris 作为统一存储与查询引擎,为各业务线提供服务。

飞流平台是无锡锡商银行为应对未来实时业务场景而构建的统一综合平台,主要包含实时采集、实时同步工具、实时数据仓库、实时计算以及数据服务。

引入 Apache Doris 搭建大数据实时数据仓库.png

01 完善数据流转链路

从银行数据特性出发,结合 Apache Doris 功能优势,无锡锡商银行重新思考并完善了数据流转链路:

  • 从离线数据仓库同步历史数据,风险最小化: 文提到,由于银行数据的庞大规模,如果直接从 Oracle 与 MySQL 同步全量历史数据,会导致大量数据流经过防火墙和交换机,引发其他业务请求阻塞和服务超时等问题。为了避免这些潜在的风险和问题,首先基于 Oracle 与 MySQL 批量构建 Doris 表结构,然后使用 HDFS Broker 从离线数仓 Hive ODS 层同步 T-1 全量数据到 Doris 中,从而实现风险最小化。
  • 实时增量抽取,更安全抽取模式: 实时抽取会产生极少量的磁盘 IO、内存、CPU 消耗,为了避免对业务主库有影响,默认认情况下,一般会选择从业务从库或同城灾备库实时抽取。而针对时效性要求较高的业务需求,需要充分评估才能从业务主库抽取数据。
  • 构建 Kafka 层,保证数据一致性: 建立 Kafka 层作为数据中间传输层,以确保数据的有序性和一致性。通过将 Datapipeline 发送的数据的 Key 配置为 Database-Table-PK,并按照同一个维度有序地发送到 Kafka Topic 的某个分区(Partition)。由于 Kafka Topic 各自分区内部是有序存储的,因此下游的消费者可以按照顺序处理数据,避免乱序情况对实时数据仓库数据准确性的影响。此外,Kafka 层可作为数据公共层可开放给营销类、风控类业务等场景使用。
  • 数据实时写入,保证数据不丢不重: 在实际应用场景中,离线链路在 T-1 日的晚上 11 点至早上 6 点进行数据离线跑批,在 T 日 10 点借助 HDFS Broker 方式进行表历史数据初始化。实时链路使用 Flink 直接指向 T-1 的晚上 10 点消费 Kafka Topic ,进行实时数据同步,而在实时消费过程中会出现部分重叠数据。为应对该问题,选用 Apache Doris 的 Unique Key 模型(该模型支持数据幂等性),该模型可快速覆盖重叠数据;并使用 Flink-Doris-Connector 完善实时数据仓库链路,以保证实时数据同步不丢不重。

02 灵活的数据服务

为了提供精准、高效的查询响应,无锡锡商银行采取了以下三种方式来实现数据服务:

  • 离线数据查询:针对离线需求,需要对数据进行快速查询。无锡锡商银行将数据定期从离线数据仓库导入到实时数据仓库 Doris 表中。这样可以在实时数据仓库中快速查询,满足离线数据分析和决策的需求。
  • 简单实时需求:对于不复杂的实时需求,无锡锡商银行利用 Apache Doris 的高效查询能力,在"飞流"平台上提供了直接配置数据服务接口的能力,用户可基于实时数据仓库 ODS 层的 SQL 进行手动配置。通过这种方式,可以快速满足简单实时数据查询的需求。
  • 复杂实时需求:对于复杂的实时需求,无锡锡商银行采用实时 Kafka 数据流和 Flink 轻度计算的方式,将数据流写入实时数据仓库的 DWD 层表中,在"飞流"平台上基于明细表的 SQL 进行再次聚合,并手动配置数据服务接口,以满足复杂实时数据查询的需求。

面向更多样化的服务场景

01 BI 报表秒级查询响应

无锡锡商银行基于 Apache Doris 满足了当日数据分析、日常取数以及 BI 实时报表等多种场景需求,查询响应时间大大缩短,能够在 1 秒内返回查询结果,极大降低了数据分析师的等待成本和服务器资源的消耗。

比如,在 BI 实时报表方面,无锡锡商银行建立实时贷款数据表、实时存款数据表、账户时点余额表等多种报表。**这些报表平均 SQL 代码行数为 253 行,平均响应时间为 1.5 秒。**另外,通过优化查询性能和数据模型设计,无锡锡商银行能够在较短的时间内生成准确的实时报表,为业务决策提供及时的数据支持。

02 支持个性化营销方案

在营销类数据服务方面,无锡锡商银行基于 Apache Doris 丰富客户标签、完善客户精准画像,开展了资产净增活动、艺术家盲盒活动等多种营销活动。通过实时数据的分析,银行能够及时观察活动用户的转化情况,并及时调整运营圈选策略,实现从“千人一面”到“千人千面”的个性化营销。

比如,在资产净增活动和艺术家盲盒活动等营销活动中,无锡锡商银行利用 Apache Doris 实时数据仓库的能力,不断收集、分析和反馈活动数据。通过实时观察用户的转化情况,及时调整运营圈选策略,确保人员和活动之间的匹配度。这种个性化的营销策略使得银行能够更好地满足客户的需求,提升参与度、响应率以及用户粘性。

03 高效的风险识别与控制

Apache Doris 的引入,使得无锡锡商银行能够更快计算出风控特征变量、异常交易行为。以新用户注册为例,当用户填写资料时,系统可以基于实时的风控特征变量,快速判断审批策略结果,及时优化策略模型,保证审批的质量和准确性。

无锡锡商银行还能够及时识别和预防潜在的风险。例如,对于短时间内大量交易、异常交易金额等交易数据,银行可以实时收集并进行监测,以及时发现异常交易行为和欺诈行为。通过实时数据分析,银行可以快速识别潜在的风险,并采取相应的措施进行预防和应对。

另外,无锡锡商银行还利用 Apache Doris 实时数据仓库对客户的信用历史和信贷申请信息进行实时分析。通过快速判断客户申请金额是否符合其还款能力,银行可以及时作出风险评估和决策,从而有效控制信贷风险。

04 七日交易流水表的数据自动更新

在实际应用场景中,交易流水表的数据量非常庞大,涉及交易序号、交易日期、交易类型、交易金额等数据。为确保数据的及时更新,无锡锡商银行选择采用 Apache Doris 动态分区表的特性。该特性可以自动创建分区,并自动删除超过七天的交易流水数据,以实现七日交易流水表的数据自动更新。具体的操作包括以下步骤:

  • 以业务日期构建伪列作为联合主键;
  • 当 ID 数据进行tran_date跨天更新时,代码进行回表操作;
  • 找到数据在 Insert 与分区表中对应的 Date 值,并拼接成 Update Json 更新入库。

七日交易流水表的数据自动更新.png

借助 Apache Doris 动态分区分表特性,不仅能够保证底层主键和服务器稳定运行,还能够自动更新并只保留七天流水交易数据以供分析师查询,并满足百万 QPS 下 1.5 秒查询响应需求

05 高并发点查询

早期营销类与风控类应用场景主要依赖两套 HBase 集群以支持点查服务,然而在实际应用中,会遇到诸如 Master / Regionserver 异常退出、RIT 等问题。为避免该问题,可利用 Apache Doris 高并发点查能力,并在创建 Unique Key 表时,启用 Merge-on-Write 策略,使得主键点查能够经由简化的 SQL 执行路径完成,仅需一次 RPC 即可完成快速的查询响应。

最终通过在三台节点上进行压力测试,在为每台节点配置了 8C、10GB 的情况下,获得了以下显著收益:

  • 在单表包含 5000 万数据的查询场景中,QPS 高达 2.5 万;
  • 在涉及 5000 万数据的多表读写场景中,QPS 同样达到 2 万;
  • 复杂 SQL 查询的稳定性也保持在 QPS 2.5 万的高水平;
  • 在多表实时读写场景中,QPS 亦能稳定在 2.5 万。

结束语

目前 Apache Doris 在无锡锡商银行已经接入数百张实时表、上百数据服务接口 、接口 QPS 达到数百万级别。此外,Apache Doris 作为统一查询网关,显著提升了历史数据分析的效率,与原来分钟级响应时间相比,查询提速超 10 倍。

未来,无锡锡商银行将持续发掘 Apache Doris 优势,并推进其在实时场景中更深度的应用。

  • 在性能表现上:进一步优化高并发点查询、自动分区分桶、执行引擎等能力,以提升数据的查询响应效率;
  • 在负载均衡上:构建双集群,实现架构负载均衡;同时,将完善架构预警与熔断机制,保障业务运行不间断;
  • 在集群稳定性上:实现 Apache Doris 集群的“分工协作”,使其各自承担实时数据仓库的计算与存储、数据服务加速查询等任务,进一步提高系统的稳定性及可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3022275.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

深入解析智能指针:从实践到原理

👦个人主页:晚风相伴 👀如果觉得内容对你有所帮助的话,还请一键三连(点赞、关注、收藏)哦 如果内容有错或者不足的话,还望你能指出。 目录 智能指针的引入 内存泄漏 RAII 智能指针的使用及原…

[附源码]秦时明月6.2魔改版_搭建架设教程_附GM工具_安卓苹果

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 秦时明…

射频无源器件之耦合器

一. 耦合器的作用 在射频电路中,射频耦合器将一路微波功率按比例分成几路,用于检测或监测信号,如功率测量和波检测,还可改变信号的幅度、相位等特性,以满足不同的通信需求。根据输入与耦合端的功率差,常被分为5dB、6dB、10dB等耦合器。射频耦合器的类型主要包括定向耦合…

为软件教学文档增加实践能力

为了更方便软件教学,我们在凌鲨(OpenLinkSaas)上增加了公共资源引用的功能。 目前可以被引用的公共资源: 微应用常用软件公共知识库Docker模板 引用公共资源 引用微应用 目前微应用包含了主流数据库,终端等工具,可以方便的进行各种相关实…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令,形式如下: # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

2024软件测试自动化面试题(含答案)

1.如何把自动化测试在公司中实施并推广起来的? 选择长期的有稳定模块的项目 项目组调研选择自动化工具并开会演示demo案例,我们主要是演示selenium和robot framework两种。 搭建自动化测试框架,在项目中逐步开展自动化。 把该项目的自动化…

数据结构-线性表-链表-2.3-6

有一个带头结点的单链表L&#xff0c;设计一个算法使其元素递增有序。 void sort(Linklist &L){LNode *pL->next,*pre;LNode *rp->next;p->nextNULL;pr;while(p){rp->next;preL;while(pre->next!NULL&&pre->next->data<p->data){prepre…

县供电公司员工向媒体投稿发文章用亲身经历告诉你并不难

在县供电公司的日子里,我肩负着一项至关重要的使命——信息宣传工作。这不仅仅是一份职责,更是连接公司与外界的桥梁,通过新闻稿件传递我们的声音,展示我们的成果。然而,回忆起刚刚踏入这个领域的时光,那段经历至今让我感慨万千。 初涉投稿,步履维艰 刚接手这项工作时,我的投稿…

暴打前任互动玩法开播教程

暴打前任互动玩法开播教程 暴打前任互动玩法开播教程【相关直播互动插件咩播需要额外官方购买】 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x

安装docker20.10.18版本步骤

安装docker20.10.18版本步骤 准备低版本安装包 #安装20.10.18版本的dockercd /opt #切换目录#上传需要的docker20.10.18.zip安装包unzip docker20.10.18.zip #解压cd docker20.10.18/ #切换目录yum install -y *.rpm #安装systemctl enable --now docker.service #开机自启并…

NineData亮相2024中国移动算力网络大会

4月28日至29日&#xff0c;2024中国移动算力网络大会在苏州召开。大会以“算力网络点亮AI新时代”为主题&#xff0c;全面展示了中国移动最新算力网络成果与能力。江苏省委常委、苏州市委书记刘小涛&#xff0c;副省长赵岩出席开幕式并致辞。内蒙古自治区副主席白清元出席。中国…

redis集群-主从机连接过程

首先从机需要发送自身携带的replid和offset向主机请求连接 replid&#xff1a;replid是所有主机在启动时会生成的一个固定标识&#xff0c;它表示当前复制流的id&#xff0c;当从机第一次请求连接时&#xff0c;主机会将自己的replid发送给从机&#xff0c;从机在接下来的请求…

5月8日学习记录

_[FBCTF2019]RCEService&#xff08;preg_match函数的绕过&#xff09; 涉及知识点&#xff1a;preg_match函数绕过&#xff0c;json的格式&#xff0c;正则回溯 打开环境&#xff0c;要求用json的格式输入 搜索学习一下json的语法规则 数组&#xff08;Array&#xff09;用方括…

无意的一次学习,竟让我摆脱了Android控制?

由于鸿蒙的爆火&#xff0c;为了赶上时代先锋。到目前为止也研究过很长一段时间。作为一名Android的研发人员&#xff0c;免不了对其评头论足&#xff0c;指导文档如何写才算专业&#xff1f;页面如何绘制&#xff1f;页面如何跳转&#xff1f;有没有四大组件等等。 而Harmony…

PDF转word转ppt软件

下载地址&#xff1a;PDF转word转ppt软件.zip 平时工作生活经常要用到PDF转word转ppt软件&#xff0c;电脑自带的又要开会员啥的很麻烦&#xff0c;现在分享这款软件直接激活就可以免费使用了&#xff0c;超级好用&#xff0c;喜欢的可以下载

党建教育vr虚拟现实展厅真正实现了绿色、低碳的展示方式

在数字化浪潮席卷的今天&#xff0c;传统企业门户官网已难以满足企业日益增长的展示需求。面对这一挑战&#xff0c;北京华锐凭借深厚的行业经验和领先的技术实力&#xff0c;为您提供全新的元宇宙虚拟展厅制作服务&#xff0c;助您轻松打破现实与虚拟的界限&#xff0c;开启企…

第八届大数据与物联网国际会议(BDIOT 2024)即将召开!

第八届大数据与物联网国际会议(BDIOT 2024)将于2024年9月14-16日在澳门圣若瑟大学举行。数聚未来&#xff0c;物联世界&#xff01;BDIOT 2024旨在搭建为各位与会代表展示自己研究成果、分享经验、建立联系和开展合作的平台&#xff0c;共同探讨大数据与物联网领域的未来发展方…

人工智能-2024期中考试

前言 人工智能期中考试&#xff0c;认真准备了但是没考好&#xff0c;结果中游偏下水平。 第4题没拿分 &#xff08;遗传算法&#xff1a;知识点在课堂上一笔带过没有细讲&#xff0c;轮盘赌算法在书本上没有提到&#xff0c;考试的时候也没讲清楚&#xff0c;只能靠猜&…

鸿蒙OpenHarmony开发板:【子系统配置规则】

子系统 子系统配置规则 通过build仓下的subsystem_config.json可以查看所有子系统的配置规则。 {"arkui": {"path": "foundation/arkui", # 路径"name": "arkui" # 子系统名},"ai": {&q…

Java内存是怎样分配的

Java内存是怎样分配的 一、 1. 有些编程语言编写的程序会直接向操作系统请求内存&#xff0c;而 Java 语言为保证其平台无关性&#xff0c;并不允许程序直接向操作系统发出请求&#xff0c;而是在准备执行程序时由Java虚拟机&#xff08;JVM&#xff09;向操作系统请求一定的…