WeBank是中国第一家私有互联网银行。它得到了腾讯等知名公司的支持。它为资金不足的个人以及中小型企业提供方便和高质量的金融服务。到目前为止,我们已经为2.5亿+个人客户,2000万+个人商务客户和150万+企业客户提供了服务。
随着业务的增长,我们的数据量猛增,并且遇到了数据库性能和容量瓶颈。在比较了多种解决方案之后,我们选择了TiDB,这是一种与MySQL兼容的开源NewSQL数据库。由于其水平可伸缩性,在财务系统中,我们的批处理时间减少了约58%。在我们的证据数据存储系统中,我们修复了容量瓶颈并提高了吞吐量。
在本文中,我将与您分享为什么我们选择TiDB而不是其他解决方案,以及在典型的财务场景中我们如何使用TiDB替代MySQL数据库。
为了使我们的应用程序水平可扩展,我们设计了基于数据中心节点(DCN)的分布式可扩展核心体系结构。 DCN包括应用层,访问层和数据库。每个DCN承载指定数量的用户。您可以将DCN视为WeBank的在线虚拟分支机构。该虚拟分支机构仅服务于WeBank客户的一部分。
确定了每个DCN的用户数量,因此我们可以清楚地知道数据库的容量和性能要求。
我们可以在不使用中间件或分片的情况下构建数据库。这极大地简化了我们的数据库架构并降低了应用程序开发成本。
但是我们遇到了一个问题。 DCN在内部使用单实例部署模式。在某些应用场景中,我们无法拆分DCN来扩展数据库。在某些情况下,我们需要汇总数据。在这些情况下,单个实例的性能和容量会很快造成瓶颈。
为解决上述问题,我们进行了深入的调查和评估。在2018年,我们比较了多个NewSQL数据库并最终采用了TiDB。
TiDB是由PingCAP及其开源社区开发的开源,分布式,混合事务/分析处理(HTAP)数据库。
TiDB与MySQL协议兼容。我们可以使用MySQL作为主要数据库,并使用TiDB作为其辅助数据库。我们可以将数据从MySQL无缝无缝地实时复制到TiDB,从而最大程度地减少了应用程序迁移成本。
TiDB是一个开放源代码数据库,具有活跃的开放源代码社区和众多用户。它迅速迭代。这符合我们对开源的拥护。
PingCAP技术中心为我们提供专业的技术支持。他们反应迅速且经验丰富。在评估,测试和部署到生产过程中,他们积极参与并为我们提供了建设性的解决方案和建议。
到目前为止,我们已经在生产环境中的数十个应用程序系统中部署了TiDB。这些系统的数据量范围从数百GB到数十TB。当前,多个重要系统正在概念验证(POC)中或已准备好用于生产环境。
每天,我们的一个融资系统都会从上游系统复制数千万个基本数据,并且在将来,它有望访问更多的产品数据。在采用TiDB之前,我们面临数据货币的压力,并且数据库容量有望成为我们的瓶颈。另外,由于我们的系统依赖于上游系统的表架构,因此它通常跟随上游系统进行数据定义语言(DDL)的更改,而pt-online-schema-change(pt-osc)解决方案具有许多限制。
独立的MySQL数据库容量不支持水平可伸缩性。随着我们业务的增长,数据库容量瓶颈变得越来越严重。
独立的MySQL数据库性能不支持水平可伸缩性。我们无法通过扩展资源来线性地提高批处理效率。
对于基本数据,在全表清理和高并发插入情况下,高并发线程可能会导致主-从延迟,因此独立的MySQL数据库限制了流量。这减少了批处理的总成本。
独立的MySQL数据库的在线DDL功能存在诸如表锁定,主次延迟和I / O突然增加之类的问题。 pt-osc解决方案有很多限制。
借助TiDB的水平可扩展性,我们的批处理时间减少了约58%。将来,我们将在生产环境中使用TiDB的分析引擎TiFlash进行离线报表统计逻辑,以减少处理时间。
在使用TiDB之前,我们遇到了系统容量和吞吐量瓶颈。随着我们将更多的应用程序系统连接到该系统,数据迅速增长。我们找不到可以兼容的MySQL兼容数据库。此外,应用程序数据是无法基于DCN进行拆分的全局数据,因此无法进行水平扩展。
为了解决这些问题,我们决定使用集成的数据迁移工具TiDB Data Migration从MySQL迁移到TiDB。在迁移期间,我们希望:
如果我们在迁移过程中遇到任何困难,我们可以随时切换到MySQL,因为我们处于财务危机中。
迁移过程有点长,但是很顺利且安全。在执行了一系列迁移操作和观察之后,我们所有的性能指标都是稳定的。因此,我们决定断开反向复制到MySQL。这意味着我们的证据数据存储系统完全在TiDB上运行。由于TiDB的水平可扩展性,我们已解决了容量瓶颈并提高了吞吐量。
由于TiDB的水平可伸缩性和MySQL兼容性,我们可以将其用作MySQL数据库的替代方案,以解决我们的数据库容量和性能瓶颈。
自从WeBank成立以来,技术一直是驱动我们业务发展的核心引擎。现在,我们的核心系统可以支持1亿多用户和高度并发的交易。我们平均每天完成3亿多笔交易,单日交易量达到6亿多笔的高峰。我们每个帐户的运营和维护成本不到行业平均水平的十分之一。
将来,根据我们的应用程序要求和TiDB的新功能,我们将在WeBank上探索更多的应用程序场景。
如果您想详细了解我们在TiDB方面的经验,可以在Slack上加入TiDB社区。