百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

技术应用 | 基于分布式数据库的信贷管理系统改造

off999 2025-02-15 00:45 14 浏览 0 评论

文 / 江西省农村信用社联合社?杨江华

金融科技创新一直是商业银行实现自我蜕变的坚强后盾,迈向高质量发展的动力之源,尤其是云计算、大数据、人工智能、隐私计算等前沿技术的日渐成熟,越来越多的科技创新案例在各商业银行开花结果。同时,人民银行发布了系列金融科技发展规划,要求银行从长远视角加强顶层设计,把握金融科技发展态势,做好统筹规划、体制机制优化、人才队伍建设等工作。

在此背景下,江西农信于2018年开始吹响了数字化转型的号角。经历了近四年的数字化体系建设,初步搭建了以数字风控为核心的新一代信贷业务系统群,重构了传统信贷业务流程体系,实现了贷款客户全生命周期的精细化管理。随着江西农信科技引领攻坚战的深入,江西农信的数字化体系建设工作已经迈入了深水区。

新形势下,新一代信贷业务系统群发挥着重要作用,江西农信在满足业务高速发展的前提下,适时开启新技术在业务系统中的运用,摒弃IOE架构,实现软、硬件自主可控的目标,解决长期以来的“卡脖子”技术问题,打造具有江西农信独有特色的“百福云平台”,并对信贷管理系统进行上云技术改造。

经过行外专家与行内技术骨干的多次论证,最终制定了信贷上云改造“三步走”计划,其中重要一环便是自主可控分布式数据库AnalyticDB(以下简称ADB)及OceanBase(以下简称OB)替代传统关系型数据库DB2。

应用场景

报表查询子系统作为信贷管理系统的核心部件,为全省3万名客户经理提供了报表查询和报表导出功能。但随着信贷业务数据的不断积累,系统查询及导数性能急剧下降,大并发的慢查询交易甚至导致应用宕机,严重影响客户经理正常工作。2023年全省农商行贷款规模已超8000亿元,未结清贷款数为700万笔,单表最大数据量超过4000万条,而且贷款数据量以每年100万条的增速逐步上升,应用数据库的数据存储规模已经膨胀到2T。

为解决这一问题,江西农信拟采用ADB替换原有传统关系型数据库DB2。通过基于蚂蚁集团提供的金融级云原生架构的中间件(Scalable Open Financial Architecture Stack,简称SOFAStack?),构建起行内信贷管理系统上云改造技术体系,主要技术组件包括开发框架Sofaboot,应用服务器ECS、Nginx,流量负载SLB,ADB等。同时,为确保系统上云期间业务连续性,解决“一刀切”带来的技术风险,决定采用系统“双活”模式,即流量多路径路由的升级策略。

创新点

江西农信紧跟大数据分析技术发展潮流,深度参与分布式数据库技术的应用探索,并结合自身业务发展遇到的痛点问题,探索出具备江西农信特色的技术方案,有效提升客户经理体验,为全省农商行信贷业务高速发展保驾护航。

1.技术自主可控。ECS、SLB、ADB等都是Alibaba自主研发的云平台组件,拥有完全自主知识产权,已经在金融领域得到了诸多的技术落地案例验证,产品发展不受制于国外IT公司的技术封锁,安全可靠的同时,对于新业务功能需求可以做到快速响应。同时自主可控化也是一种技术趋势,不断满足监管部门对金融机构信创建设的要求。

2.高HTAP。Hybrid Transaction Analytical Processing(HTAP)是著名信息技术咨询与分析公司Gartner在2014年提出的一个新的数据库系统定义,特指兼具OLTP和OLAP的数据库系统。传统数据库仅能实现OLTP,并通过离线导入、ETL、DTS等方式以一定延迟同步到OLAP系统。根据阿里云官网发布的技术白皮书,ADB在6.0版本后对OLTP进行了多方面的性能优化,采用Multi-Master架构,该架构在验证OLTP场景横向扩展能力的测试,即TPC-B和TPC-C测试中均表现出优良性能。

3.业务高可用。信贷统计查询系统上云改造,采用的是两套系统双活,新老业务并行的运行策略,最大限度地降低系统切换带来的业务闪断现象,最大程度保障核心业务安全、稳定。与此同时,ADB双副本架构设计,要求一个副本集的计算节点是可用的,就可以保证实例正常提供服务。对于公共云场景,ADB还基于云盘做了数据三副本,每一份数据都会冗余三份打散存储,进一步保证数据不丢失,而对于混合云场景,则通过物理机磁盘做RAID阵列的方式做数据冗余,达到相同的效果。

