TiDB x 北京银行丨新一代分布式数据库的探索与实践

导读

随着业务规模的扩大,传统数据库面临诸多限制,分布式数据库成为解决之道。本文 介绍了北京银行在数字化转型过程中对分布式数据库技术的探索,分享了 TiDB 在北京银行的应用历程和未来展望 。

本文根据北京银行软件开发中心罗水华先生在 PingCAP 2023 用户峰会的演讲实录整理,应用场景部分内容由 PingCAP 解决方案架构师刘畅撰写。

分布式数据库技术是推进数字化转型的关键点

北京银行作为中国最大的城商行,坚持以数字化转型统领发展模式、业务结构、客户结构、营运能力、管理方式的五大转型,分布式数据库建设是北京银行数字化转型的重要组成部分。

在新时代、新监管、新业态、新模式的数字化转型背景下,监管要求的不断升级和完善给银行业带来了新的要求,银行业必须持续进行产品创新、管理精细化、流程优化以应对经营环境的变化。随着金融环境渐趋包容开放的转变、社会金融服务创新的层出不穷以及市场竞争主体的多元化,金融环境市场竞争更加激烈,数字化浪潮的推动与金融科技的迅速崛起构建起开放生态正成为银行业的新趋势。

2023 年北京银行的客户数量突破了一个亿,随着客户数量、账户数量、业务交易量的持续上升,在业务场景多元化的演进下,传统数据库遇到了很多限制,比如数据的规模化存储、交易 TPS 的持续攀升等。推进分布式数据库技术解决传统数据库痛点已经成为推进数字化转型的关键点。

TiDB 在北京银行的应用历程

为顺应数字化时代的趋势,应对金融业数字化转型需求,北京银行在 2017 年率先迈出了第一步,开始探索分布式数据库。通过充分的调研测试,TiDB 数据库以其原生分布式架构、一键扩缩容以及应用的无侵入性和 MySQL 兼容赢得了北京银行 2017 年的选型。2018 年,北京银行基于 TiDB 上线了网联银联无卡支付系统,京信链系统。截止到 2023 年 7 月,北京银行已上线 198 个 TiDB 数据节点,共 17952 个微 Core 规模的 TiDB 集群,投产了 20 个重要业务平台。

分布式金融业务平台 是北京银行基于 TiDB 搭建的全新的金融业务平台,通过 TiDB 多用户共享资源机制,构建了查询服务、数据监控、风险防控等多项微服务架构,为客户提供存款、查询等多项服务。从 2018 年起,分布式金融业务平台陆续对接网联支付清算平台、银联无卡快捷支付平台、金融服务互联平台、网贷业务平台等多个核心金融业务场景。平台充分利用 TiDB 的 HTAP 混合业务处理能力,实现联机业务和在线分析业务的隔离,支持的数据表超过 80 亿+ 条数据,支撑超过 1 亿客户的互联网金融业务,同时满足联机业务和实时分析应用的不同场景需求。

历史明细查询平台 将核心系统各组件(如借记卡、个人存款、对公存款、个人贷款、对公贷款等)产生的交易明细记录等信息准实时同步到历史明细查询系统,面向手机银行、网银、柜面终端提供账户信息查询、历史明细查询等服务。基于分布式数据库 TiDB 构建的历史明细查询平台实现了数十个业务系统百 TB 级别数据的整合与供给,满足高可用、高并发、高弹性的多业务应用需求。一套创新的 HTAP 数据库简化了原有大数据技术栈,稳定支撑超 10 年海量交易数据的弹性存储。平台具备大规模实时多源汇聚、高时效性流式计算、大数据量复杂分析的能力,面向客户和生态伙伴提供高并发、多维度数据访问和实时分析服务。

互联网理财 承载着各类互联网代销渠道的理财业务流量,提供资产、产品维度的管理,客户维度的理财合约管理以及与行内关联系统相关的开户、客户信息、支付等操作,与行外机构相关的交易确认、对账、清结算等操作。为满足客户的多元化投资需求,北京银行提供多款专属理财产品,打造了种类丰富、期限多样、购买便捷的产品货架。互联网理财属于 OLTP 类系统,系统和数据容量更需要弹性扩展能力,数据模型具有明显的多维度特征,TiDB 提供联机加批量的混合处理方式,OLTP 部分主要以 API 或文件方式对行内、行外渠道提供服务,OLAP 部分主要通过数据、文件交换方式与大数据体系集成。

网联支付清算平台 是独立于现有银行间支付清算机构的新平台,根据中国人民银行“断直连”的要求,北京银行对业务和系统进行了整合,基于 TiDB 分布式数据库研发了网联支付清算平台,提供联机报文处理、批量对账处理等功能,实现了“断直连”汇聚三方支付的处理能力。北京银行率先在网联支付场景实现了用国产分布式数据库对传统集中式数据库的替换,满足在交易量和数据量突增情况下,通过 TiDB 数据库的弹性伸缩能力支撑业务的快速发展,且对应用透明无感。

民生卡平台 承载北京民生卡业务,北京民生卡是由北京市发改委主管,北京银行发行的新型社会保障综合服务卡,兼具社会保障、待遇发放、医疗健康、公园年票、金融服务等多项功能。TiDB 支撑一卡通的柜面申请,开卡、制卡、挂失、销户等操作,并提供个人卡信息查询、市政单位的信息查询职能。TiDB 实现了数据的统一存储,凭借多维度数据访问、数据热点动态平衡能力,向民生卡用户提供不同维度、灵活条件的高并发数据查询、分析、推送和下发服务,以统一数据视图提供对外数据库服务,打造极致的数字化用户体验。

北京银行的 TiDB 集群采用了两地三中心高可用的五副本架构。以网联系统为例,在和平里、顺义两个 IDC 跨机房同城构建分布式数据库集群,每个 IDC 部署两副本,西安 IDC 单副本做异地的数据同步,不承载业务,同时在顺义搭建了集群做本地的灾备。和平里、顺义两个主机房和西安异地备份机房采用 2-2-1 的模式,通过北京的四个副本向前端业务提供实时数据服务,这个架构可以高效地支撑联机交易类业务。目前,最大记录表的交易数已超过 20 亿条,完全满足高性能的金融业务的要求。

未来展望

后续,北京银行将继续推进国产分布式数据库的技术研究和应用推广工作。首先是扩展应用场景,扩大分布式数据库在北京银行内部的应用范围,逐步替代国外的商用数据库,新建系统优先使用分布式数据库。第二,继续提升价值收益,充分利用分布式数据库的架构提升差异化的金融服务能力。未来,不断深入探索实践,更好地掌握 TiDB 的特点,充分利用 TiDB 扩缩容和 HTAP 能力,快速地满足不断变化的业务需要,如实时营销、瞬时高并发场景等。

在应用 TiDB 的过程中,北京银行也在不断地探索无缝版本升级的最佳实践。在 2022 年,北京银行把原先存量的 TiDB 数据库从 2.0、3.0 等版本统一升级到了 TiDB 4.0 版本上,从而获得新的功能特性,并在稳定性和性能方面实现更好的提升。在分布式数据库的应用过程中,北京银行积极推进分布式数据库相关的规范和标准化建设,培养了一批专业的分布式数据库设计、开发和运维人才。

分布式数据库为北京银行的成功绘就了企业数字化蓝图,夯实了数字基础设施,在构建数字运营体系等方面取得了一系列突破。这使得北京银行不仅在规模效益方面取得了均衡增长,而且为迈入新征程打好了坚实的基础。北京银行将充分抓住数字化转型的战略机遇,锚定战略方向,守正创新,加速迈向高质量的发展之路。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2019 C# mysql数据库使用EF

mysql 安装mysql-8.0.18-winx64 mysql-connector-net-8.0.18.msi mysql数据库.net开发驱动, 要在工程中引入connector安装后目录中的mysql.data.dll;如果直接在nutget中下载mysql.data.dll,那么就不用下载.net开发驱动包 mysql-for-visualstudio-1.…

设计模式_状态模式

状态模式 介绍 设计模式定义案例问题堆积在哪里解决办法状态模式一个对象 状态可以发生改变 不同的状态又有不同的行为逻辑游戏角色 加载不同的技能 每个技能有不同的:攻击逻辑 攻击范围 动作等等1 状态很多 2 每个状态有自己的属性和逻辑每种状态单独写一个类 角色…

Spring底层原理(四)

