GoldenDB跨集群访问解决方案

半熟科技谈 2023-10-24 22:29:34

随着单元化方案的普及,越来越多的银行业务也实施了单元化改造。其中银行的代收付业务就可以按照分行所处地域进行单元化拆分,按业务需求使用南北两个数据库集群分别承载业务数据。使用单元化设计可以按分行业务数据进行拆分,减少耦合度,并按照区域就近部署业务,提升业务的响应速度。但单元化设计也给一些全行类的统计查询业务带来不便。业务需要开发专门的归并逻辑,分别从南北两个数据库集群获取数据并做进一步处理,逻辑复杂,并行运算速度慢。

GoldenDB是一款金融级分布式数据库,主要由计算节点,数据节点,全局事务管理节点以及管理节点等组件组成。计算节点负责SQL的解析优化分发并将最终结果返回给应用。一般情况下,计算节点隶属于一个特定的GoldenDB集群(租户)。DB节点负责SQL的进一步执行并实现数据持久化。全局事务管理器实现分布式事务的全局一致性。管理节点对整个系统进行运维监控。GoldenDB数据库既可以实现超大数据规模及大并发特点的应用数据承载,也可以适配小规模数据的单元化业务。

在充分研究了代收付业务单元化的需求并分析GoldenDB产品特点前提下,GoldenDB团队开发实现了计算节点的另外一种模式。该种模式下的计算节点不隶属于任何一个数据集群,可以进行跨集群访问,并将多个集群的数据结果进行查询、排序、汇聚等,减少业务逻辑的复杂度。另外计算节点可以就近访问本机房的备机,做到同机房内跨集群读,极大地提升了跨集群访问的效率。

01 单元化拆分增加全局业务难度

银行在实施GoldenDB改造前,代收付系统使用Oracle单机数据库实现分库分表。实现方式是使用两个Oracle实例进行单元拆分,业务应用单元分别对接到这两个数据库实例进行数据处理。两个Oracle实例承载的数据有相同的数据结构,业务数据按分行的维度进行了拆分。代收付应用按照分行维度根据路由规则将不同分行的请求分别发送到不同的单元处理。

按照分行维度进行单元化拆分后可以带来增大系统处理能力,缩小故障带来的影响范围等好处,但同时对业务设计也带来一定的挑战。代收付业务中有一些业务涉及到全行数据统计与汇聚。未改造前代收付系统使用的方案是由南北单元的全局业务分别进行跨区域,跨库查询,对所查询结果进行最终汇总,如图1所示。

图1 改造前单元化结构

该方案对于全局业务并不友好,需要增加些额外的逻辑处理跨数据库访问,包括两个数据源状态的维护、异常处理及跨数据源访问的同步与并发控制。另外跨区域访问不同数据库,事务响应的时延会加长,对业务的可用性也带来挑战。由于业务需要维护两套数据源,并实时根据状态调整逻辑并需要对不同异常情况进行处理,因此业务运维难度也增加了很多。

02 GoldenDB全局计算节点助力业务单元化

代收付项目迁移到GoldenDB数据库平台后,在充分分析业务逻辑及痛点的基础上,重新评估了跨库查询的方案后提出了新的建设方案。在新方案中,跨库(集群)查询可以由GoldenDB内部组件实现,业务应用只关注业务处理逻辑即可。GoldenDB团队计算节点进行了必要的改造,形成了跨库(集群)查询的方案。

图2 GoldenDB全局计算节点方案

方案由全局计算节点(SCN)对接南北库的计算节点(CN)而成。在相应的计算节点上实现就近读,高可靠高可用等特点,如图2所示。使用新方案后,应用单元内部的跨库查询逻辑可以将之前的“获取不同集群数据”,“对不同数据进行归并处理”,“在某个集群数据获取出现意外之后的异常处理”逻辑全部去除,直接对SCN发送跨库查询语句即可。大大降低了业务复杂度,提升了业务性能。

跨集群全局查询简化业务逻辑

GoldenDB对计算节点进行了功能扩展,将后向链路由单纯与数据节点对接扩展成可以同时与计算节点和数据节点对接。改造后的跨库计算节点(SCN)可以与2个或者多个GoldenDB的计算节点(CN)对接,横跨多个集群进行查询。改造后的应用需要进行跨库全局数据查询的时候,无需再维护多个数据源,只需直接对接到SCN上,向其发送需要进行跨库查询的SQL语句,即可得到最终结果。该方案大大简化了全局业务的跨库维护逻辑,使其专注业务处理本身。全局跨库查询除了支持简单结果汇总外还支持聚合函数,排序,分类,分页等常见聚合操作。

机房内就近查询减小业务的时延

在代收付的GoldenDB分库部署方案中,南北两个数据库集群是跨区域交叉互备的。在跨库查询设计中充分利用本机房内的对端数据库集群的备机,实现机房内就近解决了跨区域查询带来时延较长的问题。方案中SCN对接南北两个集群的计算节点CN。在对端数据库集群的计算节点上开启了读写分离,并使用了就近读的原则。就近读即读取与计算节点最近的备机的数据,避免了跨机房甚至跨区域读带来的网络时延,大大提升了应用的查询效率。

智能数据源选择提升业务精确度

在遵循就近读的原则基础上,有时候也会带来副作用。因为就近读一般情况下会读取对端数据库在本机房内的备机。由于主备复制之间有一定的时延,如果数据库处于业务高峰期的时候,主备时延可能会进一步增大。有的业务对数据的实时性有要求,对于超过一定时间外的数据查询的结果会造成不准确甚至错误。GoldenDB允许业务设定对数据时延的容忍度。如果主备数据时延超过应用的容忍度时延,GoldenDB将会舍弃就近读的原则,选择读主。最大限度保证业务的准确性。

高可靠高可用提升业务的安全性

方案设计中充分考虑到了系统的高可靠和高可用,每个组件都采用了双机热备的设计方案,最大限度保证系统的可靠性。

03 GoldenDB分布式单元化新方向

跨集群全局访问方案已按设计和计划进行测试并成功投入到生产中。在投产的一年多时间内整套系统运行平稳,实际使用效果完全符合预期,包括简化业务逻辑,提升查询性能,系统可靠性等。GoldenDB全局访问方案为代收业务平稳过渡到GoldenDB数据库平台上提供了坚实的技术支撑。

金融科技及其他数字化建设越来越趋向于单元化、集群化。在单元化带来的便利、快速迭代以及故障隔离等好处的同时也存在一定局限性。其中最大的局限性就在于单元化之间的数据访问或者全局数据的访问。GoldenDB的跨集群访问解决方案很好地解决了数据库集群间全局数据访问等问题,极大地简化了单元化业务的处理逻辑,提升了数据的访问效率。当然GoldenDB的跨集群访问方案还需要进一步解决扁平化,跨集群写以及事务控制等问题,以便为金融科技及数字化产业发展提供更优质的数据库服务。

0 阅读:5

半熟科技谈

简介:数码资讯,数码媒体