袋鼠云以云原生一站式数据中台PaaS“数栈DTinsight”产品为核心,打造金融平台的互联网转型之路。
适应大数据时代,海量数据存储、计算、查询和大规模应用系统稳定、高效运行的需求,在数据库领域,从传统的DB2、Oracle已经逐渐转变为现在流行的,分布式大规模的,开源数据库集群架构。
某传统金融平台在23年的业务快速发展过程中,众多IT系统垂直建设,不同系统之间存在复杂多样的关联性关系,核心业务系统既需要保证极高的可用性,又要为业务创新和发展做好技术架构准备,面临着IT时代被IOE架构困扰已久的“稳定-创新”经典困局。
为充分利用高并发、高灵活、高可用的互联网平台优势,提升在线服务性能,该货币服务平台选择使用了阿里云EDAS中间件、DRDS分布式数据库、MySQL服务。
袋鼠云的数据库团队核心成员来自淘宝,曾参与主导过阿里巴巴“去IOE”的架构演进,对大规模分布式数据库架构设计与实践有着丰富的经验,曾服务过特步、中航金网、国泰产险、东风裕隆、浙江智慧网络医院、绿城信息等行业客户,是阿里云生态中数据库技术领域的技术领先者。
在向互联网级分布式架构转型中,涉及到的数据库架构设计和改造实施内容,该货币服务平台通过阿里云找到了——阿里云生态合作伙伴袋鼠云实施完成。
该传统金融平台原先采用DB2,经过10多年的业务发展和数据沉淀,数据库结构和表结构较为复杂,需要大量梳理。数据来源于上游系统,来源方式多样,由中间库、源库、目标库组成的数据摆渡链路较为冗长。
据了解,该传统金融平台每次功能变更都需要重新发布整个系统,系统耦合度高。
结合平台庞大的业务体系,袋鼠云和客户决定对其数据库进行先垂直后水平的拆分改造,后端数据库技术架构如下:
难点一:如何进行数据库拆分设计以适应满足复杂业务需求?
由于该传统金融平台的业务体系过于庞杂,第一要务是对整个应用系统进行业务模块的梳理和拆解。在调研初期,袋鼠云为该平台客户梳理出三大垂直的业务系统,目的是进行应用的功能剥离及数据解耦,并以业务模块为基准,对其数据库进行垂直拆分设计。
垂直拆分后,数据层在存储以及性能方面已经做到隔离,但十多年的业务积累,导致部分业务表数据量已经超过数千万条记录。为了提高单表的查询性能,以及解决单库存储容量问题,接下来需要基于DRDS对部分表进行水平拆分。在客户现场,进行反复调研及沟通,逐个分析各个业务的查询场景以及数据存储规律,和客户共同制订出针对大表的水平拆分方案,这个过程也称之为“分库分表”。
该传统金融平台的数据库垂直拆分架构大致如下:
通过DRDS将若干大表进行水平拆分,大致如下:
难点二:针对复杂业务逻辑,袋鼠云为其定制数据迁移程序
该传统金融平台隶属于国家级金融机构。任何一条数据的不准确、延迟、丢失,都将影响中国金融市场的稳定和健康发展。
所以,这就要求在拆分迁移过程中,还要对接收到的来自不同上游的数据进行计算和准确性校验。校验的精细度要求是:每条数据都需要验证,而且迁移过程是一次全量多次增量,数据迁移,数据验证,数据又迁移,数据再验证,如此循环往复,需要投入大量时间和人力。
针对该传统金融平台复杂的业务逻辑,以及对数据高完整性的需求,袋鼠云为客户定制化迁移程序,进行DB2数据库到DRDS的数据迁移工作。深入理解客户的业务逻辑并完成数据重组,期间不断聆听客户的业务需求,最终通过严格的多阶段数据验证考验。数据迁移过程如下:
难点三:为满足金融平台的高性能要求,SQL优化、压测、再优化,进行了8轮…
客户平台原采用的DB2数据库,有很多复杂SQL,对数据库带来一定负担。同时,还有数据库存储过程、视图等高级功能的使用,SQL书写不规范,表未建索引….大量的SQL需要袋鼠云数据库专家进行逐行审核,并和客户工作人员一起优化、压测、再优化、再压测、再再…,如此进行了8轮。除了常规的优化手段外,还需要对传统应用进行改造,如拆解查询、逻辑上拉至应用层、业务功能适度妥协等,最终完成对客户不同场景下的查询优化,最大程度提升了客户系统的性能。
并且在后端的数据库节点上,袋鼠云数据库团队基于DRDS设计读写分离的架构利用只读实例分担主库的数据查询压力,配合EDAS的限流功能,避免了后端数据库在业务高峰期的流量冲击。
最后:
通过采用分布式数据库架构,该传统金融平台全链路数据库瓶颈得以解决,对数据解耦,缩短数据访问链条长度,显著提升了自身数据服务性能。
从DB2到MySQL、DRDS,该传统金融平台完成了自身互联网转型的一大步。