“分布式透明化”在杭州银行核心系统上线之思考

导读

随着金融行业数字化转型的需求,银行核心系统的升级改造成为重要议题。杭州银行成功上线以 TiDB 为底层数据库的新一代核心业务系统,该实践采用应用与基础设施解耦、分布式透明化的设计开发理念,推动银行核心系统的整体升级。

本文聚焦银行核心系统演进,结合 TiDB在杭州银行新一代核心的实践,深入解析"分布式透明化"理念,希望能为同行业的转型升级提供参考。

本文作者:韩锋 ,CCIA(中国计算机协会)常务理事,前 Oracle ACE、腾讯 TVP、阿里云 MVP。有着丰富的一线数据库架构、软件研发、产品设计、团队管理经验。曾担任多家公司首席 DBA、数据库架构师等职。在云、电商、互金、互联网、银行等行业均有涉猎,精通多种关系型数据库,对 NoSQL 及大数据相关技术也有涉足,实践经验丰富。曾著有数据库相关著作《SQL 优化最佳实践》、《数据库高效优化》。《韩锋频道》公众号作者。

作为国家支柱性行业,金融业在国民经济中发挥着举足轻重的作用。近些年来金融业的运营模式和服务方式都发生了很大变化,这对于金融科技提出更高要求。与此同时,国内金融机构还面临国产化诉求,用以应对脱钩、断供等潜在风险。作为数据应用高地,金融企业普遍存在业务复杂、可用性要求高等特点,尤其是以银行核心系统为代表。对银行核心系统提供做架构升级、国产化改造是风险极大的一项工程。

近期,国内杭州银行新一代核心系统成功上线,引起业内普遍关注。行方从开始就秉承着应用与基础设施解耦架构思想、分布式透明化的设计开发理念,通过与国产分布式数据库 TiDB 的通力合作,完成此次核心系统的成功上线。这为国内广大同类型银行升级,带来积极参考意义;其背后的实践过程也很值得思考。

银行核心系统演进及观察

银行核心系统,也称为 Core Banking,是银行处理存款、贷款业务为主的核心 IT 系统。作为支撑业务营运的关键系统和银行信息化的重要组成部分,被称作银行 IT 系统的"心脏"。同时,银行核心在整个银行 IT 系统架构中是其他业务子系统的基础,处于承上启下的关键位置。核心系统在金融服务能力、处理性能等方面,对银行日常经营的业务与流程优化、提升客户体验度、推动业务改革或创新等方面起着决定性作用。

从历史演进来看,银行核心系统经历了从手工时代到 PC 时代,到联网联机、数据大集中,再到以客户为中心的发展历程。从上世纪九十年代开始,银行核心系统技术架构从数据集中路线演进而来的 "胖核心" 时期;到本世纪头十年因核心系统庞大且耦合严重,将辅助功能拆分后形成的 "瘦核心" 时期;再到近十年来互联网对银行业务产生影响,银行开始构建分布式核心,形成以稳态集中式架构与敏态分布式架构并存的情况。特别是在 2017 年,中国人民银行提出发展规划,鼓励实施架构转型,包括采用分布式架构,这一趋势推动了分布式核心系统的发展。分布式核心系统的关键目标是突破单机系统的数据存储和处理能力上限,同时减小单点故障对整个系统的影响。这通过多机分片处理数据库来实现,提高了银行系统的健壮性和可用性。

在推动分布式核心发展中,以"微服务、单元化"为代表的架构设计理念成为主流。 前者是一种软件架构风格,其应用程序被拆分为一组小型、松耦合的、自治的服务。每个服务都可以独立地进行开发、部署和扩展,并通过轻量级的通信机制(如 HTTP、消息队列等)进行互相通信。其核心原则是将复杂的单体应用程序拆分成更小、更可管理的部件,每个部件专注于完成一个特定的业务功能。后者则通过把一部分计算资源和一部分数据资源进行逻辑上的绑定,形成一个标准化的处理单元。每个处理单元具备完整的业务能力,但只处理全量数据中的一部分,简单理解一个单元就相当于一个小分行。其核心原则是将业务拆分更为细小的处理单元,并可根据需要进行扩展。

无论采取两种架构之一或兼而有之,都对底层基础设施提出更高的要求,特别是数据的主要载体-数据库。 相对而言,单元化更倾向于通过数据拆分,将数据形成一个自包含的处理单元,对数据库的承载体量、处理能力可以通过单机或集中式数据库完成。但由于单元化架构学习、实施成本很高,比较适合于体量较大或有异地多活规划的银行。对以城商行为代表的广大中小规模银行来说,因其技术底子相对较薄、业务系统多以外购或合作开发为主且财力投入相对有限,上述原因都造成了单元化对于中小行不太适合,那么中小行也更多采用"微服务+分布式数据库"的道路。

随着近十年国产分布式数据库的快速发展,其成熟度、稳定性等已趋于完善,开始在金融核心系统为代表的重要业务系统中尝试使用。当然, 这一新架构产品对架构、开发、运维等都带来很多变化 。特别是架构、研发层面,之前业务系统在设计上多是以集中式数据库能力为基础进行的,对于分布式架构存在诸多差异。如何降低这一差异,尽量复用之前架构设计,甚至做到将应用与底层基础架构解耦成为关键。这里提出一种新的观点-"分布式透明化",即在分布式架构下仍然可沿用单机或集中式数据库的开发设计习惯,做到完全无感。这里不是简单的与某种数据库的语法、运维兼容的问题,而是从架构之初就可以透明处理。正是这种分布式透明化能力给城商行等中小银行的核心系统国产化及升级改造,提供了一条平滑的创新之路。

TiDB 在杭州银行新一代核心的实践

近期,杭州银行以 TiDB 为底层数据库的新一代核心业务系统成功投产上线,也是业内首个实际投产的云原生、分布式、全栈国产化的银行核心系统上线,是金融科技领域突破关键核心技术应用的重大实践,标志着杭州银行核心业务系统实现完全自主可控和架构升级。这一实践中正是遵循了"分布式透明化"这一理念,为广大同业建设核心系统架构转型提供了参考。杭州银行此次核心系统升级,在规划之初就将业务与基础设施解耦放在首要因素,从多角度对底层数据库提出很高要求。

从架构角度来看, 首要问题就是解决所谓透明化问题,即对数据库建模、设计、开发过程仍可沿用之前的实践,尽量减少因引入分布式数据库所造成的差异。一方面业务系统开发中很难避免人员的更迭,另一方面很多业务系统也是采用合作开发模式。透明化对于最大化保留原有开发积累,有着重要意义。其次就是需要数据提供全面的兼容能力,对上可以兼容新型应用架构,包括微服务、云原生及可能会有单元化;向下可兼容具备自主创新能力的基础平台。第三则是希望数据库提供标准而非定制化能力,这也是基于业内实践,很多国产数据库当面临功能不足时会提供定制开发已解决问题,但这是不利于用户长期技术战略的。

从研发角度来看, 针对数据分片后不可避免的分布式事务问题,在框架层尚无成熟完善的分布式事务解决方案下,充分利用底层数据库的分布式事务能力来解决,这样开发简化很多。弱化对数据库特性功能的依赖,将很多功能前置到框架层来解决。例如针对数据库中常用的序列功能,即可在框架层提供分布式全局发号器来解决,不再依赖数据库实现。针对数据库经常需面对的热点问题,虽然分布式架构能在一定程度上缓解这一问题,但在开发方面仍可以有多重手段去前置解决。例如,通过缓存与数据库的结合,降低对数据库热点对象的访问。通过将业务处理异步化,将对数据库压力分散开来。这些措施都可以有效解决热点问题。

针对具备金融特点的跑批类业务,通过将处理工作打散并行可以有效提高吞吐量,消除批量热点,充分利用分布式数据库的丰富算力。例如针对银行核心系统日终及日间批量处理采用带有业务属性的分布式调度器,充分发挥分布式数据库 TiDB 支持多会话及高并发处理特性,在原有作业流程基础上由调度器使用分段 SQL 语句或分片算法将任务平均分配,并将分片任务同时下发到多个执行器节点并行处理提升批量处理性能;同时批量任务执行器节点和 TiDB 数据库节点均可实现弹性水平扩展,保证杭州银行在未来业务快速增长、数据规模急剧扩大的情况下,批量处理性能不降级。

从运维角度来看, 引入分布式数据库会带来不小的挑战,当然同时也有着明显收益。从数据完整性角度来看,以 TiDB 为代表的原生分布式架构产品提供的是基于共识协议的多副本机制,能保障数据的强一致性和完整性。从可行性来看,分布式数据库产品多通过三中心仲裁方式来提供整体高可用性,但这一方式成本较高。TiDB 在实现上提供了更为经济的强双中心方案,即当满足同城低延迟的条件下,可通过两中心提供同样的可用性保障能力。通过同城强双中心与异地备份的结合,最终达到 RPO=0 的可用性标准。这也是很多金融行业用户最终选择分布式数据库架构的原因,其不仅可提供高并发、高扩展性,其整体较高的可用性及容灾能力也是被选择关键理由之一。同时这一架构还提供跨中心的多写多读能力,这对于业务侧实现业务同城多活具备重大意义。

针对在具体运维工作中普遍比较头疼的大表 DDL 变更、分布式监控问题,TiDB 也通过特有的对象在线变更技术及可观测技术解决了整体的维护性。金融行业作为涉及国计民生的重要行业,对于供应链安全尤为重视,因此希望数据库产品能提供底层适配能力。TiDB 在这方面提供了多种架构 CPU 的适配能力,可满足用户未来可能的迁移需求,从根本解决"断供"问题。

杭州银行核心系统升级,正是从架构、研发、运维多角度出发,在充分考虑新型分布式数据库能力的同时,结合自身技术发展现状及长远规划,最终选择 TiDB 作为核心系统的数据库,并通过近两年与厂商的通力协作成功上线。杭州银行新一代核心系统上线以来运行安全稳定,大幅提升了业务处理效率, 已支撑日均交易量 1000+ 万笔,平均交易耗时小于 100 毫秒,较原核心业务系统缩减 54%,日终跑批的处理速度为原核心业务系统的 2.1 倍 ,能够有效支撑未来业务的快速发展。

杭州银行实践带来的思考

杭州银行核心系统的成功上线,为广大同业者及数据库行业带来很多思考。中国有数千家金融机构,随着业务发展及技术演进,都正面临架构升级改造的工作。但由于各金融机构,体量差异巨大、发展阶段不同、技术路线各异,很难找到通用性、标准化的路径。与此同时,数据库的发展近年来也呈现"井喷式"发展,一方面采用新架构、新理念的分布式数据库不断涌现;另一方面传统单机、集中式数据库也纷纷推陈出新。上述问题,共同造成金融用户在架构升级改造中很多痛点。

近日杭州银行核心系统上线,走出了一条的适合自己的实践道路, 其秉承的 应用与基础设施解耦 的架构思想, 分布式透明化 的设计开发理念对同行业具有很 大参考意义。在既保持了原有使用习惯的基础上,又在整体架构路线方面选择了可持续创新的架构。未来,希望广大金融 IT 从业者,在面临国产化升级的整体规划上,既需要考虑企业当前现状,也能充分瞄准未来架构的延伸性,以创新的思维推动银行核心系统的整体升级,共同助力中国金融的数字化转型。

相关推荐
一 乐2 小时前
民宿|基于java的民宿推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·源码
美林数据Tempodata4 小时前
大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
数据库·人工智能·数据分析·大模型·智能问数
野槐4 小时前
node.js连接mysql写接口(一)
数据库·mysql
Zzzone6834 小时前
PostgreSQL日常维护
数据库·postgresql
chxii4 小时前
1.13使用 Node.js 操作 SQLite
数据库·sqlite·node.js
冰刀画的圈4 小时前
修改Oracle编码
数据库·oracle
这个胖子不太裤5 小时前
Django(自用)
数据库·django·sqlite
麻辣清汤5 小时前
MySQL 索引类型及其必要性与优点
数据库·mysql
2501_915374356 小时前
Neo4j 图数据库安装教程(2024最新版)—— Windows / Linux / macOS 全平台指南
数据库·windows·neo4j
it-搬运工6 小时前
3.图数据Neo4j - CQL的使用
数据库·neo4j