yting
作者yting2022-01-17 16:29
数据库管理员, 国信证券

国产分布式数据库在证券行业的应用及实践

字数 8017阅读 5309评论 2赞 5

文章摘要:

近年来,证券市场行情火爆,对支撑业务的IT系统及数据库提出了更高要求。本文分析了证券行业当前数据库应用的困境及我司典型的应用场景,对国产分布式数据库在证券行业中的应用价值进行了探索,包括其高可用、横向扩展、支持高并发等特性,并选取两个实践案例验证了国产分布式数据库在证券行业的应用价值。

一、证券行业当前数据库应用的困境

近年来,证券行业线下服务转型线上化进程加速,包括营销获客的方式、AI单向智能开户、非现场业务的办理、在线直播、小程序、小视频等互联网方式的使用等,同时近年证券市场行情火爆,证券用户数量和并发量大幅提升,从而对支撑业务的IT系统及数据库提出了更高要求;伴随在证券公司进入全面创新发展阶段,证券业务品种也日渐增加、业务流程复杂度不断提高,现有非国产集中式数据库架构在满足新业务、新监管规定以及今后一段时期内部控制管理的高效率监控及管理的需求方面已逐渐困难。

同时,证券行业为数据密集型行业,发展至今已经累积了海量的高价值数据,目前每天产生海量数据,使得数据库面临巨大挑战。当前行业主要使用国外的传统集中式数据库,而集中式数据库在海量用户和大数据量下的弊端逐渐体现:

(一)体系架构存在不足

集中式数据库的架构由于历史原因,采用集中式思路,物理数据库由一个DBMS集中管理。集中式数据库体系架构缺少计算存储分离、弹性伸缩能力,也没有架构上考虑跨数据中心实现高可用及容灾,整体架构缺乏灵活及先进性。

(二)容量瓶颈

随着用户访问量和数据量的增长,集中式数据库性能遇到巨大挑战,依赖硬件升级并不能完全解决问题。同时传统数据库容量扩展往往意味着服务中断,很难做到业务透明或者无感知。

(三)缺乏弹性伸缩能力

随着交易量不断增长,系统整体吞吐量不可避免遇到硬件或技术的瓶颈。尤其在支持面向互联网客户相关业务时,不能有效弹性扩容处理高并发交易,制约了获取新客户以及大规模营销及交易的能力。

(四)成本高昂

当业务数据和访问量达到一定量级,传统数据库的硬件选型就需要特定的高端服务器,再加上版权及服务费用、垂直扩容成本,开销巨大。

(五)自主可控及国产化

原有集中式数据库技术高度依赖于国外厂商,IT团队缺乏自主可控能力,在一定程度上存在信息安全的风险,也无法满足行业国产化的要求。

随着数据库领域技术近年来的飞速发展,云原生数据库、NewSQL、分布式数据库等具备业界代表性的数据库产品进入人们的视野。基于对数据库领域技术发展趋势以及新技术产品的了解,结合证券行业现状以及我司IT系统的实际情况,我们初步认为国产分布式数据库有能力解决我们的当前困境,可以满足证券行业的业务场景需求,且在我司具备落地的条件。接下来我们将对国产分布式数据库在证券行业中的应用价值进行探索和验证。

二、国产分布式数据库解决方案

在引入国产分布式数据库之前,我们需要明确分布式数据库能为我们解决哪些问题,能够覆盖我司的哪些场景。

(一)我司应用场景分析

我司的数据库应用场景基本涵盖了绝大部分典型的证券业务,简单分类如下:

1、OLTP在线交易型业务。证券业务交易是典型的高并发事务密集型业务,具备低时延、高可靠、数据零丢失等硬性要求。例如:后台集中交易、内存交易、量化交易等;
2、OLAP在线分析型业务。即分析报表型业务,此类应用为计算密集型且拥有大量的数据,来源于在线归档、数据同步等。并且通常具备行业统一的监管要求,例如需要在线存放5年历史数据、报表上报时效要求等。例如:交易历史库、风控、反洗钱等;
3、互联网高并发型业务。证券外围、渠道相关业务属于典型的互联网型应用,入口通常在网络、APP等,此类业务通常具有并发访问、海量数据的特点,要求数据库具备资源横向扩容的能力。例如:手机业务、网站业务等;
4、交易型和分析型混合业务。多数证券交易系统都兼备了开市期间交易、非开市时段清算的业务类型。此类应用要求数据库既能支持交易型也能支持分析性的业务,此类系统包括但不限于上述TP/AP型系统,例如:O32资管、托管业务、PB、融资融券等。

基于以上证券业务场景,可以总结出我们期望分布式数据库具备这些能力:服务可用性、数据一致性要求极高的场景;高并发业务访问场景;计算分析型及大容量数据场景;资源横向扩展、架构弹性伸缩能力;甚至兼备上述场景需求的能力。

(二)分布式数据库的基本能力和适用场景

现在让我们来看看分布式数据库具备了哪些基本能力,解决了哪些问题,可适用于哪些场景:

1、受限于传统架构,集中式数据库使用复制和切换作为主要手段的高可用模式已逐渐无法满足金融交易业务场景日益增高的可用性要求。而分布式数据库具备了更完善的高可用能力,以一个集中统一的视角管理所有数据库组件,任何组件异常都可实现自动切换,保证整体的可用性。此外,数据通常由多副本保存,主副本与其他副本之间通过raft或paxos等协议实现数据的强一致性同步,可保证数据不丢失。

2、针对容量瓶颈,包括计算能力不足和数据大容量问题,大多数分布式数据库都使用了存储计算分离和数据分片的技术,使得其架构支持计算能力和存储的横向扩展。一方面,集群的计算任务主要由计算节点承担,计算节点可以做到无状态从而实现线性扩展;另一方面,数据按照特定规则切分成分片,每个分片保存特定部分数据。由此,我们可以通过增加计算节点来扩充计算能力,通过增加分片来实现数据库量的扩容,且理论上是无限扩容的,而在这个基础上可继续实现弹性扩缩容。

3、高并发问题是传统集中式数据库难以解决的问题,因为单台服务器的并发和计算能力总是有上限的。而对于分布式数据库,一方面,应用的并发会话可以由多个计算节点承担,分散了并发访问的压力;另一方面,分布式架构将数据打散到了各个分片之中,相当于分散了并发请求带来的读写压力。因此在理想的情况下,分布式架构下的并发能力也是支持线性扩展的。

4、成本问题也是传统集中式数据库所面临的痛点。就如前所述,传统架构缺少横向扩展能力,因此面临增长的业务、扩大的数据容量,数据库只能选择垂直扩展来获得服务器资源上的补充。但昂贵的大型机、小型机CPU资源向上堆砌、内存和存储扩容所带来的成本不菲,并且很容易达到最终瓶颈。分布式数据库则将垂直扩容转变成为了横向扩容,构成计算存储节点的每一台服务器都并不强依赖高性能服务器。在这个情况下,增加节点可以轻松解决资源扩容问题,而成本相对于垂直扩容则要低很多。

5、国产化的大环境问题也是证券行业目前重度依赖的非国产商业数据库所无法绕开的问题。国产分布式数据库目前基于开源数据库自研扩展为分布式架构,甚至做到真正意义上的全自研。因此国产分布式数据库是国产化的一个切实可行的发展思路。

根据上述问题与场景我们可以看出,国产分布式数据库有能力解决行业数据库目前所面临的困境,能够满足大部分的证券业务需求,在不同业务场景下将有不同程度的应用价值。

(三)国产分布式数据库的基本概况

如我们所知,当今分布式数据库主要有两大类:第一类是从单体数据库和自研中间件演进而来的分布式数据库,我们习惯称之为数据库中间件型分布式数据库,目前在国内比较成熟的有TDSQL-MySQL、TDSQL-PG、GoldenDB、HotDB、GuassDB-300等;第二类叫做NewSQL,也叫原生分布式数据库,国内相对成熟的有TiDB、OceanBase。此类数据库架构的每个组件都是基于分布式进行设计的,天生自带分布式基因。NewSQL从分布式NoSQL存储出发,演化出关系型数据库能力,从而进化成为分布式数据库;而中间件型分布式数据库则从关系型数据库出发,融合分布式特性增强架构能力,最终成为分布式数据库,二者殊途同归。由于关系型数据库的实现难度是远大于分布式存储的,因此中间件型分布式数据库相当于走了捷径,大幅降低了产品工程开发的工作量,同时降低了引入风险的可能性,基于现有生产数据库也使其能够更快地走向成熟、稳健。而NewSQL的发展道路相对艰难,但它也带来了数据库架构革命性的改变。

