2.2.1 某银行的分布式数据库实践
对于金融信息化建设,国内的一些银行曾经主要依托原有集中型IT架构来进行维护和扩展。随着系统规模及复杂程度呈指数级增长,各类瓶颈逐渐暴露,日益增长的数字金融需求同旧式的系统架构缺陷之间的矛盾开始凸显。随着中国人民银行、中国银行保险监督管理委员会等金融监管部门提出相关政策要求,金融企业掀起了分布式转型的浪潮。
本节示例中的这家银行是一家全国性商业银行。在业务和技术创新上,该银行一直走在业界前列,尤其在人工智能、大数据领域,做出了很多积极尝试,成效卓然。
1.银行的分布式转型需求
来自应用和业务层的压力,给商业银行的IT和数据架构带来新的需求和挑战,比如向分布式技术架构的转型,其转型需求主要体现在如下几个方面。
● 提升海量数据系统管理的弹性:当商业银行系统内的数据量急剧增多时,系统需要弹性扩容,以应对PB级别以上的数据管理;而这种弹性的容量调整可以让所有数据保持在线。
● 提升数据管理系统的性能:针对客户的实时需求,商业银行的数据系统需要满足高并发业务的操作需求——海量数据的超高性能读/写及实时访问查询。
● 升级数据安全保障:数据安全不仅仅指的是简单地备份,除了实现数据的持续高可用,还应支持异地容灾甚至支持数据中心的“双活”,即主备两个数据中心都同时承担用户的业务,主备两个数据中心互为备份,进而保障数据安全。
● 满足多类型数据处理需求及提升系统效率:在跨业务的融合中,对于从结构化到半结构化再到非结构化的多模数据,亟须进行统一管理,以大幅提升系统效率。
● 简化开发、运维工作,以节约成本:随着应用的增多,分布式架构既便于对数据分区进行管理、对业务进行有效隔离,也可以通过保持系统的弹性、兼容性来大大简化开发和运维工作。
● 对核心业务系统的支撑能力:对于数据库产品,除了技术先进及能确保数据安全,还要在核心业务上具备代码级的控制,这样在针对用户需求不断迭代时才能保持产品的稳定性,并提供高效、强力的技术支持。
2.某银行新一代数据库的应用
基于应用和业务的转型需求,新一代分布式数据库在某银行有如下一些应用场景。
● 数据库的分库分表:针对数据弹性扩容和高性能、高可用性等要求,已实现Oracle、IBM DB2及MySQL数据库的分库分表改造,分库数超过15个,分表数超过500个。
● 传统数据库的跨中心分布和双活:针对IBM DB2等传统关系型数据库产品,经过跨中心分布和双活的改造,其总体安全性、RTO、RPO大为改善,风险降低的同时效率得以提升,操作过程更加简单、透明;而且由于软硬件资源利用率的大幅提高,因此节约了建设成本。
● 引入新型分布式数据库产品:除了对传统数据库进行分布式改造,该银行也积极尝试SequoiaDB这样的新型分布式数据库产品,并在海量数据查询、分布式影像平台和归档数据管理等在线业务系统中进行大规模部署。
3.分布式数据库创新实践
虽然分布式架构改造在该银行已取得成效,但其业务负载在不断增大,同时直销银行、互联网金融和人工智能等创新业务需要拓展,分布式数据库应用也需要向更核心的业务系统推进。当前的技术方案仍存在如下亟待解决的核心诉求。
● 降低偏高的使用和开发、运维成本:分库分表方案在扩展性和性能、并发上仍有瓶颈,同时开发成本高昂;而且由于需要预先根据业务对数据库进行切分,因此丧失了较多的弹性,在运维上也需要投入不少人力。此外,MySQL目前在互联网行业中应用得较广,许多应用基于其开发,但是目前的分布式数据库尚未实现与MySQL的完全兼容,因此其投产后实际的使用和运维成本较高。
● 进入核心业务场景:使用开源的数据库、中间件方案,由于没有商业化厂商的支持和行业积累,稳定性没有保障,因此,在进入核心业务系统时存在一定风险。
● 达到国产化要求:在分布式数据库领域,不能过分依赖国外的开源产品,需要着重考察自主可控的国产分布式数据库产品。
针对上述诉求,该银行在分布式NewSQL的创新实践中,经过测试和对比,最终选择了巨杉数据库公司的SequoiaDB。SequoiaDB 3.0版已实现了完整协议级别的MySQL兼容,可以在数据库层面做到分布式,并且对已有业务完全兼容。同时,SequoiaDB在金融业已经过大规模使用的考验,在产品的成熟度上更加可靠。
分布式NewSQL数据库平台使用SequoiaDB 3.0能体现以下几个业务优势。
● 分布式NewSQL数据库平台的可扩展性:存储层的分布式数据引擎,可以实现数据量的弹性扩容,以灵活应对业务需求的调整。
● 微服务架构:整个平台参考了微服务架构,接入层的SQL实例和存储层的存储节点都可以进行自由的配置,而且应用可以按需选择SQL实例和存储节点。
● 完全兼容MySQL:接入层实现了协议级的完全兼容,应用可无缝对接,这大大降低了分布式NewSQL数据库平台的使用和运维成本。
4.业务场景的测试结果
为了体现NewSQL平台的优势,下面选取SequoiaDB在该银行几个重要交易场景下的测试数据进行说明。
● 某渠道复杂的查询场景:此场景以查询为主,查询语句较复杂,涉及4张表的关联。在其中两张大的流水表的关联操作中,每张表的记录数多达数亿条,最终的匹配结果多达数百条记录。通过测试,SequoiaDB在该场景下每分钟可处理1886184.03笔业务,而且整个过程在如此高的吞吐量下仍然能够持续保持平稳。
● 柜台业务办理场景:此业务以查询和更新为主,执行频率高,对响应时间要求高。查询业务涉及3张表,其中两张资料表分别有1000万条、3000万条数据,维度表的数据有1万条;更新操作则涉及资料表的1000万条记录和维度表的1万条记录。在混合查询和更新的执行过程中,可能出现不同事务对同一条记录的读/写冲突,吞吐量会出现小幅度波动,但平均每分钟仍然可处理51090.03笔业务。
● 计费业务场景:此业务场景以插入、更新和查询为主,执行频率高,对响应时间要求高。其中查询涉及两张资料表,记录数为1000万条,还涉及两张维度表,记录数为3000万条;插入操作涉及两张流水表,记录数分别为3000万条与900万条;更新涉及一张维度表与一张流水表,这两张表的记录数分别为大于1万条、大于1亿条。该业务场景较为复杂,每笔业务至少涉及对50余个数据库的插入、更新及查询操作。尽管如此,SequoiaDB平均每分钟仍然可处理9861.57笔业务,相比之前,波动较小。
最终的测试结论是,SequoiaDB的MySQL兼容性较为优秀,扩展能力较好,其总体性能满足重要交易系统的要求。该银行今后会把现有分库分表方案难以处理的业务更多地向NewSQL平台迁移,并持续评估未来大规模使用分布式数据库的可能性。建设分布式数据库,能充分发挥NewSQL数据库的优势,有助于业务、技术创新,以及积累成功经验。