翼支付引入开源 TiDB 并改造为 YiDB,与平凯星辰达成战略合作

2024-06-16
来源:网络整理

前言

易服智于 2017 年推出开源 TiDB,并根据电信和金融行业的场景需求对 TiDB 进行了适配和修改。为区分社区版本,易服智内部将修改后的版本称为 YiDB,其版本迭代在大版本上与社区版 TiDB 保持一致,以兼容新社区版本的功能特性和工具。为了更好地发展和让更多公司使用 YiDB,易服智与平开星辰于 2020 年签署了战略合作协议,并达成共识,将 YiDB 作为 TiDB 的特定发行版进行推广。

项目背景

每年的5月25日,易服智都会有年度大促活动,活动当天业务压力会急剧增加。为了保障活动的顺利开展,技术团队会根据往年的业务增长情况做好充分准备。2017年活动中,流量暴增超出预期,数据库压力剧增,后期由于并发量过大,资源用光,导致响应缓慢,严重影响了用户体验和业务。在评审过程中发现,除了活动库的问题,账单库的问题也亟待解决。主要问题有两点:一是架构的并发承载能力逐渐成为业务开展的瓶颈;二是由于服务器数据量大,每日增量数据大,已经逐渐不能满足中心化检查核查对于账单数据留存期限的合规要求。当时的账单库是分库分表的,架构更换在所难免。 因此我们开始在业界寻求分布式数据库的替代方案。结合业务情况和开发运营经验,我们对新的替代方案提出了三点要求:1、要兼容现有数据库协议,降低应用改造成本;2、要具备计算和存储的平滑扩展能力,尽量减少硬件限制对业务的影响;3、最好能让业务使用单机数据库,避免数据库架构对业务开发层造成影响。

TiDB 和 YiDB

基于以上需求,我们调研了业界几种流行的分布式数据库,最终锁定了兼容业务环境、满足要求的开源数据库 TiDB。锁定目标后,我们联系了官方,经过三个月左右的测试、调整和验证,计划先在内部针对边缘业务上线,先拆分计费业务问题,待生产业务验证成熟后再进一步上线。最先上线的业务是审计。由于电信对内部数据存储管理有特定要求,因此我们开始了 TiDB 的适配开发,经过优化调整后在内部推出了 YiDB 1.0 版本。1.0 版本虽然在边缘业务中使用,但还是遇到了不少功能和性能问题。在官方的帮助和指导下,不断打磨优化,逐步在 的不同业务场景上线。

2018年,我们完成跨地域分布式多活架构的测试验证和部署,上线应用级双活系统;2019年,上线清结算、征信、消息中心等业务,在反洗钱体系中建立了以分布式数据库为核心的全新架构,将反洗钱批处理时间由行业平均16小时压缩到平均4.5小时;2020年,上线账单、营销、支付交易等多个核心业务库。同年,易付智与平开星辰达成战略合作,易付智推出YiDB 4.0GA版本,该版本在国产化、数据支持、迁移兼容、加密通信、存储加密、国密、审计等方面进行了改造、开发和优化。 同时兼容社区版主要功能,拥有乐观、悲观两种锁模式,适用于海量高并发、实时计算分析、金融级中心多活、云数据库等多种应用场景,可为企业带来稳定、高效、安全的业务环境。

2020年,不仅是我们战略合作的起点,更是全面推进信息技术应用创新产业的起点。未来3到5年,信息创新产业将迎来黄金发展期,国产基础软硬件将从能用到好用,YiDB在此领域也取得了一些成果,已与中标奇林、中科可控、中电富富、东方通、同心软件、海光信息、中国长城等十余家信息创新企业完成产品适配认证,功能性能达到测试预期。同时,YiDB积极跟进行业动态,完成国产产品测评,推动信息创新产品选型。作为新基建的重要组成部分,信息创新产业未来必将成为驱动经济发展的重要手段之一。

为什么选择 TiDB

1. 兼容协议:基于协议开发的业务中,几乎不需要修改应用代码,只需要关注 TiDB 和一些场景的差异即可。由于 TiDB 是分布式架构,在自增列、大事务、乐观锁等处理上,只需要调整少量代码。

2、支持在线水平扩展:通过增加节点,可以在对业务几乎不产生影响的情况下提升存储和计算能力,轻松应对数据快速增长。该功能完美解决了账单业务的难题。

3、应用层无需分库分表:当业务引入+方案时,虽然解决了单机数据量限制的问题,但会带来很多成本问题。比如:业务维度选择本身限制了业务发展,复杂的跨维度聚合查询会对业务造成灾难性的影响,唯一键等全局约束无法实现,运维复杂度随机器规模呈指数级增长。如果使用 TiDB,就不用担心这些问题,我们可以让应用层和运维保持简单。

计费业务应用实践

易付智是中国电信旗下的一款移动支付产品,用户可以在平台上支付各类生活服务费用,易付智月活跃用户约6000万,商户近百万,以此用户量计算,数据库中账单业务个人账单部分每月数据增量近500G。

账单业务在YiDB上线之前,是运行在分库分表的架构上。2017年事件发生后,为了解决中心化检查、数据增加等问题,我们先是联系开发拆分应用,随后将硬盘扩容3倍。运行一段时间后,归档需求逐渐常态化。虽然归档工作可以自动化,但服务器硬盘空间有限,已经逐渐无法满足存储一年历史账单数据的要求。此时YiDB已经在清结算、征信等多个业务场景中表现稳定,于是我们开始准备迁移。

我们在 YiDB 上上线其他业务时积累了不少经验,相比以往不同的是,这次我们使用了社区开源的 DM 迁移管理工具,可以将上游分库分表的数据合并为下游库中的一张表,可以满足同名或异名表合并、分表合并、匹配过滤删除、主键合并等多种场景。账单业务库中分表的主键均为自增主键,键值为账单号加时间戳,属于同名加主键分表合并的合并场景。相比之前使用的同步工具,DM 优雅的解决了多表合并的问题,大大简化了账单业务在迁移过程中的数据聚合工作。

计费服务上线后做了以下改进:

1、业务开发:避免侵入应用开发,开发可以实现SQL跨维度聚合连接,而不局限于业务单一维度,实现方式更多选择,更灵活,支持全局约束,可以在数据库层面保证数据唯一性,开发可以专注于业务逻辑的实现。

2、运维成本:人力成本大幅降低,日常运维操作中不再需要频繁归档,除索引之外的DDL操作仅需秒级,同时自带高可用和监控系统,将运维人员从重复的基础操作中解放出来,提升运维人员的幸福感。

3、业务扩展:无需因数据库架构而牺牲业务层,通过扩展服务节点可在线增加计算能力和存储容量,减少硬件配置变化对业务的影响,满足业务快速发展和中检合规需求。

结论

随着移动的普及和互联网的发展,企业数据飞速增长,传统的单机数据库在系统扩展性和性价比等方面逐渐显得不合适,具有无中心、无单点、无限水平扩展等特点的纯分布式架构的数据库前景广阔,可以预见,这类数据库将成为未来海量数据处理技术的核心。

我们自 TiDB 推出以来就一直与官方保持着深入的联系,非常感谢平开星辰的合作伙伴多年来的全力支持,在适配迭代、硬件选型、开发优化等方面给予的指导和帮助。相信在一群精于技术、善于服务、乐于分享的合作伙伴的共同努力下,TiDB 和 YiDB 会越来越好!

分享