瓜子二手车是行业内目前唯一一家提供二手车电商交易与服务的平台,在数字化转型过程中,IT 系统架构面临着诸多严峻考验。TiDB 的引入有效地帮助瓜子二手车加强了平台核心业务的支撑,大幅提高了财务中台系统的数据处理效率;TiDB 的稳定性和性能为众多关键业务的连续性与可靠性提供了坚实保障。
本文详细介绍了瓜子二手车财务中台结账核心系统引入 TiDB 以及其 HTAP 能力的心路历程。
作者简介:韩建生,瓜子二手车数据库负责人。负责 MySQL、Redis、MongoDB、TiDB 等数据库及运维平台自动化工作。2018 年关注 TiDB、经过多次前期 TiDB 测试,2019 年将 TiDB 引入瓜子业务,历经了 TiDB 集群从 0 到的 1 建设。
瓜子二手车与 TiDB
瓜子二手车成立于 2015 年 9 月,是行业内目前唯一一家提供二手车电商交易与服务的平台。瓜子二手车致力于用创新重塑二手车产业,为用户创造更大价值,买家用户 NPS 达到 53 分,位于行业领先水平。瓜子二手车作为中国二手车流通的产业基础设施,助力二手车实现全国性高效流通与规模化交易,拉动汽车消费,推动汽车市场形成循环消费,实现中国汽车大流通。
在数字化转型的进程中,瓜子二手车与 TiDB 的相遇标志着一个重要的发展阶段。TiDB 作为一个领先的开源分布式关系型数据库,以其多功能性——支持在线事务处理(OLTP)和在线分析处理(OLAP),以及其水平扩展能力、金融级高可用性、实时 HTAP 能力、云原生特性,以及与 MySQL 协议和生态的兼容性——与瓜子二手车的业务需求高度契合。
自 2018 年起,瓜子二手车开始关注 TiDB,并在 2019 年正式决定采用这项技术,上线了第一套 TiDB 2.0 集群来支持业务发展。从第一次上线到今天,TiDB 不仅支撑了平台的多项核心业务,如下单支付和商城标签管理,还特别支持了重要的核心系统——财务中台系统。该系统作为业务与财务之间的桥梁,实现了数据的高效流转和处理。此外,用户设备激活和公众号等关键业务也因 TiDB 的稳定性和强大性能而受益,确保了服务的连续性和可靠性。随着 TiDB 的深入应用,瓜子二手车不断对系统进行优化和升级,以适应业务的持续增长和技术的不断演进。
瓜子二手车的故事是关于创新、增长和数字化转型的故事,而 TiDB 在其中扮演了关键角色。展望未来,瓜子二手车将继续与 TiDB 合作,探索更广阔的技术领域,为用户创造更大的价值,并推动平台向更高的业务巅峰迈进。
本文将以财务中台系统为例,介绍 TiDB 在瓜子二手车的应用实践。
财务中台系统介绍
财务中台是连接业务系统与账务系统的中间枢纽,上游对接集团所有业务系统,将业务数据转化为财务视角的数据,从而实现集团层面的业财一体化。同时财务中台可以对线上财务数据进行统一管理与输出,不仅提升了财务月结工作时效,还可以通过财务视角对企业经营状况进行分析,支撑业务决策。
系统架构
财务中台分为数据接入、标准单据、核心计算、数据输出四个主模块,整体以配置为主,通过配置形式应用上下游业务变化,同时解放技术人员,完全由业务或者运营人员负责业务的对接和数据的转换。
1. 数据接入:对接业务系统的数据,通过定义数据映射关系,将业务数据转换为统一的标准数据格式。
2. 标准单据:将业务数据转化为财务视角下的数据,即业务数据的标准化和数据结构标准化。
3. 核心计算:基于标准单据的数据,或者加工计算的数据,对数据的进一步加工,清洗,转化。
4. 数据输出:将加工后数据,通过配置输出到下游系统。
财务中台选型 TiDB 的原因
财务中台作为瓜子二手车业务和财务数据的核心枢纽,对数据库的选择有着严格的要求。在 2020 年中台系统建设之初,就选定了 TiDB 作为财务中台的数据库解决方案,主要是基于以下几个考虑:
1. 成本效益
TiDB 作为一个开源的数据库解决方案,可以显著降低财务中台的总体拥有成本(TCO),同时提供相似甚至更优的功能特性。
2. 数据处理能力
财务中台需要处理的数据量巨大,且数据模型复杂,单表数据量超出了传统 MySQL 单个实例的处理能力。在这种情况下,使用 MySQL 需要进行分库分表操作,这不仅增加了业务层实现的复杂性,还带来了架构上的挑战。TiDB 的分布式存储特性能够有效应对大规模数据,无需分库分表即可轻松管理海量数据。
3. 查询性能
财务中台的业务特殊性要求数据库能够高效地处理多表之间的 join 关联查询和嵌套查询。TiDB 在大数据量下的 join 操作性能优于 MySQL,这意味着在执行复杂查询时,TiDB 能够提供更快的响应速度和更高的数据处理效率,从而提升财务中台的业务处理能力。
4. 技术兼容性和易用性
TiDB 基本完全兼容 MySQL 协议,这意味着对于已经熟悉 MySQL 的技术人员来说,无需额外学习成本即可顺利迁移和使用 TiDB。这种兼容性大大降低了技术迁移的门槛,同时也保证了现有应用的无缝迁移和开发工作的顺利进行。
5. 可扩展性和高可用性
财务中台对数据库的稳定性和可用性有着极高的要求。TiDB 的分布式架构支持节点的无限扩容,可以根据业务需求灵活扩展资源,同时保持高可用性。此外,TiDB 支持在线 DDL 操作,使得数据库可以在不停机的情况下进行结构变更,这对于保证财务中台的持续运行至关重要。
6. 简化数据汇聚流程
使用 MySQL 时,由于分库分表的需要,下游数据汇聚过程可能会变得复杂且容易出错。而 TiDB 的分布式特性简化了这一流程,使得数据汇聚更加直接和高效,减少了数据整合的时间和成本。
综上所述,TiDB 以其成本效益、数据处理能力、查询性能、技术兼容性、可扩展性以及高可用性等优势,成为瓜子二手车财务中台理想的数据库选择。通过采用 TiDB,财务中台能够以更低的成本实现更高效、更稳定和更安全的业务运营。
HTAP 能力的引入
起初,TiDB 作为计算层、TiKV 作为存储层的数据库架构有效支撑了财务中台的业务发展,但随着业务量的持续增长,这套架构也遇到了一些挑战:
1. 复杂查询处理:瓜子二手车的内部业务极为复杂,系统需要通过配置化实现高度灵活性。在某些业务场景中,单条 SQL 语句可能长达数千行,涉及多表之间的 join 和嵌套查询。当前架构虽然能够处理这些复杂查询,但随着数据量的增加,性能瓶颈逐渐显现。
2. 内存管理问题:随着业务数据量的激增,TiDB 和 TiKV 节点的内存使用率急剧上升,经常出现内存溢出(OOM)的情况,导致服务不稳定。这对于需要高稳定性的财务中台系统来说,是一个亟待解决的问题。
3. 结账周期缩短:财务中台的结账周期越来越短,对系统性能的要求也越来越高。传统的 SQL 优化已经无法满足快速结账的需求,需要更高效的数据处理能力。
4. 避免异构系统维护:如果使用额外的 MPP 数据库处理 AP 类查询,需要从 TiDB 同步数据到 MPP 系统,这不仅增加了数据同步的复杂性,还带来了异构系统维护的额外负担。
在同一系统中实现混合事务和分析处理能够有效地简化架构并提升效率,为了进一步提升系统性能和稳定性,瓜子二手车引入了 TiDB 的 HTAP 能力。TiFlash ( https://github.com/pingcap/tiflash ) 是 TiDB HTAP 形态的关键组件,它是 TiKV 的列存扩展,在提供了良好的隔离性的同时,也兼顾了强一致性。引入 TiFlash 后带来了以下好处:
1. 显著提升查询性能:在测试环境中,引入 TiFlash 后,原本需要 16 分钟才能完成并可能导致 OOM 的复杂查询,现在仅需 6 分钟左右即可完成。这种性能提升在生产环境中也得到了验证。
2. 降低任务平均耗时:TiFlash 的引入使得任务的平均耗时降低了 30%,显著提高了财务中台的工作效率。
3. 处理大规模数据:在某些业务场景中,数据量超过 15GB 时,原有的系统无法完成查询。而 TiFlash 能够顺利处理这些大规模数据,确保了业务的连续性和数据的完整性。
4. 减少查询尖刺:通过引入 TiFlash,系统在高并发查询时的性能波动(如 999、80 查询值尖刺)明显降低,提升了系统的稳定性和可靠性。
5. 用户反馈积极:用户普遍反馈任务查询速度明显提升,增强了对财务中台系统的信任和满意度。
通过引入 TiDB 的 HTAP 能力,瓜子二手车不仅解决了现有系统的痛点,还为未来的业务扩展和性能提升打下了坚实的基础。
TiDB 的升级之路
瓜子二手车自 2018 年起开始关注 TiDB,并在 2019 年正式引入该技术。随着业务的不断发展,经历了 TiDB 的多个版本迭代,目前主要使用的是 TiDB v5.x 版本,这个版本下有一些亟待解决的问题:
1. TiCDC 性能问题:我们发现 TiCDC 在数据同步方面存在一定的延迟,并且内存占用较高,这影响了数据流的实时性和系统的稳定性。
2. TiFlash 性能提升需求:尽管 TiFlash 已经在当前业务中提供了良好的支持,但为了应对日益增长的数据量和查询复杂性,我们需要进一步提升其性能。
3. 资源管控难题:当前版本中缺乏有效的资源管控机制,这限制了我们对计算资源的优化和分配能力。
TiDB v6 及以上版本,对于存储层(TiKV、TiFlash)和计算层(TiDB)以及周边工具都做了诸多优化,能够有针对性地解决瓜子二手车当前面临的问题:
1. 内存使用优化:通过引入MemoryTracker,新版本 TiFlash 能够更精确地跟踪和记录每个 MPP 任务使用的内存,有效避免因单个查询消耗大量内存导致节点 OOM 的问题。当内存使用超过限制时,系统可以强行中止请求,减少查询间的相互干扰。
2. 存储优化:新版本 TiFlash 的PageStorage(PSv3)重新设计,优化了数据存储结构,减少了因数据重写引起的 CPU 和 IO 资源浪费。通过SpaceMap记录数据块使用情况,避免了数据重写,降低了 GC 需求,提升了写延迟和查询 CPU 利用率。
3. 线程管理改进:DynamicThreadPool解决了线程频繁创建和销毁的开销,通过固定线程和动态线程的智能管理,提升了 CPU 利用率。
4. 查询调度优化:引入MinTSOScheduler查询任务调度器,控制 TiFlash 中同时使用的线程数量,有效防止了 OOM 和 OOT 问题。
5. 在线 DDL 性能提升:TiDB v6.5.0 版本支持多表 DDL 并行执行和 Fast DDL 在线添加索引提速 10 倍,大幅减少了 DDL 操作对业务的影响。
6. 增强的 MPP 引擎:TiDB v6.0 版本增强了 TiFlash 的 MPP 引擎,新增支持了更多函数和算子下推到 TiFlash 层进行计算,提升了计算效率。
通过这些改进,新版本的 TiDB 能够为瓜子二手车提供更高效、更稳定以及更安全的数据库解决方案,满足其在数据处理和业务发展上的高标准需求。
展望
瓜子二手车通过引入 TiDB,不仅解决了财务中台系统在数据处理和查询性能上的痛点,还为公司带来了成本效益和技术优势。随着技术的不断进步和业务需求的增长,瓜子二手车将持续探索和利用 TiDB 及其生态产品,以实现更高效、更稳定的业务运营。
通过不断的技术创新和战略升级,瓜子二手车正在引领二手车行业的数字化转型,为用户提供更加便捷、高效的服务体验。TiDB 的引入和成功应用,也将为瓜子二手车的未来发展提供坚实的技术支撑。