导读
在大数据时代,金融行业面临着日益增长的数据量和复杂的查询需求,尤其是跨库、跨集群的场景。在这种背景下,如何在保证数据一致性、高可用性的同时,实现业务的快速扩展与高效查询,成为了企业数字化转型的关键挑战。本文将深入探讨如何通过 TiDB 分布式数据库,结合自研的轻量级数据路由组件,解决海量数据管理问题。通过按时间维度拆分集群、动态数据路由与高效结果集归并等技术,企业能够实现数据无缝扩展,提升查询效率,并优化资源利用率。同时,本文分享了具体的技术实现,包括如何在多集群环境下进行数据路由、事务管理及跨集群查询,帮助企业在确保稳定性的基础上,支持更高的并发和更复杂的查询需求。
需求背景
某头部银行客户交易明细查询场景服务于全行对私、对公、海外客户,服务的时间范围覆盖了 2014 年至今超 10 年的超长跨度,致使原有保存在关系型数据库、NoSQL 数据库中的整体数据规模达到了可观的单副本 500TB,并且日均增量数据已超 1 亿。不仅如此,业务部门希望在保证服务质量、服务周期的前提下进一步提升差异化和业务敏捷能力,最终选择了具备高可用、高并发、易扩展、透明分布式(全局二级索引)、HTAP 等关键能力的 TiDB 分布式数据库作为其新的数据底座。
由于 TiDB 的设计哲学是在标准硬件基础上通过多副本+Multi Raft 分布式一致性协议实现可用性和性能间的平衡,且副本数至少 3 个起步,部分高等级业务甚至需要 5 副本提供更高的可用性。所以,单副本 500TB 迁移至 TiDB 后即使采用了多层压缩,因副本数的变多整体容量势必会有一定的增长(该场景 5 副本经过压缩约为原始数据的 2 倍)。面对如此大数据规模、面向全渠道/数亿客户、TPS 超过万级/访问延迟毫秒级、并且混合了客户号/账号/机构信息多维度访问的重要业务系统,为了在 SLA、扩展性、整体成本等方面寻求最佳平衡点, 整体数据架构采用了最贴合业务特征的方式做水平拆分,即按交易时间维度拆分为多个物理集群,不同集群可根据 SLA 等级对应不同的资源规格和副本数,并通过应用层的数据路由、联邦查询组件实现跨库背景下的 SQL 访问快速定位、结果集归并、路由策略管理等核心功能 。
本文的后续内容将聚焦在路由组件的设计与实现,以及与应用框架和 TiDB 的高效整合。
整体设计与选型策略
该案例的跨库访问场景包括基于时间范围的交易明细查询(分页/支持跳页,非分页)、收支记录查询(分页/非跳页)、收支汇总查询,以及基于交易流水号等非时间条件的单笔/多笔查询、单笔/多笔修改、单集群多表 DML 等,可以说涵盖了银行领域该类场景的所有业务。
梳理后共包括以下几类访问模式:
- 按时间路由-分页追加归并 :对应各类分页查询场景,需要根据查询时间范围确定涉及的集群范围,再结合分页控制类信息(如起始记录数、每页记录数ÿ