2022年,农业银行完成了核心账务系统从开放云下到云上全量切换的首次实践,成为四大行中率先实现单元化架构、分布式数据库、一体化云平台的数币系统。本文将结合数字人民币的特性分析与研究分布式数据库TDSQL、单元化多活架构、DDD领域驱动设计思想等关键技术在系统建设中的实践过程,为农行分布式核心系统建设探索出一条有效路径,把握主动权,打造未来竞争新优势,推动数字化转型和高质量发展。
一、背景
近年来随着IT技术爆发式的发展,尤其是移动互联网、大数据、人工智能、区块链和云计算等技术的逐步成熟,银行业务在渠道、产品、营销、运营和风控等方面都在发生着深刻的变革,产品迭代的速度越来越快。旧有基于集中式架构的核心银行系统难以满足银行核心业务系统的发展要求,因此,分布式的服务化架构成为各大银行不约而同的选择。2017年底,农业银行开始启动分布式核心系统建设,先后搭建起总控、运营、客户信息、产品合约、账务等分布式基础应用,并于2020年8月成功完成首个分布式示范应用投产,计划2023年具备完全下移条件。
目前,中国农业银行作为首批数字人民币运营机构,依托分布式核心系统建设的契机,以数字化转型为方向,以业务安全稳定高可用为底线,融入开放生态体系,延续“基于云计算、分布式数据库与服务化的开放平台分布式架构”建设思路,使用分布式数据库与一体化云平台重构数字人民币模块。
二、新一代分布式数字人民币后台建设情况
(一) 领域驱动,助力架构升级
数字人民币业务相对复杂,并且随着试点范围的逐步扩大,对于业务的可拓展性要求较高。因此,如何使系统在快速迭代的同时,维持系统的可维护性和可扩展性,是项目组在重构时需重点考虑的问题。而领域驱动设计(Domain-driven design,简称DDD)的思想,正契合了项目组的诉求。DDD善于处理与领域相关的、拥有高复杂度业务的产品开发,将业务逻辑从技术细节中解脱出来,对业务领域中的问题和复杂性进行抽象,建立统一的领域模型,以便更好地理解业务需求并将这些知识应用到软件设计中。领域驱动设计的思想与当前微服务架构十分契合,可以从多个方面辅助分布式系统的改造实施。
战略设计-确定边界:数币子域划分示例
通过对数字人民币的业务领域的梳理分析,系统建立了个人、对公、币串等领域,进一步细分了各个子域,厘清了各领域间限界上下文,找到业务边界。通过领域和限界上下文的定义,将数币系统分解为多个相对独立的微服务。通过“充血模型”,将数据和行为封装在一起,对领域外提供统一的访问和操作接口,保证了领域内各实体的状态一致。
领域驱动设计颠覆了传统“数据驱动设计”梳理E-R图-->设计表结构-->编写DAO-->编写业务代码的思维方式,在DDD的思想原则下,应用程序设计不再局限于技术实现细节,而是更加关注业务模型,以及系统和业务架构的匹配。这样的设计思想提高了系统的抽象层次,将软件开发的过程从单纯的技术实现转变为以业务为中心的全新模式。
(二) 锐意创新,落地核心设计
分布式数据库具有“逻辑统一,物理分散”的特点,相比集中式数据库,具备更高的数据访问能力、更强的可扩展能力、更高的并发访问量。数字人民币在单元化重构过程中根据农行统一技术栈要求,使用分布式数据库。在分布式系统中,当一笔交易涉及到多个分片上数据或者产生跨单元访问时,就会产生分布式事务。为保证数据一致性,项目组使用Saga模式处理分布式事务。当分支事务发生异常时,可通过事务补偿来回滚已成功事务,保证事务全局一致性。同时,通过不完整事务监控对Saga补偿失败的交易进行监控,并进行人工补偿。在系统建设中,数字人民币的特性结合分布式事务带来了新的挑战,项目组定制了以下技术方案:
1. 双账本运行模式再升级。币串是数币人民币的核心价值体现,采用双账本异步记账模式极大提升了系统的运行性能。但随着数币业务的发展,系统所能承载的交易量再次受到集中式数据库瓶颈的制擎。分布式数据库将数据均分到16分片上,极大的提升了系统的性能,但是对币串侧处理带来了新的问题。数币独特的客户号升级场景导致了客户在不同分片上频繁迁移,交易双方跨分片/单元交易产生的分布式事务都可能导致币串“双花”,高并发交易下乱序到达的币串侧处理请求产生多角债问题。针对上述难题,项目组设计了分布式库房与“redo”的补偿机制,自研币串交易撮合模型。分布式库房设计减少了跨分片事务的产生,在提升系统性能的同时也保障了币串处理的安全性;交易撮合模型解决了币串乱序到达导致交易失败的问题,极大提升了币串请求首次到达即可成功的概率,账本处理时间与币串处理时间差距短至64ms,客户几乎无感。
2. 库房全景视图,建设高效流转机制。库房流转存在跨片、跨单元调用,增加分支事务开销和失败概率;数币兑换业务均需要与储备库交互,储备库成为热点数据,存在性能瓶颈。为此,项目组建立多库房资金高效流转机制,通过参数化配置动态调整,总分库房币串自动调拨,币串分片内闭环流转,减少跨片、跨单元调用,减少储备库热点,提高数字人民币币串处理效率,为数币兑换业务保驾护航。
库房状态监控
3. 创新Redis降级处理模型,跨中心高可用。Redis在数币系统中广泛应用于币串调拨、红包发放、代发工资等重要业务场景,以上场景交易量大且对数据一致性要求高。但现有多中心Redis集群各自独立,未进行跨中心数据同步,如何实现Redis跨中心高可用成为系统一大挑战。项目组通过技术创新和业务场景紧密结合,制定出一套完整的Redis降级与灾备方案,当Redis故障或跨中心切换时,降级到数据库提供服务,Redis恢复后重新初始化数据关闭降级。该方案摆脱Redis强依赖,在保证业务完整连续的同时,实测降级下高并发领取红包场景TPS大幅提升,达到Redis正常启用时的90%。通过云平台实时监控Redis状态,DCC动态配置发布,实现一键切换降级,助力系统平滑快速完成上云切换。
Redis降级处理流程
(三) 产品贯标,融入全行统一产品体系
2022年,根据“十四五”规划以及党委会的工作部署,农业银行开展企业级三大标准的制定工作。在产品标准领域,数字人民币确立为农行一级产品,体现全行战略发展规划、业务领域划分和产品创新趋势。数币在系统重构时同步实施产品贯标改造,共梳理数币领域2大类13个产品,编入《中国农业银行产品信息标准》,实现业务产品“车同轨,书同文”。
为确保贯标的参数准确性和一致性,系统实施源头贯标。产品参数纳入产品管理系统统一管理,应用本地存储、使用标准化参数,确保本系统使用及对外提供的数据符合标准。贯标钱包数据纳入合约视图并下发至大数据平台,为智慧营销、经营分析等应用场景赋能。
三、新一代分布式数字人民币后台建设成效与展望
2017年中国农业银行作为首批运营机构承担数币研发任务,从零起步,建成功能强大、性能先进、安全可靠的农行数字人民币系统,支撑数字人民币全生命周期服务。2022年农行建成新一代分布式数字人民币后台,完成了行内核心账务系统从开放云下到云上全量切换的首次实践,成为四大行中率先实现单元化架构的数币系统。投产后平稳承接千万级日交易量,系统运行平稳,动态扩展能力得到极大提升,为支持后续业务快速发展提供了强力技术支撑,在我国新一代金融基础设施建设里程碑上迈出重要一步。
接下来,项目组将继续按照“基于云计算、分布式数据库与服务化的开放平台分布式架构”信息科技建设思路,对数字人民币中台三大模块进行微服务拆分,于2023年完成一阶段中台互联互通、用户中心两大模块应用单元化部署和两地三中心多活部署,于2024年6月完成二阶段服务中心模块改造迁移。实现全领域单元化,打造更加稳健的数字人民币系统,更好地适应未来业务发展需求,提供高效多样的金融场景、客制化服务,助力业务拓展。
作者简介:
谭洁帆,现就职于成研西藏分行服务部,数字货币二组,参与数字人民币后台建设,助力数字经济“新基建”。
董荣凤,成都研发部西藏分行服务部数币二组高级专员,担任数字人民币2.0系统建设项目技术经理。
李凯,就职于成研西藏分行服务部,数字货币三组,《数字人民币2.0系统建设项目》项目经理,现从事数字人民币中台单元化建设工作。
展开全文
- 移动支付网 | 2023/6/6 10:25:04
- 移动支付网 | 2023/6/6 10:07:56
- 移动支付网 | 2023/6/6 9:43:21
- 移动支付网 | 2023/6/6 9:20:21
- 移动支付网 | 2023/6/5 15:45:50
- 移动支付网 | 2023/6/5 15:37:32
- 移动支付网 | 2023/6/5 15:30:26
- 移动支付网 | 2023/6/5 15:22:37
- 移动支付网 | 2023/6/5 15:16:01
- 移动支付网 | 2023/6/5 15:08:24
- 我们的开心 | 2023/5/25 11:15:54
- 移动支付网 | 2023/4/25 11:43:27
- 移动支付网 | 2022/7/13 12:04:51