TiDB 实战分享丨第三方支付企业的核心数据库升级之路

news2024/11/18 8:52:06

本文介绍了一家第三方支付企业在面对市场竞争和监管压力的态势下,通过升级核心数据库来提升业务能力的实践。该企业选择 TiDB 分布式数据库,成功将其应用于核心业务、计费、清结算和交易查询等关键系统。TiDB 的水平扩展能力、高可用性和简化数据栈等优势,使该企业在处理高并发交易和保障数据安全方面取得了显著进展,提升了业务处理的敏捷性,同时降低了运维复杂度。


在数字时代,网络购物已经成为人们生活的重要组成部分,第三方支付行业迎来了前所未有的发展机遇。 第三方支付是指第三方支付机构在付款人与收款人之间提供的银行卡收单、网络支付和预付卡的发行与受理,以及人民银行确定的其他货币资金转移服务。 在网络购物、社交红包、线下扫码等多元化场景的推动下,中国第三方支付市场凭借便捷、高效、安全的支付体验,领先于全球。

业务挑战驱动数据库升级

某头部第三方支付企业是一家金融科技公司,拥有全面的支付牌照,为用户提供安全、便捷的支付和金融服务。用户可以通过移动应用、POS 终端、网站等多种渠道进行支付和转账。除支付服务以外,该企业还提供票务预订、充值缴费等多元化金融服务。

面对支付平台层出不穷、市场竞争异常激烈的局面,第三方支付企业在监管日益严格的背景下,纷纷聚焦产品质量提升,打造差异化竞争优势,探索服务模式创新。随着人工智能、区块链、数字货币等新兴技术的融合与应用,如何提升刷脸支付、声纹支付、车载支付等新兴支付的交易处理效率,持续拓宽新兴支付方式的切入场景并优化用户体验,成为第三方支付企业提升市场份额和竞争力的重要抓手。

为了更好地满足多变环境下业务高速发展的需求,该支付企业于 2020 年开始探索分布式数据库。经过充分的调研测试,TiDB 数据库凭借其原生分布式架构、应用的无侵入性和独立数据库厂商的中立性赢得了该企业的信任。从 2020 年开始, 该企业逐步将 TiDB 数据库应用于业务核心、计费、交易查询、清结算等多个核心系统。经过三年多的深入实践,目前核心系统运行平稳,不仅提升了业务的处理能力和敏捷性,还大幅降低了运维复杂度。截止到 2023 年 7 月, 该企业已上线 100 多个 TiDB 节点,投产超过 50% 的核心业务。

业务核心系统的数据库升级经历了四个阶段:

● 代码改造 :整个核心系统基础架构的迭代遵循技术领先和开源透明的思路,新的业务系统基于 MySQL 兼容的数据库进行业务改造,充分利用数据库的内核能力,避免对单一产品形成过度依赖和绑定。

● 并行验证 :实际生产流量跑在原有数据库 Oracle,通过网关把所有流量在 TiDB 回放,主要验证 TiDB 数据库性能及承载业务压力的稳定性,该阶段运行时间 6 个月。

● 流量切换 :核心业务的流量逐步按比例迁移到 TiDB,历时一个月左右,成功将近亿级别的全量交易切换到 TiDB。第三方支付企业的交易生命周期包括交易发生、计费、清算、结算、查询统计等环节,面向交易客户、商户、清算机构等群体。由于交易链路长且复杂,为了更好地把控风险和确保业务可回退,整个迁移过程中,将迁移到 TiDB 的流量在 Oracle 侧进行回放。

业务流量切换示意图

● 下游改造:将原先由多个 Oracle 实例通过 ETL、CDC 和业务写入等多种方式汇聚到 TiDB 集群中,提供包括清 算,结算,计费,商户交易统计查询等服务。

TiDB 在核心系统的应用

1 业务核心

业务核心是该企业的核心业务集群,负责存储并处理所有核心交易数据,包括各种扫码渠道和 POS 刷卡交易。每日交易笔数达到亿级别,呈现出明显的商户交易高低峰分布,涵盖了早、中、晚三个高峰时段。为了满足监管机构的要求,需要确保三方支付所有历史交易数据的可追溯性。由于原先公有云上的 RDS 数据库受到性能和容量的限制,处理能力无法达到预期,因此该企业选择使用 TiDB 替换公有云的 RDS 数据库。

TiDB 原生分布式架构设计,可以根据业务实际情况,灵活扩展计算或者存储节点,提供多副本的读写能力来解决读吞吐问题,提升响应延迟,优化 C 端和 B 端用户的使用体验。从上线至今,业务核心处理的数据量已接近 100 TB,日常交易高峰峰值 QPS 达到 60,000+,交易 99 线延迟稳定在 60 毫秒左右,充分展现了 TiDB 在规模化场景下出色的 OLTP 性能。

业务核心架构示意图

2 计费

