2

TDSQL 在微信支付数据密集型应用落地实践

 2 years ago
source link: https://segmentfault.com/a/1190000040586284
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

TDSQL 在微信支付数据密集型应用落地实践

发布于 今天 15:27

日前,腾讯云数据库开源产品TDSQL PG版(开源代号TBase)宣布推出重磅升级——经过一年半的打磨,上万张表访问场景下,内存占用节省60%;查询性能提升百倍;SQL语句兼容性增强。同时,大力提升原有数据库版本在分布式场景下的易用性。

TDSQL PG版是一款具备HTAP能力、经过腾讯多年持续投入研发的数据库产品,是腾讯云数据库团队在开源的 PostgreSQL 基础上研发的企业级分布式HTAP数据库管理系统,能够提供成熟的一站式解决方案。腾讯云数据库技术总监李跃森介绍到,“在首次开源的10天内,TDSQL PG版的Star数就达到了500多个。开源不久,就受到了欧洲航天局、国家天文台,以及医疗健康、零售等各个行业用户的青睐。”

作为新一代分布式企业级数据库管理系统,TDSQL 一直以来都应用于微信支付核心系统,支持微信支付实现高性能、高可用、数字化应用。近年来,微信支付基于TDSQL PG版构建数据密集型应用,实现单表数据轻松突破TB级海量存储,TDSQL PG版高吞吐、高并发,自动扩容的能力,充分满足了微信支付的业务场景需求。

那微信支付应用TDSQL PG版的过程中经历了哪些故事?TDSQL PG版在微信支付系统中又有哪些典型应用案例呢?

微信支付与TDSQL PG版的陪跑历程

“如果要用一个形容词来描述微信支付与TDSQL PG版的关系,那就是‘你侬我侬’。”腾讯高级工程师万志颖在介绍微信支付案例时表示,“TDSQL PG版为我们提供武器,微信支付则为TDSQL PG版提供了充足的试炼战场。”

以微信支付的商户服务平台为例,该平台主要是为千万级的商家提供帐单明细下载及帐单复杂条件查询及统计分析的平台。最开始,平台使用开源MySQL作为底端存储。但随着京东等大商户的接入,交易笔数逐步提升,数据增长单机存储容量受限,微信支付遇到严重的容量瓶颈和性能瓶颈。在当时的技术背景下,微信支付迫切需要一个好的解决方案,于是就选择了TDSQL PG版。

TDSQL提供的解决方案很好地解决了微信支付遇到的问题。在容量问题上,TDSQL提供了海量数据存储的在线线性扩容能力;在大商户的数据倾斜问题上,TDSQL基于双KEY分布等机制解决了数据存储均匀分布的问题;在分页查询性能问题上,TDSQL提供了基于Index only scan索引的相关优化方案,解决了传统web应用分页场景中总条数查询耗时高的问题。

“在交易系统基础上的更进一步应用的过程中,我们发现TDSQL PG版相关特性十分适合用于数据仓库中的维表存储,于是在2021年微信支付基于TDSQL PG版搭建了数据仓库的维表管理系统,使其成为大数据生态中的重要组件。”万志颖介绍。

TDSQL PG版在微信支付的应用实践

近年来,TDSQL PG版助力微信支付构建数据密集型应用,持续拓展应用场景,在多个领域体现出比较优势,保证了业务的稳定性和连续性。在此以报表系统和维表系统为例介绍TDSQL PG版在微信支付的应用实践。

微信支付报表系统中,存在两种典型的读写模型:一种是基于spark离线计算平台周期性写入,比如一天写入一次,每次写的数据很少,但也有可能写的数据量是十亿级或者百亿级。另外一种是通过消息队列的方式进行实时写入来构建实时报表。因为写入端是大数据系统,每次写入的数据量极其巨大,因此对底层数据存储的写入性能要求比较高。相比于开源MySQL,TDSQL PG版在并行写入方面有明显优势,具备更好的并行写入性能及吞吐能力,可以大幅降低我们数据入库完成时间,也能够支撑实时报表等场景的需求。

在报表页面读取数据方面,TDSQL PG版相比较开源MySQL具备更为丰富的索引类型支持。例如微信支付有一个业务场景是从百亿级数据中模糊检索商户名称,在引入TDSQL PG版前该场景的查询耗时接近17秒,优化之后该场景的耗时直接降到50毫秒以内,性能实现了极大提升。

截至目前,TDSQL PG版已经累计承载了微信支付3600+报表的数据写入、存储和读取,报表打开时间均能稳定控制在3秒以内,为整个报表平台的性能带来极大的改善。

微信支付还基于TDSQL PG版来构建维表系统。维表是描述一个事物的不同角度,比如性别上的男和女,写代码时的枚举值也可以认为是一种维表。接下来就以枚举值为例阐述微信支付如何基于TDSQL PG版来构建维表系统。

微信支付所有系统的枚举值都是基于履约建表系统进行统一的录入,目前总共有2700+枚举值的数据,下游的OLTP数据仓库中的计算任务以及报表系统、运营系统都会读取这些枚举值。如果上游对枚举值进行了修改或者新增,而下游得不到感知,这就会给整个系统的稳定性造成严重后果。

为了解决这类问题,微信支付基于TDSQL PG版打通了OLTP系统与OLAP能力融合的维表系统,在OLTP维表管理系统中录入或更新维表数据后,不论是在在线业务中、Spark计算中或者是报表系统中,都能实时引用最小的枚举值数据参与计算。与此同时,数据使用方也可以直接在数据仓库中看到每个枚举值字段的枚举值,不需要一层一层去查询,枚举值管理的复杂性得以控制,降低了相应的质量风险,达到金融领域应用的要求,极大的提高了我们的维护效率。

在整体运营上,目前微信支付在TDSQL PG版的存储量已经达到400TB+,每秒的请求量超过24万次,99.6%的请求基本上耗时都可以控制在10毫秒以内,充分满足了微信支付的在性能和稳定性上的高要求。

TDSQL是腾讯云企业级分布式数据库,旗下涵盖金融级分布式、云原生、分析型等多引擎融合的完整数据库产品体系,提供业界领先的金融级高可用、计算存储分离、数据仓库、企业级安全等能力,同时具备智能运维平台、Serverless版本等完善的产品服务体系。

截至2020年,TDSQL已对外服务数千家金融政企机构,同时广泛覆盖游戏、电商、移动互联网、云开发等泛互联网业务场景,助力新零售、教育、SaaS、广告等超过4000家行业客户进行数字化升级。

了解本次分享的更多详情,请搜索关注“腾讯云数据库”官方微信获取。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK