从离线到实时:无锡锡商银行基于 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://www.mzph.cn/news/837992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G技术相关部分图解

1、面向5G商用网络的全系列解决方案 面向5G商用网络的全系列解决方案涵盖了从核心网到接入网的各个方面,确保网络的高性能、高可靠性和高安全性 2、2\3\4\5G带宽图解 G带宽的提升将推动许多新型应用的发展,并提供更快速、更可靠的移动通信体验。然而…

Springboot3 链接Redis遇到的报错(本文仅记录保存,优质文章移步springboot专栏)

出现的报错: cannot connect to Redisedis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is setredis wrong number of arguments for ‘auth’ command 其实上面的三个报错是不同界面显示的,后面两个是通过Ide…

git入门操作

一、介绍 Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目版本管理。 二、注册Git代码托管平台账号 以下几个平台可供选择: Gitee: https://gitee.com/(国内) Gitee(码云&…

【源码】2024全新多语言区块链交易所源码/期权交易/申购/币币秒合约交易所

全新ui,更新很多内容,具体看图,全部开源 全新多语言区块链交易所源码/期权交易/申购/币币秒合约交易所 - 吾爱资源网

03-数据结构(一)

链接:C# 数据结构_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1a541147Nk/?spm_id_from333.337.search-card.all.click&vd_source6eb7d966aa03ff5cb02b63725f651e68 链接:使用 C#.Net 学习掌握数据结构 (更新中)_哔哩哔哩_bilibili 一…

CheckStyle静态样式之道

优质博文:IT-BLOG-CN 在标准化的统一样式检查规范里,最为常用的统一样式工具是checkstyle插件,而不是国内阿里的代码规约插件。 【1】下载插件 【2】配置生效 配置生效及告警设置 【3】配置checkstyle.xml 官网地址 官网最新Releases 下面…

模拟量电机控制器PWM 输出隔离转换器4-20mA/0-5V/0-10V转50Hz/100Hz/1KHz/10KHz/100KHz

主要特性: 精度、线性度误差等级: 0.1、0.2、0.5 级4-20mA/0-5V/0-10V 等标准信号输入可选择RS485 通讯输入,支持 Modbus 协议PWM 信号输出,PWM 频率可选PWM 输出驱动能力可达 5A信号输入/信号输出 3000VDC 隔离可选择一进一出,一…

OpenAI 震撼发布:GPT-4o免费,实时语音视频交互开启新纪元

OpenAI 震撼发布:GPT-4o免费,实时语音视频交互开启新纪元 在仅仅问世17个月后,OpenAI 研制出了仿佛科幻片中登场的超级人工智能——GPT-4o,而且所有人都可以完全免费使用,让这个科技界的巨浪让人震撼无比!…

真JAVA代码审计之XSS漏洞

Part1 漏洞案例demo&#xff1a; 没有java代码审计XSS漏洞拿赏金的案例。 所以将就看看demo吧 漏洞原理&#xff1a;关于XSS漏洞的漏洞原理核心其实没啥好说的&#xff0c;网上一查一大堆。 反射性XSS漏洞 <% page language"java" contentType"text/ht…

图搜索算法-最短路径算法-贝尔曼-福特算法

相关文章&#xff1a; 数据结构–图的概念 图搜索算法 - 深度优先搜索法&#xff08;DFS&#xff09; 图搜索算法 - 广度优先搜索法&#xff08;BFS&#xff09; 图搜索算法 - 拓扑排序 图搜索算法-最短路径算法-戴克斯特拉算法 贝尔曼-福特算法&#xff08;Bellman-Ford&#…

克鲁斯CLOOS机器人维修知识分享

克鲁斯工业机器人是一种高度精密的自动化设备&#xff0c;广泛应用于制造业、物流等领域。为了确保机器人的正常运行&#xff0c;了解一些基本的CLOOS工业机械手维修知识是必不可少的。 【常见CLOOS机械臂故障及解决方法】 1. 机器人无法启动&#xff1a;检查电源是否正常&…

Milvus 安装与配置

一、环境准备 在安装 Milvus 之前&#xff0c;确保你的系统满足以下要求&#xff1a; 操作系统&#xff1a;Milvus 支持 Linux 操作系统&#xff0c;如 Ubuntu、CentOS 等。硬件资源&#xff1a;推荐使用具有足够 CPU、内存和 SSD 存储的机器。对于大规模数据集&#xff0c;高…

5---Linux小程序“进度条”及缓冲区的概念(逻辑梳理,轻松理解)

一、缓冲区的解析&#xff1a; 1.1论点的引入&#xff1a; 在Linux中有一个接口sleep&#xff0c;可以使得C/C程序休眠一段指定的时间。他需要依赖的头文件是<unistd.h>&#xff0c;注意这个接口为Linux私有。 usleep接口类似sleep接口&#xff0c;但是单位为微秒。下面…

计算机视觉中的计算几何

计算几何领域出现于 20 世纪 70 年代&#xff0c;研究解决几何问题的数据结构和算法。这尤其包括确定图像内的拓扑结构&#xff0c;或者实际上是更高维的表示&#xff0c;例如点邻域&#xff0c;这可以帮助从数字图像数据等中导出几何意义[1]。 计算机视觉主要涉及静态或动态图…

JAVA实验项目(一):JAVA面向对象特征性实验

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

C++ | string详解

1、string是什么 string是STL文档的容器之一&#xff0c;是一个自定义类型&#xff0c;是一个类&#xff0c;由类模板basic_string实例化出来的一个类&#xff1b; 类模板basic_string实例化出来了四个类&#xff0c;如下图所示&#xff1b; 实例化出的这四个类不同的是他们的编…

HI-TOP网关HT3S-DCS-MDN在半导体生产线中的RS232温控器与DeviceNet主机台通讯整合应用案例

一、项目背景 在半导体生产线的温度控制环节中&#xff0c;传统的RS232温控器因其稳定的性能和广泛的应用而占据重要地位&#xff0c;然而&#xff0c;由于不同设备厂商使用的通讯协议和标准各异&#xff0c;导致设备间的信息交换存在障碍。温控器的精确控制、设备的互联互通和…

YOLOv8独家改进:逐元素乘法(star operation)二次创新 | 微软新作StarNet:超强轻量级Backbone CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,逐元素乘法(star operation)在性能上始终优于求和,基于star operation块做二次创新 💡💡💡如何跟YOLOv8结合:替代YOLOv8的C2f,结构图如下 收录 YOLOv8…

PyQt5编写的一个简易图像处理软件

文章目录 1. 简介2. 准备工作3. 主界面设计4. 功能构建5. 总结 1. 简介 通过编写简易图像处理软件&#xff0c;你可以学习如何使用 PyQt5 构建用户界面&#xff0c;以及如何与用户交互。同时&#xff0c;你还可以学习图像处理技术&#xff0c;如图像读取、傅里叶变换、滤波、增…

Ansible自动化运维中的User用户管理模块应用详解

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月14日14点12分 在Ansible中&#xff0c;user 模块主要用于管理系统用户账户。它可以创建、修改、删除用户&#xff0c;并管理用户的属性&#xff0c;比如密码、…