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

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

off999 2025-02-15 00:45 22 浏览 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月上半月刊)

相关推荐

全网第一个讲清楚CPK如何计算的Step by stepExcel和Python同时实现

在网上搜索CPK的计算方法,几乎全是照搬教材的公式,在实际工作做作用不大,甚至误导人。比如这个又比如这个:CPK=min((X-LSL/3s),(USL-X/3s))还有这个,很规范的公式,也很清晰很...

[R语言] R语言快速入门教程(r语言基础操作)

本文主要是为了从零开始学习和理解R语言,简要介绍了该语言的最重要部分,以快速入门。主要参考文章:R-TutorialR语言程序的编写需要安装R或RStudio,通常是在RStudio中键入代码。但是R...

Python第123题:计算直角三角形底边斜边【PythonTip题库300题】

1、编程试题:编写一个程序,找出已知面积和高的直角三角形的另外两边(底边及斜边)。定义函数find_missing_sides(),有两个参数:area(面积)和height(高)。在函数内,计算另外...

Tensor:Pytorch神经网络界的Numpy

TensorTensor,它可以是0维、一维以及多维的数组,你可以将它看作为神经网络界的Numpy,它与Numpy相似,二者可以共享内存,且之间的转换非常方便。但它们也不相同,最大的区别就是Numpy...

python多进程编程(python多进程进程池)

forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...

原来Python的协程有2种实现方式(python协程模型)

什么是协程在Python中,协程(Coroutine)是一种轻量级的并发编程方式,可以通过协作式多任务来实现高效的并发执行。协程是一种特殊的生成器函数,通过使用yield关键字来挂起函数的执行...

ob混淆加密解密,新版大众点评加密解密

1目标:新版大众点评接口参数_token加密解密数据获取:所有教育培训机构联系方式获取难点:objs混淆2打开大众点评网站,点击教育全部,打开页面,切换到mobile模式,才能找到接口。打开开发者工具...

python并发编程-同步锁(python并发和并行)

需要注意的点:1.线程抢的是GIL锁,GIL锁相当于执行权限,拿到执行权限后才能拿到互斥锁Lock,其他线程也可以抢到GIL,但如果发现Lock仍然没有被释放则阻塞,即便是拿到执行权限GIL也要立刻...

10分钟学会Python基础知识(python基础讲解)

看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了。最好还是把代码敲一下。一、函数基础简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。...

Python最常见的170道面试题全解析答案(二)

60.请写一个Python逻辑,计算一个文件中的大写字母数量答:withopen(‘A.txt’)asfs:count=0foriinfs.read():ifi.isupper...

Python 如何通过 threading 模块实现多线程。

先熟悉下相关概念多线程是并发编程的一种方式,多线程在CPU密集型任务中无法充分利用多核性能,但在I/O操作(如文件读写、网络请求)等待期间,线程会释放GIL,此时其他线程可以运行。GIL是P...

Python的设计模式单例模式(python 单例)

单例模式,简单的说就是确保只有一个实例,我们知道,通常情况下类其实可以有很多实例,我们这么来保证唯一呢,全局访问。如配置管理、数据库连接池、日志处理器等。classSingleton: ...

更安全的加密工具:bcrypt(bcrypt加密在线)

作为程序员在开发工作中经常会使用加密算法,比如,密码、敏感数据等。初学者经常使用md5等方式对数据进行加密,但是作为严谨开发的程序员,需要掌握一些相对安全的加密方式,今天给大家介绍下我我在工作中使用到...

一篇文章搞懂Python协程(python协程用法)

前引之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线...

Python开发必会的5个线程安全技巧

点赞、收藏、加关注,下次找我不迷路一、啥是线程安全?假设你开了一家包子铺,店里有个公共的蒸笼,里面放着刚蒸好的包子。现在有三个顾客同时来拿包子,要是每个人都随便伸手去拿,会不会出现混乱?比如第一个顾...

取消回复欢迎 发表评论: