TiDB 在 Ping++ 金融聚合支付业务中的实践

赵姨娘
• 阅读 2777

Ping++ 介绍

Ping++ 是国内领先的支付解决方案 SaaS 服务商。自 2014 年正式推出聚合支付产品,Ping++ 便凭借“7行代码接入支付”的极致产品体验获得了广大企业客户的认可。

如今,Ping++ 在持续拓展泛支付领域的服务范围,旗下拥有聚合支付、账户系统、商户系统三大核心产品,已累计为近 25000 家企业客户解决支付难题,遍布零售、电商、企业服务、O2O、游戏、直播、教育、旅游、交通、金融、房产等等 70 多个细分领域。

Ping++ 连续两年入选毕马威中国领先金融科技 50 强,并于 2017 成功上榜 CB Insights 全球 Fintech 250 强。从支付接入、交易处理、业务分析到业务运营,Ping++ 以定制化全流程的解决方案来帮助企业应对在商业变现环节可能面临的诸多问题。

TiDB 在 Ping++ 的应用场景 - 数据仓库整合优化

Ping++ 数据支撑系统主要由流计算类、报表统计类、日志类、数据挖掘类组成。其中报表统计类对应的数据仓库系统,承载着数亿交易数据的实时汇总、分析统计、流水下载等重要业务:

TiDB 在 Ping++ 金融聚合支付业务中的实践

随着业务和需求的扩展,数仓系统历经了多次发展迭代过程:

  1. 由于业务需求中关联维度大部分是灵活多变的,所以起初直接沿用了关系型数据库 RDS 作为数据支撑,数据由自研的数据订阅平台从 OLTP 系统订阅而来。
  2. 随着业务扩大,过大的单表已不足以支撑复杂的查询场景,因此引入了两个方案同时提供数据服务:ADS,阿里云的 OLAP 解决方案,用来解决复杂关系型多维分析场景。ES,用分布式解决海量数据的搜索场景。
  3. 以上两个方案基本满足业务需求,但是都仍存在一些问题:

    • ADS:一是数据服务稳定性,阿里云官方会不定期进行版本升级,升级过程会导致数据数小时滞后,实时业务根本无法保证。二是扩容成本,ADS 为按计算核数付费,如果扩容就必须购买对应的核数,成本不是那么灵活可控。
    • ES:单业务搜索能力较强,但是不适合对复杂多变的场景查询。且研发运维代价相对较高,没有关系型数据库兼容各类新业务的优势。

所以需要做出进一步的迭代整合,我们属于金融数据类业务,重要性安全性不能忽视、性能也得要有保障,经过我们漫长的调研过程,最终,由 PingCAP 研发的 TiDB 数据库成为我们的目标选型。

TiDB 具备的以下核心特征是我们选择其作为实时数仓的主要原因:

  • 高度兼容 MySQL 语法;
  • 水平弹性扩展能力强;
  • 海量数据的处理性能;
  • 故障自恢复的高可用服务;
  • 金融安全级别的架构体系。

并追踪形成了以下数据支撑系统架构:

TiDB 在 Ping++ 金融聚合支付业务中的实践

新的方案给我们的业务和管理带来了以下的提升和改变:

  • 兼容:整合了现有多个数据源,对新业务上线可快速响应;
  • 性能:提供了可靠的交易分析场景性能;
  • 稳定:更高的稳定性,方便集群运维;
  • 成本:资源成本和运维成本都有所降低。

TiDB 架构解析及上线情况

TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 NewSQL 数据库。从下图 Google Spanner 的理念模型可以看出,其设想出数据库系统把数据分片并分布到多个物理 Zone 中、由 Placement Driver 进行数据片调度、借助 TrueTime 服务实现原子模式变更事务,从而对外 Clients 可以提供一致性的事务服务。因此,一个真正全球性的 OLTP & OLAP 数据库系统是可以实现的。

TiDB 在 Ping++ 金融聚合支付业务中的实践

我们再通过下图分析 TiDB 整体架构:

TiDB 在 Ping++ 金融聚合支付业务中的实践

可以看出 TiDB 是 Spanner 理念的一个完美实践,一个 TiDB 集群由 TiDB、PD、TiKV 三个组件构成。

  • TiKV Server:负责数据存储,是一个提供事务的分布式 Key-Value 存储引擎;
  • PD Server:负责管理调度,如数据和 TiKV 位置的路由信息维护、TiKV 数据均衡等;
  • TiDB Server:负责 SQL 逻辑,通过 PD 寻址到实际数据的 TiKV 位置,进行 SQL 操作。

生产集群部署情况:

TiDB 在 Ping++ 金融聚合支付业务中的实践

现已稳定运行数月,对应的复杂报表分析性能得到了大幅提升,替换 ADS、ES 后降低了大量运维成本。

TiDB 在 Ping++ 的未来规划

  1. TiSpark 的体验

TiSpark 是将 Spark SQL 直接运行在分布式存储引擎 TiKV 上的 OLAP 解决方案。下一步将结合 TiSpark 评估更加复杂、更高性能要求的场景中。

  1. OLTP 场景

目前数仓 TiDB 的数据是由订阅平台订阅 RDS、DRDS 数据而来,系统复杂度较高。TiDB 具备了出色的分布式事务能力,完全达到了 HTAP 的级别。

TiKV 基于 Raft 协议做复制,保证多副本数据的一致性,可以秒杀当前主流的 MyCat、DRDS 分布式架构。且数据库的可用性更高,比如我们对生产 TiDB 集群所有主机升级过磁盘(Case记录),涉及到各个节点的数据迁移、重启,但做到了相关业务零感知,且操作简单,过程可控,这在传统数据库架构里是无法轻易实现的。