Spring底层原理(四) 本章内容 模拟实现Spring中的几个常见BeanFactory后置处理器 常见的BeanFactory后置处理器 GenericApplicationContext context new GenericApplicationContext(); context.registerBean("config",Config.class); context.registerBean(Conf…

YOLOv7优化:独家创新(Partial_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(Partial_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨✨✨前沿最新计算机顶会复现 🚀🚀🚀YOLO…

试题二(15分)和试题三(15分) (软件设计师笔记)

🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉 在csdn获奖荣誉: 🏆csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣…

模糊C均值聚类(FCM)python

目录 一、模糊C均值聚类的原理 二、不使用skfuzzy的python代码 三、 使用skfuzzy的python代码 一、模糊C均值聚类的原理 二、不使用skfuzzy的python代码 import numpy as np import random import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei] plt.r…

保障效率与可用,分析Kafka的消费者组与Rebalance机制

系列文章目录 上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 Kafka存取原理与实现分析,打破面试难关 防止消息丢失与消息重复——Kafka可…

【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件

文章目录 1.ProgressBar2. ImageList3.ListView控件 1.ProgressBar 用于显示某个操作的进度。 属性: Value: 表示当前进度条的值,其范围由Min和Max决定。Step: 设置每次调用PerformStep()方法时增加的步长。MarqueeAnimationSpeed: 在Style设置为Marq…

二叉树问题——前/中/后/层遍历问题(递归与栈)

摘要 博文主要介绍二叉树的前/中/后/层遍历(递归与栈)方法 一、前/中/后/层遍历问题 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历 102. 二叉树的层序遍历 103. 二叉树的锯齿形层序遍历 二、二叉树遍历递归解析 // 前序遍历递归LC144_二叉树的前…

MySQL连接的原理⭐️4种优化连接的手段性能提升240%

MySQL连接的原理⭐️4种优化连接的手段性能提升240%🚀 前言 上两篇文章我们说到MySQL优化回表的三种方式:索引条件下推ICP、多范围读取MRR与覆盖索引 MySQL的优化利器⭐️索引条件下推,千万数据下性能提升273%🚀 MySQL的优化…

黄金矿工小游戏

欢迎来到程序小院 黄金矿工 玩法:点击开始游戏,黄金和钩子,钩子会左右摆动,对准黄金位置点击鼠标左键钓起黄金加对应时间,钓起黑色四块减去响应时间,快去挖矿吧^^。开始游戏https://www.ormcc.com/play/ga…

主播直播美颜SDK:提升颜值的秘诀

当下,主播们往往依赖于主播直播美颜SDK,这个技术工具为他们提供了一个让自己看起来更好看的机会。本文将深入探讨主播直播美颜SDK的工作原理、应用和影响,揭示提升颜值的秘诀。 一、主播直播美颜SDK是什么? 主播直播美颜SDK是一…

Latex排版SIGGRAPH总结(持续总结中...)

本文学习总结自:How to use the ACM SIGGRAPH / TOG LaTeX template 相关文件:百度网盘 首先解压 “my paper” 中的文件,并用Latex打开mypaper.tex. 多行连等公式 \begin{equation}表示编号公式,\[ \]表示无编号公式 无编号\b…

JMeter:断言之响应断言

一、断言的定义 断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。可以是看成验证测试是否预期的方法。 对于接口测试来说,就是测试Request/Response,断言即可以针对Request进行,也可以针对Response进行。但大部分是对Respons…

精益制造的工具与方法有什么区别?ECRS工时分析软件的功能和价值

精益制造是一套价值创造系统,它强调在生产过程中减少浪费、提高效率和质量,从而实现持续改进和优化。在精益制造的理念下,企业需要运用一系列的工具和方法来提升生产管理水平。这些工具和方法不仅包括传统的精益工具,如5S、持续改…

三.RocketMQ单机安装及集群搭建

RocketMQ单机安装及集群搭建 一:安装环境1.软硬件要求2.下载RocketMQ 二.安装单机MQ1.上传并解压2.目录介绍3.修改MQ启动时初始JVM内存4.启动NameServer与Broker5.测试RocketMQ 三.RocketMQ集群搭建1.集群概念特点2.集群模式分类3.集群工作流程4.双主双从集群搭建4.…

X64(64位)汇编指令与机器码转换原理

X64(64位)汇编指令与机器码转换原理 1 64位寻址形式下的ModR/M字节1.1 寻址方式1.2 寄存器编号 2 汇编指令转机器码2.1 mov rcx, 1122334455667788h2.2 mov rcx,[r8]与mov [r8],rcx2.3 mov rcx,[r8r9*2] 本文属于《 X86指令基础系列教程》之一&#xff…

Uniapp开发的开源盲盒系统源码

最近比较火的盲盒系统,该项目是基于uniapp开发的盲盒项目,有需要的朋友可以联系我,运营级的项目,本次开源的是uniapp前端模板,选用技术为JAVA,采用框架:spring bootmybatisvue开发。 通过node安…

Javassist讲解1(介绍,读写字节码)

Javassist讲解1(介绍,读写字节码) 介绍一、读写字节码1.如何创建新的类2.类冻结 介绍 javassist 使Java字节码操作变得简单,它是一个用于在Java中编辑字节码的类库; 它使Java程序能够在运行时定义一个新类,…

6-3 求二叉树的高度 分数 10

int Depth(BiTree Tree) {if (!Tree)return 0;return Depth(Tree->lchild) > Depth(Tree->rchild) ? Depth(Tree->lchild) 1 : Depth(Tree->rchild) 1; }