POLARDB在金融级数据库架构演进中的应用

深圳法大大网络科技有限公司曾经是POLARDB最大的用户,其数据库架构演进也在阿里云上发生了多次迭代,并最终取得非常好的效果。本文中深圳法大大网络科技有限公司副总裁兼CTO陈立清就为大家分享了法大大在业务演化过程中数据库方面遇到的一些问题,在这些问题发生之后的解决方案,以及最终借助POLARDB的实施效果。

POLARDB在金融级数据库架构演进中的应用

法大大业务背景及问题

传统的合同寄送过程需要较长的时间,此外合同主体身份往往难以证明,并且大量的纸质合同导致企业难以管理,需要持续地投入很多的人力物力。法大大成立于2014年,主要针对于纸质合同出现的问题设计了第三方的电子合同平台,利用实名身份认证、防篡改以及区块链技术来解决合同当中安全以及合规性问题。

接下来从法大大整个业务流程来分享整个数据库使用过程中遇到的问题。国家法规中要求给每个用户主体身份颁发CA证书,而颁发CA证书的第一个条件就是为用户做实名身份认证,认证方式包括姓名和身份证号码比对以及银行卡信息比对以及人脸识别等,因此在这个过程中将会产生大量的用户数据文件。而因为需要为每个用户颁发CA证书,因此会产生大量的数字证书文件。签署电子合同的整个过程也需要记录到数据库中,因此也会形成大量合同签署文件的数据表。此外,当合同签署完毕还存在一个使用周期,当使用完成之后需要进行归档,这也会形成大量的结构化数据文件。

法大大的整个业务都是构建在阿里云上面的,使用了ECS、OSS、RDS等一系列的云产品。法大大最开始用的数据库是MySQL,而用户基本上都是高频使用电子合同的企业,他们对于业务的实时性、并发以及稳定性存在非常高的要求,而在此过程中,数据库就会成为一个使用瓶颈。上层的业务架构采用分布式,中间服务采用了微服务,所以在业务层面基本上可以实现弹性扩展,而底层的数据库部分则受限于MySQL 3TB容量的限制,这使得业务发展一度出现瓶颈。

在法大大发展过程中,在2016年1月份,当时的每天合同份数达到1万份,到2016年11月份达到了每天10万份,2017年5月份每天合同量就达到了100万份,直到今天每天合同份数达到270万份以上。目前,法大大有1000多家合作企业,累计签署合同超过7亿份。而在法大大的业务流程中,有这样几个点会出现大量文件。第一个就是证书表文件,这个文件的表空间有783G,总空间达到815G。第二个是证据表,表空间达到240G,总空间将近500G。而合同签署文件表达到17.8亿行,这是因为一份合同至少有两方以上签署。大文件的出现就带来了数据库的挑战。

在2015年,法大大数据库团队开始做读写分离,在杭州两个可用区做了双活架构,同时在数据库上做了读写分离和实例库拆分,在这阶段解决了每天10万份合同的压力。到了每天需要签署100万份合同的时候,法大大已经在北上杭深出现了核心用户群,所以在北京、杭州以及深圳做了三个数据中心,同时在三个数据中心中实现了双活。此时问题也出现了,这种数据库架构方式解决了分片区用户在使用过程中出现的业务瓶颈,但是从数据库角度而言,3T容量限制始终都会到来。这样的数据库架构也出现了诸多问题,因为有三个数据中心,那么用户在使用法大大官网的时候需要在多个数据源之间来回切换,这使得代码更加复杂。此外,在两个数据中心之间进行切换使得用户体验受到挑战。这种方式不仅无法面对3TB容量上线,其实也无法满足跨区域的要求。所以法大大想到了一个更好的解决方案——使用POLARDB。

法大大如何使用POLARDB解决业务数据困境

在新方案中,法大大在华北、华东和华南三个数据中心的数据先经过ETL清洗,之后进入POLARDB主节点中,同时利用POLARDB中只读数据库的复制特性实现读写分离,在数据库上层中增加了ES搜索引擎。这样就解决了三个数据中心的数据汇总问题。后续的用户查询以及报表应用也都集中在POLARDB上进行实现了,全国用户都集中在杭州数据节点中完成。

具体而言,法大大技术团队做了这样几件事情:使用Kafka消息队列将几个数据中心中的数据进行漫游同步,保持数据中心的核心数据一致性。为了保证数据汇总后主键的一致性,在三个数据中心中做了主键隔离。第三点就是历史上全部数据分成两个部分:生产数据和归档数据。对于归档数据首先增量复制到POLARDB上来,将POLARDB作为底层的全局数据源。此外,在POLARDB上导入了ES做全文的搜索引擎,利用多个只读节点来分片导入,加快索引的速度。在业务层面上,当全部数据汇总完成之后,对于数据相关报表分析都基于POLARDB实现。目前,法大大中还是MySQL和POLARDB并存的,因为在业务层面上还需要不断调整和深入。在数据向POLARDB迁移的过程也是不断深入的。目前,法大大在主要的合同签署功能上还是用MySQL,未来将会向POLARDB迁移。目前对于MySQL主库会实现定期清理,将这部分数据全部汇总到POLARDB数据库里面。

实施效果评价

从实施效果上来看,POLARDB能够100%兼容MySQL,对于法大大而言,可以通过DTS非常平滑地将数据从MySQL迁移到POLARDB,减小了工作量。此外,POLARDB自带读写分离机制,并且提供了7*24小时的高可用,同时也节省了很多的成本。计算和存储分离的架构设计解除了数据库3T存储容量的限制,用户可以根据自身需要实现数据库扩容的增长。并且POLARDB具有较强的并发高性能查询能力,因为采用了读写分离的架构,支持多路应用服务器并发访问,提供了企业级的高性能、高可用的能力,提高了查询的性能。

上一篇:Photoshop与Zbrush的上色渲染技巧


下一篇:阿里云自研新一代企业云数据库POLARDB背后的技术