4.二级法人特色的数据管理。为达成报表系统数据库的替换目标,需解决DB2->ADB间的实时同步问题,DTS具备对异构数据源同步的特性。同时,DTS也支持对异构数据源全量迁移、增量迁移,能够做到业务最小影响,实现了业务上云的平滑迁移。

由于数据存储规模庞大,结合江西联社实际情况,对全省86家法人行业务数据进行分库处理。分南昌地区、九江地区、赣州地区、新余地区、吉安地区等六个物理库。源数据库与地区分库建立数据同步链路,数据按照法人机构号进行路由分发,单表数据量由千万级压缩到十万级、百万级。各数据库同步链路相互独立,支持断点续传、支持时延监控、任务状态监控告警,而且配置灵活,有效保障业务连续性及运维的高效性(见图)。

技术实现特点

ADB基于开源项目Greenplum构建,由阿里云深度扩展,兼容ANSISQL2003,兼容Postgre SQL/Oracle数据库生态,支持行存储和列存储模式。既提供高性能离线数据处理,也支持高并发在线分析查询,是各行业有竞争力的PB级实时数据仓库方案。

1.产品高可用。实例节点高可用进一步强化了产品优势,集群中所有节点均采用主备HA架构设计,并强调主备之间数据强一致性。其中Master节点HA实现各服务节点间状态监控,每10秒完成一次Angent探测,异常发生时,Master节点HA切换小于30秒,将Slave升级为Master的同时重新搭建Slave;Segment节点状态监控,由Master每10秒完成一次,当Segment节点异常时,Master在30秒内完成其备用节(mirror)的切换。

2.弹性计算。ADB具备良好的弹性能力,同时支持水平扩展和垂直升降配,以满足不同场景的扩展和弹性需求。

垂直升降配调整计算节点的CPU和内存等资源。这种垂直升降配不会迁移数据,可以实现分钟级升降配,以应对突发业务高峰场景。垂直升降配还可以结合弹性节点调度能力,实现最大化利用算力资源,加速查询性能。

水平扩展分为两种模式,原地扩容和迁移扩容。原地扩容在原有实例的基础上增加计算节点,这种方式通过一致性hash算法来挪动数据,扩容时挪动的数据量相对较少,扩容速度更快。而迁移扩容则是通过新建一个实例,然后将原有实例数据迁移过去的方式实现扩容,这种方式相对于原地扩容成本较高,但是这种方式更加灵活,可以实现跨region跨可用区扩容。

3.高兼容。支持ANSI SQL2003,部分兼容Oracle语法,支持PL/SQL存储过程。新一代SQL优化器可实现复杂语句分析自动调优功能,帮助业务从集中式向分布式低成本迁移,最大限度保护客户已有投资;提供多种数据迁移工具以及一键数据迁移方案,支持业务不停机切换。另外,对于自主可控硬件和系统,支持海光、海思、飞腾等芯片,以及中标麒麟、银河麒麟等操作系统。

4.高性能。MPP水平扩展架构,支持PB级数据查询秒级响应。搭载了Alibaba自研的“双引擎”,即向量执行引擎和存储引擎,拥有向量化计算及列存储智能索引能力,相比传统数据库引擎在性能方面提升较大。

5.低成本。基于分布式架构和通用服务器,没有对特定硬件架构的依赖,支持行式存储和列式存储,支持非易失存储、固态硬盘、机械硬盘等多种存储介质,支持单节点最大10TB存储空间。在此基础之上,ADB进一步提供了存储压缩能力、OSS外表存储能力和共享存储格式、存储分层等能力,满足用户在不同场景的需求,综合降低客户使用成本。

价值与成效

江西农信借助ADB强大的计算能力,解决了DB2在多表关联场景中的性能短板,显著提升了报表文件下载性能。同时,通过采用了当前主流的前后端分离技术,摒弃了传统IOE架构,实现了前台服务与后台服务的解耦,对后续系统迭代开发与服务发布达到最小化影响。

展望

随着信贷系统上云改造项目第一、二阶段的目标的实现,取得了预期的成效。后期我们将聚焦信贷交易数据库的替换方案,其对交易性能、响应时间、事务一致性等业务需求更为严苛,经过多方面的技术探讨与测试,我们将着重考虑分布式数据库产品OceanBase。


(此文刊发于《金融电子化》2024年5月上半月刊)

相关推荐

Python进阶教程:如何自定义异常(附电商库存管理案例)

在Python中,你可以使用异常(exceptions)来预期和处理那些干扰程序正常执行流程的错误。Python内置了许多常见的异常,例如ValueError、TypeError和KeyError,但...

Python 中使用try来处理异常的方法

六二,直方大,不习无不利。在学习python中会经常遇到各种异常事件;现归纳一下如何捕捉并处理这些异常;今天来给大家整理一下。一、异常的概念什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,...

python入门-day3:异常处理(异常处理方法及流程python)

异常处理的内容,包括try、except、finally的用法,介绍常见异常类型,最后通过一个练习(处理用户输入的非法数字)帮你把知识点串起来。我会用简单易懂的语言,确保新手也能轻松掌握。Da...

16-Python的异常(python的异常类型及处理)

1-异常介绍1-2-什么是异常异常是程序运行时发生的错误或异常情况,它会中断正常的程序执行流程;Python使用异常处理机制来处理这些运行时错误。1-4-为什么要捕获异常异常会中断程序的执行;1-3-...

Python 异常处理详解(python中异常)

一、什么是异常?核心定义在程序运行过程中,当Python解释器检测到无法继续执行的操作时,会立即创建异常对象并中断当前流程。此时若不处理异常,程序将直接崩溃退出。典型场景与原理用户输入无效数据nu...

掌握这些 Python 异常处理技巧,代码稳如老狗!

在Python中,异常处理不仅可以帮助我们捕获和处理错误,还能让我们更清晰地了解错误发生的背景。1.异常层次结构Python内置了许多异常,我们在编程时可能会经常遇到,例如ZeroDivisi...

python异常处理机制最佳实践(python异常处理总结)

Python异常处理的最佳实践需要兼顾代码健壮性、可读性和性能。以下是经过工程验证的10个核心原则和技巧:一、精准捕获原则避免裸except禁止使用except:或exceptExce...

python之异常处理(python异常处理过程可以概括为三个步骤)

异常语法try:<代码块>except<异常类型>:<代码块>捕获通用异常try:<代码块>exceptExceptionas...

一天学一点,今天学习掌握Python:异常处理与文件操作全攻略

这一笔记记录了我学习python的异常和文件的操作,这也是针对Python异常和文件操作教程的进一步优化建议和注意事项:异常处理优化1.避免过度捕获异常o不要为了捕获异常而捕获异常,应根据实际需求...

新手学Python避坑,学习效率狂飙! 十二、Python 异常处理

异常处理系统分享在Python里,异常指的是程序运行期间出现的错误。当异常发生时,正常的程序流程会被中断,Python会抛出异常对象。为了防止程序因异常而崩溃,你可以使用异常处理机制捕获并处理这...

Python异常处理全攻略:从入门到精通,轻松应对代码“翻车”时刻

喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。引言:异常处理——代码世界的“保险丝”在编程的世界里,错误和异常就像路上的“坑”,稍不留神就会让你的程序“翻车”。而异常处理,就是...

Python异常处理全面指南(python异常处理步骤)

Python异常处理完全指南异常处理是编写健壮程序的关键技术。Python提供了灵活的语法和丰富的内置异常类型,能够有效管理程序运行时的错误。以下是Python异常处理的全面指南:一、异常处理...

进阶突破python——异常处理机制(异常处理用什么语句python)

Python的异常处理机制是其健壮性设计的核心,通过清晰的语法结构和灵活的处理策略实现错误管理。以下从核心语法、异常对象、高级特性和最佳实践四个维度详解:一、核心语法结构Python使用try-...

Python基础编程——详细介绍Python的异常捕获示例代码

这篇文章主要为大家详细介绍了python的异常捕获,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助①捕捉一个异常捕捉一个异常以用0作为除数会得到Ze...

Python学习 -- 异常捕获技巧(python怎么捕获异常)

在编写Python代码时,异常处理是确保程序稳定性的关键。Python提供了灵活的异常捕获机制,包括try...except语句、try...except...else语句和try...except....

取消回复欢迎 发表评论: