PingCAP 戴涛:构建面向未来的金融核心系统

news2024/11/24 17:06:27

作者:戴涛

导读

近日,平凯星辰解决方案技术部总经理戴涛在 2024 数据技术嘉年华活动中,做了主题为“构建面向未来的金融核心系统”的分享,本文为戴涛演讲实录的全文。

文章分析了中国金融行业的发展趋势,并且基于这些趋势对数据库选择从架构、运维和开发三个视角进行展开。通过平凯星辰多年的金融行业实施经验和丰富案例,基于 TiDB 构建金融核心系统是一条可重复、可复制、具备先天技术优势的路径。

金融核心系统的发展对分布式架构提出更高要求

1 从业务视角看当前中国金融行业处于三浪叠加的阶段

随着金融科技的兴起,银行业正面临着深刻的变革。知名金融科技专家和作家布莱特·金(Brett King)在多部著作中提出,银行经历了四个发展阶段:1.0 网点银行,以物理网点为中心提供基本的存贷款服务;2.0 渠道银行,拓展线上渠道,例如 ATM、网上银行、手机银行等;3.0 平台银行,基于移动随时随地获得金融服务;4.0 开放银行,嵌入生产、生活,无所不在的智能银行。当前,中国银行的业务发展呈现出三浪叠加的态势:从 1.0 到 2.0 做网点转型,2.0 到 3.0 做渠道转型,3.0 到 4.0 做开放银行的转型。

三浪叠加的业务,对于当前的银行提出了更高的发展要求。银行的 IT 部门如何面对这些需求?唯有加速数字化转型。在技术方面加快技术融合场景,加速体验创新;技术架构升级推动科技创新,特别是采用分布式、微服务的架构,并且通过 DevOps 体系搭建数字化 IT 生产线;最后需要加大金融 IT 科技投入和人才组织创新。

2 从技术发展看,金融业对于金融科技提出更高的要求

这些转型的背后对业务和 IT 都提出了巨大挑战,以银行技术举例,银行发展的周期和 IT 技术是密不可分的,需要综合考虑业务需求和 IT 技术的演进。 追溯到 60 年代,半导体技术的突破使得电子数据取代人工记录,银行业务迈入信息化时代。 70 年代小型机、大型机出现,实现了银行业务的系统化批处理,提高了工作效率。 80 年代终端 PC 的普及,推动了银行业务的远程化和自动化,客户服务体验得到显著提升。 90 年代局域网的应用,开创了银行数据中心公司网时代,为集中化数据管理奠定了基础。 2000 年至今,银行业开启了互联网新时代,金融服务变得更加便捷、高效。

金融科技经历了从金融电子化、互联网化到金融科技融合与创新的演变历程。在金融科技融合与创新阶段,未来的新技术趋势可以浓缩为 ABCDIR5 七项:即 A 人工智能技术、B 区块链技术、C 云计算及平台、D 大数据相关技术、I 物联网和平台、R 机器人技术、5G 通信技术,这些新技术被广泛应用于越来越多的金融业务场景,对数据和数据库技术提出了新的挑战和要求。

3 IT 架构和业务需求双轮驱动推动银行核心系统升级

业务需求和 IT 架构是银行数字化转型的双轮驱动。传统金融核心系统以技术为中心,面向业务流程,产品开发周期长,数据庞大且业务繁杂,信息交换和共享效率低。而金融数字化升级需求则以用户为中心,强调架构的灵活性、敏捷性和海量业务的承接能力。以互联网支付处理为例,业务需求的快速变化如何承接?渠道和用户的体验如何优化?营销成本如何降低?IT 基础设施的升级重构是银行数字化转型成功的关键。银行需要构建一个敏捷、弹性、数据驱动、安全可靠的 IT 基础设施,以满足业务需求和数字化升级的需求。

4 分布式架构成为银行核心转型的必然路径

分布式架构已经成为银行核心转型的必然路径。 在早 期 WTO 时代,银行核心系统采用胖核心架构,将记账、数据分析、审计、监管等多种功能集成在一个系统中,以满足银行全面的业务需求。 随着金融业务的复杂性和多样性不断提升,传统胖核心架构难以满足敏捷性和弹性需求。 银行逐步转向采用瘦核心架构,将核心业务功能与非核心业务功能分离,以 SOA 架构为基础,把非核心业务功能模块化,通过服务接口进行调用,提升了系统的灵活性和可扩展性。

互联网技术的兴起,对银行业务产生了深远的影响。传统银行核心系统难以满足互联网业务的敏捷性和弹性需求,因此出现了双核心架构。双核心架构是指银行同时运行传统核心系统和互联网核心系统,以满足不同业务场景的需求。传统核心系统主要负责处理核心交易和数据管理,而互联网核心系统则主要负责处理互联网业务,例如网上银行、在线支付等。

近几年,随着微服务架构的兴起,银行核心系统开始向分布式架构演进。分布式架构将核心业务系统拆解为多个微服务,每个微服务独立开发、部署和运行,通过 API 接口进行通信,具有敏捷开发、弹性扩展、高可用等优点,称为分布式核心或者无核心。在此基础上结合自主可控的要求,分布式核心能够更好地支持业务的创新和可持续发展。

2023 年 11 月,TiDB 助力杭州银行新一代核心系统成功投产。杭州银行的资产规模约为 1.6 万亿,在中国银行排名在二十名左右。新核心系统是业内首个实际投产的云原生、分布式、全栈国产化的银行核心系统,标志着杭州银行核心业务系统实现完全自主可控和架构升级。

自上线以来,新核心运行高效稳定,日均交易量 1500 万笔,服务调用 5500 万次。客户体验显著优化,与上一代相比,新核心的联机交易性能大幅提升,平均响应时间小于 100 毫秒,提升了 1.5 倍;日终批量处理效率翻倍提升,为原系统的 2.1 倍,整个批处理在一小时之内完成。杭州银行采用了 TiDB 两地三中心架构部署,实现了双活数据中心双写并行、灾难快速自动恢复且数据零丢失。

杭州银行坚持应用与基础设施解耦的架构思想,秉承分布式、透明化的设计开发理念,这对于同行业来说具有重要的参考价值。在此次核心系统改造中,杭州银行并未对业务架构进行大幅调整,而是将业务逻辑平移至新的技术平台之上,既保留了原有的使用习惯,又为整体架构路线奠定了可持续创新的基础。

面向未来的金融核心系统对数据库的要求

总结下来,构建面向未来的金融核心系统对数据库的要求有三大维度。

  • 从架构视角看,核心业务对数据库的要求除了稳定性以外,一定要考虑到数据库的通用性和开发透明性。
  • 从运维视角看,除了同城双活以外,需要考虑到更好的线性可扩展,运维便捷以及更好的易用性。
  • 从研发视角看,需要关注在开发和业务实践过程中,对于分布式事务、热点等问题的解决方案,以及技术生态是否健全等。

1 架构视角看,优先考虑开发透明性和迁移路径

从架构视角看,银行核心系统历经二十多年发展,积累了大量业务资产和应用系统,涉及多家供应商,数据库架构的选择需要以开发透明化为核心。传统分库分表方案对开发团队提出了较高要求,且造成技术栈和业务逻辑的复杂化。为了降低开发复杂度,提高开发效率,原生分布式架构的数据库产品是更好的选择,开发团队可以像使用传统数据库一样设计应用和开发代码。其次,选择对运维扩容更加透明的数据库产品,应用无需担心数据库表容量问题,单表大小可无限扩展且无性能拐点。第三,利用 HTAP 能力提供查询分析的透明性,提供更高性能的 SQL 执行效率。此外,数据库还应提供热点数据自动感知且自动打散的能力,从而降低应用设计的复杂度。

系统迁移 5R 模型为系统迁移规划提供了三个主要途径:平迁、改造迁移和新架构重构。调研数据显示,金融行业采用技术平移方式的比例为 56%,而采用新系统架构重构方式的比例为 44%。根据我们服务大量金融客户的经验,对于构建金融核心系统而言,平迁并非最佳选择。平迁虽然看似简单直接,但往往无法为业务带来显著收益。因此,在进行系统迁移决策时,应结合业务需求的主线进行综合考量。

对于大量的边缘化非核心系统,平迁是一种更为经济便捷的方式。它可以有效降低迁移成本,并减少对业务运营的影响。然而,对于核心系统而言,新架构重构才是收益最大的方式。重构意味着采用全新的架构、软硬件和设计开发理念,是实现核心系统升级和业务转型的重要途径。

在过去几年,随着互联网业务的兴起,一些银行采用分库分表单元化的架构来构建核心系统。如下图所示,单元化架构采用总分总结构,将全球业务分成三个业务单元。不管单元怎么划分,你会发现总是需要汇聚的,比如说全局管理单元、全局批量单元和全局数据汇聚单元等。单元化架构需要对应用代码、基础设施、数据存储做大量的改造和重新设计,导致架构复杂度大幅提升,维护难度随之增加。单元化架构本质上并非易于横向扩展的架构,随着业务量的增长,系统扩展难度会显著增加。跨地域数据同步一致性是单元化架构面临的重大挑战,需要复杂的解决方案来确保数据的一致性。

单元化架构并非构建金融核心系统的最佳选择,其高复杂度、低扩展性和数据同步挑战等问题制约了系统的长期发展。我们优先考虑在数据库级别采用横向扩展的技术,相比于单元化架构更具优势。对于拥有强大技术实力和资源储备的大型银行,单元化架构是一个可行的方案,其开发成本和周期可控。对于大多数中小银行,微服务架构搭配原生分布式数据库的组合更具优势。微服务架构可以提升开发的敏捷性和灵活性,原生分布式数据库则能提供弹性扩展、高可用和强一致性等特性,可以帮助中小银行构建高效、可靠且成本可控的核心系统。

2 运维视角看,优先考虑扩展性和真同城双活架构

从运维视角看,TiDB 原生分布式架构支持基于单节点的在线扩缩容。传统分库分表数据库的扩容非常复杂,往往需要做多个节点的扩容,例如从 8 个节点到 16 个节点,从 16 个节点到 32 个节点。TiDB 支持按需的单节点扩容,无数次客户侧 PoC 的结果表明,随着节点的增加,TiDB 的性能呈现准线性的增长。在银行季度结息场景下,可动态增加 TiDB 的计算节点,提升处理效率,缩短结算时间。

TiDB 在业界率先实现了银行核心系统的分布式数据库双活架构,为金融机构的业务连续性提供了坚实的保障。分布式数据库通常需要三中心部署才能实现双活,但对于大部分金融机构而言,由于数据中心地理位置限制,难以满足三中心部署条件。TiDB 创新性地推出了“3-2-1”双中心架构,在生产主中心部署 3 个 TiKV 节点,在同城副中心部署 2 个 TiKV 节点和 1 个 Learner 节点。该架构以更低的成本实现同城双活,已在多家银行成功落地。

除了两中心双活方案之外,TiDB 还提供金融级高可用的两地三中心方案。当主集群发生故障时,可以快速切换到灾备集群提供对外服务能力。通过引入只读集群、测试集群、近线库、逃生库等多种灾备扩展方案,全面满足金融机构的容灾备份需求。

3 研发视角看,需要端到端的各种场景解决方案

从研发视角看,分布式事务处理无疑是一个首要难题。目前,业界主流的分布式事务模型主要有 XA 锁,SAGA 模型、 TCC 模型和 MQ 事务消息机制。针对金融行业的业务特点,我们采用了 SAGA 模型帮助用户做账务的处理,利用 MQ 事务消息机制来辅助用户完成异步核算任务。在银行进行分布式系统改造的过程中,为了满足对数据实时性的要求,我们不仅需要优化数据库性能,还需要对应用架构进行相应的调整,以确保数据的低延迟传输和处理。

在研发领域,除了分布式事务处理之外,读写热点问题也是我们关注的重点。无论是传统数据库还是分布式数据库,写热点问题都是一个普遍存在的挑战。对于写热点的处理,我们建议采用 TiDB 数据库的散列写入策略。对于读热点问题,我们需要从两个层面进行优化。在数据库层,通过引入高效的缓存机制,提升热点数据的访问速度;在应用层,通过合理的缓存策略,进一步减轻数据库的访问压力。

在中国银行业,热点账户问题尤为突出,这要求我们在业务设计上做出一定的调整和妥协。同时,在 SQL 语句的编写上,尽量采用批量提交的方式,以减少对热点账户的频繁更新操作。在极端情况下,我们还需要与银行业界共同努力,不断完善相关应用的台账管理,以应对热点账户带来的挑战。

在跑批场景,TiDB 提供核心批处理解决方案。以微众银行为例,批量数据每天通过单元化数据库 TDSQL 近实时的同步到 TiDB 集群进行汇总,由批量应用程序在 TiDB 集群进行批量计算和加工。得益于 TiDB 出色的汇聚能力和可扩展性,以及丰富的工具生态系统,TiDB 上线之后,主要贷款业务的核心批量耗时显著减少,较原有系统提升了 3.8 倍。在面对大促销等高流量场景时,TiDB 展现出了卓越的水平扩展能力,能够轻松应对突增的数据处理需求。

TiDB 原生分布式的架构与传统集中式数据库相比具有显著的差异。银行核心系统对性能、稳定性、跨地域的高可用性都有着严苛的要求。因此,TiDB 建立了混沌工程体系,通过混沌测试来探索系统的性能边界、验证高可用性和容灾能力、评估扩展性、优化监控和告警机制、检验应急预案有效性,评估外围作业对系统的影响等。平凯星辰携手杭州银行,基于风洞实验室的生产仿真环境进行了大量的测试和验证工作,通过场景提炼开发 10 余项产品新特性。

在经历了二十多年的发展后,银行业的信息技术已经达到了一个相对成熟的阶段。然而,在当前不断变化的技术环境中,银行科技部门面临着新的挑战,包括采用新技术、构建新架构和实施新工程。银行科技部门需要走出现有的舒适区,积极拥抱变革,重新构建一个完整的 IT 技术生态系统。这包括从需求分析,到开发、测试、发布,再到监控和运维的整个生命周期,形成一个面向未来的业务演进和规划的闭环系统。

4 TiDB 是面向未来的金融核心数据库

TiDB 是一款自主研发的原生分布式 HTAP 数据库,为金融机构打造了高性能、高可用、弹性扩展的现代化数据基础设施,其架构设计有以下特点:第一,存算分离,解决了高性能、高并发和在线扩容问题,且不依赖于特定的硬件和云平台。第二,TiKV 行存和 TiFlash 列存来应对 OLTP 和 OLAP 场景需求,TiSpark 提供大数据处理能力。第三,数据三副本机制,天然具备集群级的高可用。TiDB 提供了多种数据迁移工具,支持 MySQL 和 Oracle 数据库的平滑迁移。通过 TiCDC 同步工具,TiDB 的数据可同步至 MySQL、Kafka、对象存储等。此外,TiDB 还提供丰富的监控和企业管理工具,构建了一个完善的数据库技术生态。

携手 TiDB 构建面向未来的金融核心系统

作为一款广受全球用户青睐的开源分布式数据库,TiDB 赢得了国际社会的广泛认可。在 2022 和 2023 年,TiDB 连续两年入选 Gartner 云数据库“客户之声”,获评“卓越表现者”最高分。在沙利文头豹研究院发布的“2023 年中国金融级分布式数据库市场报告”中,TiDB 跻身市场领导者梯队。在 DB-Engines 最新 4 月的关系型数据库榜单中,TiDB 排名第 40 位,是中国唯一进入 Top 50 排名的数据库。

在构建一个面向未来的金融核心系统时,选择合适的数据库至关重要。以下是从不同角度出发,对理想数据库产品选择的总结:

  1. 架构层面:应优先考虑采用原生分布式架构的数据库,以确保系统具备良好的扩展性和弹性。同时,数据库应提供高透明度的开发环境,让开发者能够清晰地理解和掌握其工作原理和行为模式。
  2. 运维角度:理想的数据库应支持线性扩展,以便于系统运维团队能够轻松地进行扩容和管理。此外,数据库应提供高效的同城双活灾备方案,确保在面临灾难性事件时,系统的稳定性和数据的安全性。
  3. 开发角度:在分布式事务处理和读写热点问题上,数据库应有成熟的解决方案和最佳实践。这意味着数据库不仅要能够处理高并发的读写操作,还要能够提供有效的策略来分散热点,避免系统瓶颈。

TiDB 在国有大行 PB 级别的数据服务平台、城商行核心系统、保险公司保单系统等金融核心场景,成功实现了经典数据库和 MySQL 数据库的升级替换。在服务金融行业客户的过程中,TiDB 已经积累了丰富的最佳实践和经验。我相信未来能帮助更多的城商行、券商和保险公司,基于 TiDB 数据库来构建面向未来的核心系统。

通过平凯星辰多年的金融实际案例和实施经验,基于 TiDB 构建金融企业核心系统是一条可重复、可复制、具备先天技术优势的路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1672917.html

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

相关文章

Typescript 哲学 - ts模块使用最佳实践

ts的作用域 默认是全局(global),这也是为什么在 两个ts文件声明同一个变量报错变量名冲突,解决方法是使某个文件以模块的形式存在(文件顶层使用 export 、import ) In TypeScript, just as in ECMAScript 2…

微软如何打造数字零售力航母系列科普10 - 什么是Azure Databricks?

什么是Azure Databricks? 目录 一、数据智能平台是如何工作的? 二、Azure Databricks的用途是什么? 三、与开源的托管集成 四、工具和程序访问 五、Azure Databricks如何与Azure协同工作? 六、Azure Databricks的常见用例是…

2024.5组队学习——MetaGPT智能体理论与实战(待续)

学习资料:项目地址——hugging-multi-agent、在线阅读、MetaGPT项目、MetaGPT中文文档 文章目录 一、环境配置1.1 配置MetaGPT1.2 配置大模型api_key1.3 测试demo 一、环境配置 全部工作在Autodl上完成,下面是简单记录: 1.1 配置MetaGPT 下…

Android Activity因配置改变重建,ViewModel#onClear方法为什么不被调用?

1,问题 注意到切换语言或字体大小改变时,Activity会发生重建,但对应的ViewModel却不会被clear,甚至在重建的Activity,通过new ViewModelProvider(this).get(ViewModel.class)也是上一个Activity的实例,为什…

【精读Yamamoto】方向性连接如何丰富神经网络的功能复杂度 | 体外神经元培养实验 | 脉冲神经元模型(SNN) | 状态转移模型

探索大脑的微观世界:方向性连接如何丰富神经网络的功能复杂度 在神经科学领域,理解大脑如何通过其复杂的网络结构实现高级功能一直是一个核心议题。最近,一项由Nobuaki Monma和Hideaki Yamamoto博士领导的研究为我们提供了新的视角&#xff…

Linux----正则表达式练习题题解

1、 显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行; [rootopenEuler ~]# grep -E "^(H|h)" /etc/passwd halt:x:7:0:halt:/sbin:/sbin/halt 注:当然也可以使用grep -i来实现,这里我换了一个文件(/etc/passw…

第240513章 消除Otostudio关于库文件的48个报警

第240513章 消除Otostudio关于库文件的48个报警 文章目录 第240513章 消除Otostudio关于库文件的48个报警前言一、替换Lib_Googol文件夹二、替换扩展模块配置文件三、复制MODBUSTCP库到Lib_Googol文件夹四、替换GTS800和DEFAULT文件五、仿真模拟 前言 一、替换Lib_Googol文件夹…

ARM架构安全特性之通用平台安全服务

安全之安全(security)博客目录导读 目录 一、符合PSA认证标准 二、Arm平台安全规范 三、跨安全边界通信 四、FF-A 五、FF-M 六、开放和标准设备固件 七、Trustedfirmware.org 在一个需要高度信任设备的世界中,每个设备都必须是独一无二的可识别的、不可克隆…

AI“源神”启动!Llama 3发布,开闭源之争战局生变

在AI的世界里,开源与闭源的较量一直是科技界的热门话题。 今年年初,埃隆马斯克在对OpenAI及其CEO萨姆奥特曼提起诉讼时,就对OpenAI逐渐不公开其模型研究相关细节的行为大加谴责。“时至今日,OpenAI公司网站还宣称,它的…

新的语言学习系统: 记忆镶嵌

摘要 记忆镶嵌是由多个关联记忆网络协同工作来完成感兴趣的预测任务。与transformer类似,记忆镶嵌具有组合能力和上下文学习能力。与transformer不同,记忆镶嵌以相对透明的方式实现这些能力。该研究在玩具示例上展示了这些能力,并且还表明记忆镶嵌在中等规模语言建模任务上的表…

PCIE协议-2-事务层规范-Message Request Rules-Vendor_Defined Messages

2.2.8.6 厂商定义消息 厂商定义消息允许扩展PCI Express消息功能,可以作为PCI Express规范的一般扩展,也可以是厂商特定的扩展。本节通用地定义了与这些消息相关的规则。 厂商定义消息(见表2-25)使用图2-28中显示的头标格式。re…

栈队列经典OJ题(详细过程)

1. 有效的括号 - 力扣(LeetCode) 第一题判断有效的括号,这道题我们会用到栈的知识,栈是后进先出的,可以根据这个来解这道题,先看一下题目和示例。 1.1整体思路 我们通过示例可以看出括号匹配就返回true&am…

【STM32 |示例程序】EXTI中断示例程序(对射式红外传感器旋转编码器计次)

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 丠丠64-CSDN博客🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

MinIO学习笔记

MINIO干什么用的: AI数据基础设施的对象存储 为人工智能系统提供数据支持,数据存储;对象存储(Object Storage)是一种数据存储架构,它以对象为单位来处理、存储和检索数据,每个对象都包含了数据本…

Maven、JavaWeb基础开发

1 Maven介绍 1、标准化的项目结构 2、标准化的构建流程 3、依赖管理 4、依赖范围 2 JavaWeb基础开发 2.1 Http协议 1 Http请求数据格式 2 Http响应数据格式 2.2 Web服务器(Tomcat) VTS、FileServer使用Tomcat部署; 其他服务单元TESLA S…

前端使用Compressor.js实现图片压缩上传

前端使用Compressor.js实现图片压缩上传 Compressor.js官方文档 安装 npm install compressorjs使用 在使用ElementUI或者其他UI框架的上传组件时,都会有上传之前的钩子函数,在这个函数中可以拿到原始file,这里我用VantUI的上传做演示 a…

.NET开源、功能强大、跨平台的图表库LiveChart2

LiveCharts2 是 从LiveCharts演变而来,它修复了其前身的主要设计问题,它专注于在任何地方运行,提高了灵活性,并继承LiveCharts原有功能。 极其灵活的数据展示图库 (效果图) 开始使用 Live charts 是 .Net 的跨平台图表库,请访问 https://livecharts.dev 并查看目标平…

大模型管理工具:SWIFT

目录 一、SWIFT 介绍 二、SWIFT 安装 2.0 配置环境(可选) 2.1 使用pip进行安装 2.2 源代码安装 2.3 启动 WEB-UI 三、部署模型 3.0 deploy命令参数 3.1 原始模型 3.2 微调后模型 一、SWIFT 介绍 SWIFT(Scalable lightWeight Infrastructure for Fine-Tuni…

一、VIsual Studio下的Qt环境配置(Visual Studio 2022 + Qt 5.12.10)

一、下载编译器Visual Studio2022和Qt 5.12.10 Visual Studio 2022 社区版就够学习使用了 Qt5.12.10 安装教程网上搜,一大堆 也很简单,配置直接选默认,路径留意一下即可 二、配置环境 Ⅰ,配置Qt环境变量 系统变量下的Path&a…

tomcat 的启动流程

tomcat 的启动流程 中 使用的Lifecycle 生命流程 。在这里还使用了设计模式中的模板模式(LifecycleBase 是一个模板类) init()方法 start() 方法 container 的处理