支付行业的计费系统扮演着至关重要的角色,专门用于处理交易、计算费用并生成账单,与支付交易共同构成了支付生态的两翼。计费系统以严谨的逻辑和高效的算法,确保费用计算的准确无误。同时,它以清晰易懂的方式呈现账单信息,让用户和商户一目了然。目前整个计费数据库的 99 平均延迟稳定在 4ms 左右,峰值 QPS 10K,TPS 5 K,TiDB 完美的在一套系统中同时满足了高频的交易请求和实时的分析业务需求,有效保证了计费的时效和准确性。

3 清结算

清结算是金融机构用于处理交易结算和清算的系统。清算指按照约定的规则,计算并核实参与方的债权和债务关系,最终确定支付的义务;而结算则是履行清算结果,完成实际的支付过程。清结算系统的关键任务是确保交易的安全、准确和及时,包括处理交易、计算费用、生成结算单据以及实际的资金转移。TiDB 的水平扩展能力能够较好地应对清结算对于数据并发写入和瞬时 100K 的查询需求。

4 交易查询平台

为满足海量交易数据的查询需求,该支付企业构建了首个 TiDB 集群作为交易查询平台。该平台经历了从多个上游 Oracle 数据库同步到一套庞大中心化 Oracle 数据库的演进。然而,传统的中心化数据库体系无法满足该支付企业日益增长的交易数据量和扩展性需求,该支付企业将 Oracle 数据迁移到 TiDB 分布式数据库集群。同时,利用 TiDB 提供的 TiCDC 工具将数据同步到 Kafka 消息系统,实现了实时数据更新和多维度分析。

交易查询平台数据流转示意图

升级后,该支付企业交易查询平台在宽表组合、多表数据关联、多列数据截取等复杂操作方面展现出更为灵活的能力。TiDB 原生分布式架构使得平台能够高效地处理海量交易数据。同时,TiCDC 工具确保了数据同步的实时性和可靠性。得益于 TiDB 和 TiCDC 的加持,交易查询平台实现了多维度数据查询和分析能力的提升,为商户和内部管理提供了更全面、更精准的数据分析服务。通过实时获取业务洞察,企业能够做出更敏捷的业务响应,提升市场竞争力。

为什么选择 TiDB?

从过去三年该支付企业使用 TiDB 的实践经验来看,TiDB 带来的具体收益包括:

● 水平扩展能力

业务快速发展背景下,传统单机数据库难以应对高并发读写请求,性能无法水平扩展。分库分表方案的实施往往需要对业务进行大量的改造,带来了不小的成本和风险。原生分布式数据库具备灵活的弹性伸缩能力,可匹配业务的特点分别或同时扩展计算能力与存储能力。在引入 TiDB 之前,为确保核心业务系统的稳定运行,企业经常需要定期清理历史数据,过程繁琐且容易造成数据丢失。TiDB 的自动均衡能力有效解决了该问题,并满足了监管要求。

● 原生高可用能力

从刷卡收单、计费到后续的清结算和交易查询,每个环节都至关重要。TiDB 集群内部各个组件采用冗余设计,避免单机故障,存储节点默认采用 3 副本,通过 Multi Raft 协议保证各副本数据的一致性和高可用性。在 TiDB 集群之间,可通过 TiCDC 或者 TiDB binlog 的方式搭建灾备集群保障集群级别的高可用。TiDB 强大的高可用能力为用户提供更为可靠和稳定的交易体验。

● 简化数据栈,降低成本

TiDB 用一个数据平台满足实时交易与实时分析的场景需求,通过丰富的技术生态实现与 Oracle、DB2 等传统数据库的打通,实现与 Hadoop、Spark、Flink、Kafka 等大数据技术栈的广泛融合,为上层业务提供统一数据服务,在简化企业数据栈的同时大幅降低维护成本。

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

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

相关文章

交叉验证(Cross-Validation)

交叉验证的基本概念 交叉验证通常用于评估机器学习模型在未知数据上的性能。它将数据集分成k个不同的子集,然后进行k次训练和验证。在每次迭代中,选择一个子集作为测试集,其余的子集作为训练集。这样,每个子集都用作过测试集&…

二、计算机网络体系结构参考模型

一、分层结构 (一)为什么要分层: 发送文件/数据前要完成的工作: 1)发起通信的计算机必须讲数据通信通路进行激活 2)要告诉网络如何识别目的主机 3)发起通信的计算机要查明目的主机是否开机、并且…

实时渲染 -- 体素化(Voxelization)

我们之前讨论的大部分问题都是关于面表示的。由于这些方法不需要显式地表示物体的内部空间,所以非常高效。 体建模方法表示的是实体而不是表面。使用体模型可以产生更丰富的仿真效果,如物体的运动学行为和半透明光照效果。 一、有限元模型 有限元模型…

升级一下电脑,CPU换I5-14600K,主板换华硕B760M

刚给自己电脑升级了一下,CPU从 AMD R5 5600X 换成 Intel I5-14600K,主板换成了华硕的 TUF GAMING B760M-PLUS WIFI D4。 因为我现有的两根内存是DDR4的,所有我选了个支持DDR4内存的主板。 我发现用AMD处理器时将系统从Win10升级到Win11后变…

关于Linux系统中使用Kazam录制的视频在Win系统中无法播放的问题解决办法

今天在linux系统【ubuntu】中录制了一段视频,想要在win系统中进行剪辑,但是发现无法打开,使用的是Kazam录制的mp4格式视频。 Kazam录制安装与使用方式: 安装方式——linux终端输入: sudo apt-get install kazam使用…

04---webpack编写可维护的构建配置

01 构建配置抽离成npm包; 意义:通用性: 业务开发者无需关注构建配置 统一团队构建脚本可维护性:构建配置合理的拆分 质量:冒烟测试 单元测试 持续集成构建配置管理的可选方案:1 通过多个配置文件管理不同…

Android模拟器Android Emulator进行快照snapshot保存时问题

在用Android Emulator进行快照保存时出现问题,不能保存快照,并提示 current state is not support snapshot。 在网上查找了一圈,发现没有针对这个问题的方案,比较接近的方案都是eclipse年代的,说要进行enable snaps…

刷题之Leetcode27题(超级详细)

27. 移除元素 力扣题目链接(opens new window)https://leetcode.cn/problems/remove-element/ 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用…

可以写网易云的了!

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 1枚程序媛,大专生,2年时间从1800到月入过万,工作5年买房。 分享成长心得。 259篇原创内容-gzh 后台回复“前端工具”可获取开发工具,持续更新中…

苍穹外卖Day04套餐管理部分总结

写给像我一样完完全全的小白的。本人代码水平一塌糊涂,前几天就是机械地跟着视频敲代码。对于Day04的作业本来感觉代码抓瞎一点不会写,尽力去理解业务逻辑后发现好像也没那么难,整体代码可以仿照Day03新增菜品来进行实现! 一、功…

scratch寻找好朋友 2024年3月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

目录 scratch寻找好朋友 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、…

如何在Linux中安装软件

文章目录 一、Linux应用程序基础1.Linux软件安装包分类2.应用程序和系统命令的关系3.常见的软件包的封装类型 二、安装软件的方式1.RPM包管理工具2.yum安装3.编译 一、Linux应用程序基础 1.Linux软件安装包分类 Linux源码包: 实际上,源码包就是一大堆源…

Spring/SpringBoot/SpringCloud Mybatis 执行流程

在后续分析Mybatis 流程中代码的可能会用到IDEA debug 技巧: 条件断点 代码断点,右键 勾选弹窗 Condition : 写入表达式 回到上一步: Java动态代理实现 InvocationHandler接口: package com.lvyuanj.core.test;…

MAX7219驱动数码管学习记录(有源码)

一、7219datasheet阅读 1.引脚定义: 重点介绍5个引脚 1.DIN: 串行数据总线输入引脚,每个时钟的上升沿将数据移入至芯片内部的移位寄存器中 2.DIG0-DIG7: 共阴极管的GND连接的便是DIG0-7,该引脚起作用时,便输出低电平&#xff0c…

SSM学习——Spring JDBC

Spring JDBC 概念 Spring的JDBC模块负责数据库资源管理和错误处理,简化了开发人员对数据库的操作。 Spring JDBC通过配置数据源和JDBC模板来配置。 针对数据库操作,Spring框架提供了JdbcTemplate类,它是Spring框架数据抽象层的基础&#…

【学习】渗透测试有哪些重要性

随着信息技术的迅猛发展,网络安全问题日益凸显。渗透测试作为网络安全防御的重要手段之一,旨在模拟黑客攻击,发现并修复潜在的安全漏洞,提高网络系统的安全性。本文将介绍渗透测试的概念、重要性、实施步骤及实践案例,…

echarts快速入门

文章目录 一、echarts下载1.1、下载说明1.2、使用说明 二、绘制一个简单图表 一、echarts下载 echarts是百度研发团队开发的一款报表视图JS插件,功能十分强大,可在echart官网下载源码(一个echarts.min.js文件)进行使用。 1.1、…

Star GAN论文解析

论文地址:https://arxiv.org/pdf/1912.01865v1.pdf https://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf 源码:stargan项目实战及源码解读-CSDN博客 1. 概述 在传统方法中&#x…

R语言技能 | 不同数据类型的转换

原文链接:R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天,再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢? 我们在使用R语言做数据分析时,会一直对数据进行不同类型的转换,有时候…

揭秘视觉Transformer之谜,TokenTM新法,全面提升模型解释性能

引言:揭示视觉Transformer的解释挑战 在计算机视觉应用中,Transformer模型的流行度迅速上升,但对其内部机制的后置解释仍然是一个未探索的领域。视觉Transformers通过将图像区域表示为转换后的tokens,并通过注意力权重将它们整合起…