基于以上情况,同时针对我司IT系统实际情况进行考量,我们决定在NewSQL和中间件型分布式数据库中慎重地各选其一进行探索和引入,分别是TiDB、TDSQL-PG。其中TDSQL-PG为腾讯云TDSQL-PG产品系列中兼容ORACLE的版本,该版本具备HTAP能力,并兼容传统数据库协议。针对这两款分布式数据库产品,我们进行了一些实践。接下来我们选取其中两个实践案例来验证国产分布式数据库的应用价值。

三、国产分布式数据库TDSQL-PG应用价值探索案例

我司反洗钱系统目前拥有7T业务数据(大表记录数十亿级),应用同时具备了OLAP和OLTP两种业务行为,并且使用了存储过程、窗口函数等复杂数据库功能,在众多业务系统中具有代表性。我们尝试使用TDSQL-PG对其进行适配落地,来验证分布式数据库的应用价值。我们组建了项目组并进行了大量的适配和测试工作:挑选了典型的业务场景;部署了全量数据的测试环境;进行了异构数据迁移;针对目标数据库产品特性进行了应用的SQL改造;基于分布式的表结构改造;以及各类数据库软件的适配性问题。接下来展示我们的探索过程。

(一)选择TDSQL-PG进行适配

如前所述,反洗钱业务兼备了OLTP和OLAP的特征,对此TDSQL-PG的HTAP能力具备独特优势:

1、满足OLTP业务场景的高并发需求,同时也能解决计算能力的不足的问题;
2、满足OLAP业务场景的计算密集型需求,同时也能解决大数据量下的时延以及吞吐量问题;
3、可获得代价、性能、维护成本之间的权衡,同时考虑从原系统迁移大批量数据到TDSQL-PG 所耗费的代价较小。

从上述对比中可以看出,TDSQL-PG相对于TiDB具备更优的特性来对反洗钱系统进行适配。应用在适配改造过程中,涉及了表结构分片化、后台作业、框架升级以及页面功能的改造。

(二)适配收益

1、高可用架构能力的提升
当前反洗钱系统运行在集中式数据库上,使用传统复制技术部署了一台实时同步的备机。当主库故障的时候,需手工切换至备库,同时应用修改ip地址指向以恢复服务。即一主1备架构,切换为手工操作,高可用切换时效约为分钟级。

在反洗钱TDSQL-PG测试环境中,我们部署了3个DN的分布式集群。每个DN即为一个高可用单元,由1主1备共两个副本组成,分别部署在2台基于英特尔®至强®可扩展处理器的X86服务器上。从副本数量上来说,其高可用能力相比当前集中式架构得到了增强。且得益于TDSQL-PG的分布式架构,反洗钱数据库有了分散集中故障风险的能力。每个DN的主备之间均为自动故障切换,时效为秒级,因此从切换时效上来看,反洗钱数据库的高可用能力也得到了增强。

2、可扩展性方面的改善

反洗钱系统当前的集中式架构仅适用垂直扩容。对于物理机服务器计算能力来说是几乎无法实施扩容的,如CPU、内存。而对于存储容量来说,垂直扩容的量是有上限的,取决于硬件支持能力。我们无法无限制地挂载存储盘到一台服务器上,否则会引发服务器运行稳定方面的问题,并给运维工作带来困难。

反洗钱主库为接入了16T容量FC-SAN存储的物理机服务器,备库为VSAN存储物理机服务器。当前主库服务器挂载的存储容量已到达Linux LVM单卷上限,挂载存储盘数量已达18个,继续垂直扩容的价格、维护成本极高。当前存储使用率高达90%,而行业监管要求存放5年历史数据,预测其数据量还有40%左右的上涨,因此当前反洗钱数据库架构已面临严峻的容量考验。

反洗钱TDSQL-PG架构具备分布式优势,适用横向扩展。数据以分片的方式存放在了各个DN中。当集群中DN服务器资源平均使用率较高的时候,比如存储容量,我们可以给集群添加一组DN,其中包含2台服务器。也就是说,随着反洗钱业务数据量不断的上涨,总是可以通过给集群添加DN来进行容量扩充。而且操作在线进行,可通过集群自身的平台能力进行自动化管理。

不仅存储容量,承载了集群主要计算能力的CN节点也支持横向扩展。当集群计算能力不足时,则添加适当数量的CN节点,即达到扩充计算能力的目的。

3、性能对比
我们给出典型业务场景下的性能对比结果:

