我们如何使用分布式数据库来无需停机即可实现水平缩放

2020-10-08 北京银行 金融服务

行业:银行业

作者:陈东陈(北京银行软件开发工程师)

杂种:佳林陈;编辑:汤姆德湾

一个水平缩放数据库作为MySQL替代品

北京银行(鲍勃)是中国北京的城市商业银行。截至2020年6月30日,我们的资产总额达到2.88万亿元,我们持有597亿元的品牌价值。在世界前1000家银行名单上,我们在第1层资本方面排名第62号,并在一排七年的世界前100名。

由于我们的新兴企业迅速增长和数据尺寸增加,我们寻求一个水平可扩展数据库能力处理高度并发请求。我们更喜欢A.开源数据库因为我们想要一个大型社区的专业知识和支持。我们发现后,我们发现了Tidb.,开源,分布式,混合事务/分析处理(HTAP)数据库是一个很好的解决方案。

在这篇文章中,我会与你分享为什么我们选择TIDB以及我们如何使用它实现水平可扩展,始终符合基础设施

为什么我们选择TIDB,分布式SQL数据库

在快速发展的工业技术革命时期,我们面临这些挑战:

  • 为了解决我们快速发展的业务和高度并发请求,我们的系统需要更高的性能
  • 要处理迅速不断变化的金融市场,我们需要快速提供信息产品。
  • 很难控制老式建筑的成本。
  • 我们需要避免使用单一公司使用软件涉及的风险

因此,我们寻找一个具有以下特征的数据库解决方案:

  • 优异的水平可扩展性
  • 处理高度并发请求的能力
  • 能够快速迭代
  • 成本效益
  • 开源

Tidb.是一个开源,分布式SQL数据库pingcap.及其开源社区。它是MySQL兼容的,具有水平可扩展性,强大的一致性和高可用性。这是在线交易处理(OLTP)和在线分析处理(OLAP)工作负载的一站式解决方案。

我们发现TIDB满足了我们的数据库要求,因此我们采用了它。

我们如何使用TIDB

2018年,我们部署了TIDB到生产。根据银行的安全法规,我们在两个城市建立了三个数据中心(DCS)。

群集部署以获得高可用性

群集部署以获得高可用性

我们使用主辅助,多主动架构:

  • 主要集群在北京和西安的生产环境中工作,并承担日常生产服务。
  • 辅助群集是在西安建造的远程灾难恢复DC。
  • 我们使用Kafka复制主群和辅助集群之间的Binlog。

在过去的两年里,我们与PingCAP合作了几个重要问题:

  • DCS之间的网络延迟:在两个城市的三个DC的部署中,不同城市的两个DC之间的网络延迟可以极大地影响集群性能。我们压缩了GRPC消息格式并使用多筏确保领导者副本始终在北京DCS中。
  • 增量备份:某些系统需要增量备份。除了PINGCAP,我们研究了指定时间的增量备份和数据恢复方法。我们在Protobuf形式中派本地保存了Binlog,然后使用reparo.将数据恢复到指定的时间。
  • 交易:在金融业,数据库交易问题(如大型交易),读取承诺(RC)隔离和悲观锁定是重要的问题。TIDB 4.0.支持所有这些功能。

接下来,我将在Bob中介绍TIDB的应用程序方案。

电子支付清算平台和银联无源无源快速支付系统

根据中国中央银行的要求,第三方提供商处理的所有付款交易必须连接到电子支付清算平台。Bob已集成其应用程序和系统,以满足互联网金融所带来的大数据量和高度并发请求的挑战。

在电子支付清算平台和银联无源支付系统部署TIDB后,两种系统于2018年11月11日和2019年11月11日成功地处理了挑战,年度中国购物节的日子。在2019年的节日日,峰值流量每秒达到7,500个查询(QPS),超过10倍通常的QP。我们的IT团队执行了多种在线运营和维护任务,包括版本升级和修补,并使用TIDB的多个副本在运营和维护中实现零停机时间

当我们升级BOB系统时,我们将电子产品支付清算平台的业务链中的应用程序升级到TIDB分布式架构。

在线贷款应用平台

在线贷款平台主要从事用于贷款和ious的应用批量处理。

由于TIDB的水平可扩展性,我们很快建立了一个在线贷款系统数据库。首先,项目团队计划通过购买物理服务器来为在线贷款平台构建一个数据库群集。但是,采购需要很长时间,因此我们终于决定在电子支付清算平台和银联无源快速支付系统的数据库中规模。缩放后,我们使用五个额外的Tikv.节点和两个额外的Tidb.用于在线贷款平台的节点。以及在线贷款系统和电子支付清算平台使用放置司机(PD)节点。

在批量中处理3000万行数据需要一个小时。后来,如果我们升级版本并优化系统,我们可能会显着提高性能。

其他应用方案

一旦我们将TIDB集成到上述两个交易系统中,我们将其应用于所有金融方案,包括在Bob的付款,会计和金融渠道。

金融情景中的水平可扩展数据库

TIDB在BOB的财务场景

在构建TIDB分布式架构时汲取的经验教训

在这里,我想与您分享一些我们在建立TIDB分布式架构时学到的一些教训。

应用转型

我们的银行的生存取决于满意的客户。例如,一些客户喜欢在半夜捕捉产品,因此我们需要一个灵活的系统,可以处理大量的数据流量。TIDB是明确的选择。

动态维护

银行对申请连续性有很高的要求。现在,通过充分利用TIDB的分布式数据库架构并动态调整我们的集群节点,我们真的实现零停机时间

业内生态学

在Bob中,越来越多的项目正在采用TIDB的分布式微服务架构。我们正在考虑如何在此分布式架构和技术堆栈下规划和设计我们的应用程序。

以下金融方案中的分布式数据库的下一步

将来,Bob分布式数据库团队将主要用于两项任务:

  • 在更多场景中应用TIDB
    • 我们将继续探索在银行账户和客户信息等核心应用方案中使用TIDB。
    • 要在金融领域中不断实施分布式数据库,我们将结合分区表,悲观锁定,甚至与银行系统的HTAP的功能。
    • 我们还面临在同一个城市部署两个DCS的挑战。
  • 通过合作取得进展
    • 随着行业中的越来越多的项目开始使用TIDB转移到微服务,我们的系统开发人员需要考虑如何在分布式架构下设计和开发代码。
    • 采用TIDB的分布式数据库为管理和运营架构带来了一些挑战。根据过去的经验,我们需要形成成熟的银行系统施工方法。
    • 作为构建我们分布式数据库的一部分,BOB帮助制定金融业的标准。将来,我们将继续为行业做出贡献。

此外,我们将研究试点HTAP应用程序。TIDB 4.0介绍TIFLASH.,用于TIDB的扩展分析发动机和柱状商店。包含Tiflash的TIDB数据库让用户执行实时HTAP分析。我们认为HTAP是数据库的未来。

如果您想了解更多关于我们使用TIDB的经验,或者您有任何疑问,您可以加入Tidb社区松弛

准备开始用TIDB开始吗?