我们计划让 TiDB 逐渐承载一些 OLTP 业务。

对 TiDB 的建议及官方回复

  1. DDL 优化:目前 TiDB 实现了无阻塞的 online DDL,但在实际使用中发现,DDL 时生成大量 index KV,会引起当前主机负载上升,会对当前集群增加一定的性能风险。其实大部分情况下对大表 DDL 并不是很频繁,且时效要求并不是特别强烈,考虑安全性。建议优化点:

    • 是否可以通过将源码中固定数值的 defaultTaskHandleCnt、defaultWorkers 变量做成配置项解决;
    • 是否可以像 pt-osc 工具的一样增加 DDL 过程中暂停功能。
  2. DML 优化:业务端难免会有使用不当的 sql 出现,如导致全表扫描,这种情况可能会使整个集群性能会受到影响,对于这种情况,是否能增加一个自我保护机制,如资源隔离、熔断之类的策略。

针对以上问题,我们也咨询了 TiDB 官方技术人员,官方的回复如下:

  • 正在优化 Add Index 操作的流程,降低 Add Index 操作的优先级,优先保证在线业务的操作稳定进行。
  • 计划在 1.2 版本中增加动态调节 Add Index 操作并发度的功能。
  • 计划在后续版本中增加 DDL 暂停功能。
  • 对于全表扫描,默认采用低优先级,尽量减少对于点查的影响。后续计划引入 User 级别的优先级,将不同用户的 Query 的优先级分开,减少离线业务对在线业务的影响。

最后,特此感谢 PingCAP 所有团队成员对 Ping++ 上线 TiDB 各方面的支持!

✎ 作者:宋涛 Ping++ DBA

点赞
收藏
评论区
推荐文章
MaxSky MaxSky
4年前
PHP 接入支付宝公钥证书指南
为了简单快速的接入,在申请支付宝商户后,我们可通过沙箱应用进行测试准备证书首先登录支付宝开放平台沙箱环境:在RSA2(SHA256)密钥设置中的加签模式选择公钥证书,然后访问下载对应操作系统的支付宝开放平台开发助手打开支付宝开放平台开发助手后,直接点击左下角获取CSR文件:【你没看错,就
Easter79 Easter79
3年前
thinkcmf+jsapi 实现微信支付
首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();
展菲 展菲
4年前
iOS 支付宝支付开发(最新版)
1.介绍本文为以前做的项目总结,由于相关支付SDK迭代,原文已经不满足需求,故作如下更新,供大家参考,另外增加常见问题总结。今天我们就主要介绍一下支付宝支付,其他支付介绍后面会尽快更新出来。在做支付之前,在网上也查寻了资料,大多都说,支付接入坑太多,微信坑最多,银联文档太复杂。其实如果接入的多的话,那些套路都可以绕着走。网上的经验什么的
Wesley13 Wesley13
3年前
h5 接入微信支付
我们公司,现在用ping做h5接入,用的是h5"壹收款"准备:如果公司,现在还没有公众号的话,支付宝。可以把这些工作,给ping来做这些事情 1.注册微信公众号,开通支付功能。2.注册ping (如果是自己开开通的微信支付,要填写相关信息)3.微信设置网页授权获取用户基本信
Easter79 Easter79
3年前
TiDB 在金融行业关键业务场景的实践(上篇)
TiDB作为一款高效稳定的开源分布式数据库,在国内外的银行、证券、保险、在线支付和金融科技行业得到了普遍应用,并在约20多种不同的金融业务场景中支撑着用户的关键计算。本篇文章将为大家介绍分布式关系型数据库TiDB在金融行业关键应用领域的实践。金融关键业务场景银行的业务系统非常复杂,包括从核心上的账户、账务、结算等业务到外围
Easter79 Easter79
3年前
TiDB 在金融行业关键业务场景的实践(下篇)
TiDB作为一款高效稳定的开源分布式数据库,在国内外的银行、证券、保险、在线支付和金融科技行业得到了普遍应用,并在约20多种不同的金融业务场景中支撑着用户的关键计算。在TiDB在金融行业关键业务场景的实践(上篇)(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin.
Wesley13 Wesley13
3年前
IOS开发之支付功能概述
前言:本随笔将对IOS开发的支付功能进行一个概述。内容大纲:一、常见的支付方案简介二、第三方支付SDK三、苹果官方支付方案四、Web支付方案正文:一、常见的支付方案简介!(http://static.oschina.net/uploads/img/201603/11165221_46C0.p
打造区块链开发+跨境支付模式
国内的电商事业在十几年年前就做得如火如荼成为世界有名的“电商国家”,如今我们的电商已经是走出了国门,跨境电商在国内有着很多企业在做,而近几年的区块链开发跨境支付模式更是让这些企业连连叫好。长期以来电商的支付方式就是痛点之一,其安全便捷是所有企业用户最关心的问题。传统支付方式在国内还算是比较安全的,毕竟不会有较多的外来因素所干扰,而跨境支付面对的是全世界,交
Easter79 Easter79
3年前
TiDB 在中国电信翼支付的大规模深度实践
作者介绍:刘宇,天翼支付资深架构师。天翼电子商务有限公司(翼支付)成立于2011年3月,是中国电信股份有限公司的全资子公司、中国人民银行核准的第三方支付机构、中国证监会核准的基金支付结算机构,是中国电信布局互联网金融的重要板块,是行业领先的创新型金融科技企业。业务覆盖全国近400个主要城市,注册用户超5亿,合作商户超过1000万,
赵姨娘
赵姨娘
Lv1
此曲只应天上有,人间能得几回闻。
文章
2
粉丝
0
获赞
0