TDSQL-PG双分片架构在三个场景下优于或不差于现有系统,而TiDB有两个场景优于现有系统,总耗时优于现有系统。整体上来看反洗钱TDSQL-PG架构表现良好,能够满足反洗钱业务场景的需求。

4、自主可控及国产化
在测试过程中,我们对基于英特尔®至强®可扩展处理器的X86平台下的TDSQL-PG版反洗钱系统进行了验证,运行稳定,达到预期。使用TDSQL-PG的情况下,反洗钱系统即可脱离集中式数据库的限制,实现完全自主可控,因此满足行业国产化的要求。

(三)案例总结

经过本次探索和实践,我司发现基于TDSQL-PG的反洗钱系统在海量数据下的性能、扩展能力、高可用、灾备、运维、成本节约等方面都有显著提升,TDSQL-PG作为分布式数据库能够为证券业务场景产生应用价值。

四、国产分布式数据库TiDB应用价值探索案例

目前我司电商业务系统承载着千万级别的用户量,其中账单系统承担着高并发、海量数据的业务,属于典型互联网系统。主要面临两方面的压力:一方面是大数据量,业务存量数据超过百亿,且每天都需要在交易系统清算完成后实时计算并将千万级别的增量数据进行同步;而另一方面是高并发请求,应对千万客户实时请求的同时,保证快速查出客户数据以及接口性能。目前账单的日均请求量已达到百万级别。

(一)适配前的情况

未使用分布式数据库前,账单系统采用基于ShardingJDBC的分库分表方案。

对于账单业务日表,规划5年的容量,需要16个单体数据库才能支持,每个库包含32张表,总计五百多张表。分库分表方案可以支持大量数据的存储及访问,但存在如下问题:已有分表扩展字段困难,需要到每个分表新增字段;一开始就要评估好数据量确定好分库分表规则,但是业务及用户的增长较难预估,或者后续修改分库分表规则,数据扩容迁移极其麻烦;数据同步需要有中间表,制约系统上线时间;需要业务定制很多定期器来管理所有分表的定时创建及清理;需要运维多个数据库。

(二)选择TiDB进行适配

TiDB 作为一款开源分布式 NewSQL 数据库,可以很好的部署和运行在 Intel 架构等物理机服务器及主流虚拟化环境,并支持绝大多数的主流硬件网络。作为一款高性能数据库系统,TiDB 支持主流的 Linux 操作系统环境。

在使用分布式数据库的时候,有个特点,数据库往往有性能瓶颈。当性能达到这个瓶颈的时候,即使给数据库分配再多CPU,数据库的性能也依然无法提升。这是因为数据库相对于其他应用来说,它为了支持 ACID ,它在内部实现上会有非常多的锁。因为这些锁的存在造成了数据访问的竞争,最终导致数据库很难在超过一定核数下仍然保持性能的提升。要改变此问题,需要数据库的层面对锁进行优化,减小锁的粒度,从而降低数据的访问竞争,但这种访问竞争总是永远存在的。所以它对于 CPU 这一层架构的实现也是一个挑战,第三代英特尔 ® 至强 ® 可扩展处理器的CPU 各层缓存都有明显的增加。更大的缓存可以有效地降低数据访问的延时,从而更快地访问数据。同时, 在 CPU 架构里面,英特尔的 Mesh 架构也可以明显的降低数据冲突时候的访问延时;事务扩展技术(Intel TSX)技术可以更精细地管理线程锁定、提高多线程效率及性能,实现锁开销优化。

存储的数据吞吐能力与时延成为决定数据库性能表现的关键因素,3D NAND英特尔®固态盘,可以处理读取密集型工作负载等任务,为 TiDB 数据库更高的性能表现奠定基础。

因此账单系统也使用了基于英特尔®至强®可扩展处理器的X86架构的虚拟服务器来部署TiDB集群。
TiDB可以兼容大部分MySQL语法,原有应用的SQL仅需做少量改动便可迁移到TiDB上面;同时使用VIP+HAProxy的方案,TiDB对于应用来说就如一个传统集中式数据库。TiDB会对表自动做分布式存储,应用直接操作单表即可。

(三)适配收益及案例总结

从架构上看,将原来的分库分表方案替换为TiDB分布式数据库方案,简化了开发和运维负担。从应用上来看,适配TiDB之后特定的业务性能提升效果显著。每日的同步时间大幅缩短,千万级别的数据同步时间从原来的90分钟缩减为现在的20分钟,同步效率提升了80%;简化了同步逻辑,同时简化了表定时管理任务。

我司新账单系统已持续稳定运行一年。目前上线了多个子业务,总数据量已超过百亿。在生产运维过程中,我们逐步完善了数据库运维配套管理,包括多数据中心容灾部署,以及监控、备份、容灾、规范、技能培训等。通过本案例的实践,我们发现TiDB作为分布式数据库能够为证券业务场景产生应用价值。

五、分布式数据库在证券行业的应用价值

首先,国外商业数据库已有几十年的发展历程,占据了全球高份额市场,产品能力成熟。而相比之下,国产集中式数据库在综合产品能力上还处于起步和发展阶段,需要借助架构来弥补劣势;另外,随着数据量日益增长,单体服务器性能瓶颈问题也越来越凸显。以上需求导致了我们需要通过分布式架构来解决容量扩展问题,并提升可靠性和冗余度。

以上种种,说明了分布式数据库的一个核心特点和价值:架构横向扩展能力。分布式数据库有能力执行单台服务器无法完成的计算、存储任务,借助分布式架构可以提高系统的整体可靠性和吞吐能力。但同时我们也注意到,分布式数据库有擅长的业务场景,也有能力无法覆盖的场景。面对不同的应用与环境,分布式数据库既拥有特定的优势也存在某些劣势。正如不存在完美的架构,单一的数据库架构无法覆盖我司所有的业务场景。

从国产分布式数据库的行业应用情况和发展潜力进一步分析,同时结合我司的实践案例和业界同行的使用经验,我们认为:

1、国产分布式数据库经历多年的打磨,目前已具备成熟、可持续发展的生态。此外在银行、保险、证券等金融行业有许多成功案例,其中包括银行核心系统案例,其稳定性、可靠性已得到验证,可以满足金融级数据库的要求。

2、使用了分库分表解决方案的电商应用账单系统成功适配TiDB,而具有HTAP代表性的反洗钱系统也成功完成基于TDSQL-PG的迁移测试,证明以TiDB、TDSQL-PG为代表的国产分布式数据库有能力替代证券系统特定业务类型现有的集中式数据库。在适配和管理运维过程中,我们也总结了遇到的问题,以及解决问题的方案,为将来进行更多系统适配改造积累了实践经验。

3、分布式架构为我们带来计算、存储横向扩展能力的同时,也不能忽视分布式事务带来的时延问题,因此在一些低延时场景还需要连同业务角度、硬件角度等一起去研究其可行性。产品成熟度也是我们对国产分布式数据库进行选择的重要考量之一,运维工具便利性、附属功能缺失、软件BUG是目前各类国产分布式数据库所面临的普遍问题。此外,分布式数据库的硬件架构稳定性也需要非常重视,尤其承载业务连续性要求高的工作负载,稳定是基础。

4、最后,我们还要充分理解分布式数据库给我们带来的管理方面的挑战。分布式数据库架构相对于集中式数据库更庞大、运维复杂度更高。同时,我们还需要关注资源使用率的问题,避免分布式架构导致的服务器资源浪费问题。

整体上说,我们认为国产分布式数据库在未来的一段时间里,有能力替换我司部分场景下的业务系统,通过测试和改造可以完成适配任务。随着国产分布式数据库产品不断的更新优化和技术发展,可以为我们带来越来越多的可适配场景。国产分布式数据库在我司将有越来越多的用武之地,可在证券行业产生越来越多的应用价值。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论2 条评论

匿名用户
2022-01-27 16:42
大作已经拜读,作者以公司案例讲清楚了国产数据库的分布式改造,受益匪浅。对于反洗钱系统有两个地方没有看懂,一是能否举个例子说明一下OLTP有什么业务场景;二是分布式存储是使用的块存储吗?有没有做RAID?吞吐率和响应速度与业务处理的匹配度怎样?
chenliichenlii系统架构师, 保险企业
2022-01-25 09:54
感谢老师的专业分享,国产分布式数据库的确如同作者所说越来越多的勇武之地,只要企业有合适的应用场景就可以大胆尝试。
Ctrl+Enter 发表

本文隶属于专栏

最佳实践
不同的领域,都有先行者,实践者,用他们的最佳实践来加速更多企业的建设项目落地。

分布式关系型数据库选型优先顺序调查

发表您的选型观点,参与即得50金币。