瓜子二手车在财务中台结账核心系统 TiDB&TiFlash 实践
作者: jshan 原文来源:https://tidb.net/blog/69f61649
一、前言
瓜子二手车,作为业界独树一帜的二手车电商平台,正以其创新力量重塑整个二手车行业。我们以用户为中心,致力于提供卓越的交易和服务体验,这一点从我们买家用户的 NPS 得分高达 53 分便可见在行业中无疑是一个领先的成绩。瓜子二手车不仅仅是一个交易平台,更是中国二手车流通领域的重要基础设施,我们推动着车辆的全国性高效流通和规模化交易,促进了汽车消费,加速了汽车市场的循环消费模式,为实现中国汽车产业的大流通贡献力量。瓜子二手车作为中国二手车流通的产业基础设施,助力二手车实现全国性高效流通与规模化交易,拉动汽车消费,推动汽车市场形成循环消费,实现中国汽车大流通。
二、瓜子二手车与 TiDB 的故事
在这个数字化转型的旅程中,我们邂逅了 TiDB,一个领先的开源分布式关系型数据库。TiDB 的多功能性——支持在线事务处理(OLTP)和在线分析处理(OLAP),以及其水平扩展、金融级高可用性、实时 HTAP 能力、云原生特性,以及与 MySQL 协议和生态的兼容性——这些特性与瓜子二手车的业务需求不谋而合。自 2018 年起,我们开始关注 TiDB,并在 2020 年决定正式采用这项技术,以支持我们的业务发展。
TiDB 的引入,对于瓜子二手车来说,是一个重要的里程碑。它不仅承载了我们的众多核心业务:下单支付、商城标签管理、还支持了我们的重要核心系统——财务中台系统,该系统是连接业务与财务的桥梁,实现了数据的高效流转和处理。此外,用户设备激活和公众号等关键业务也得益于 TiDB 的稳定和强大性能,确保了服务的连续性和可靠性。
随着 TiDB 的深入应用,我们不断优化和升级系统,以应对业务的持续增长和技术的不断演进。我们的故事是关于创新、增长和数字化转型的故事,而 TiDB 在其中扮演了不可或缺的角色。未来,我们将继续携手 TiDB,探索更广阔的技术可能,为用户创造更大的价值,推动瓜子二手车向更高的业务巅峰迈进。
三、财务中台系统
1. 财务中台
财务中台是连接业务系统与账务系统的中间枢纽,上游对接集团所有业务系统,将业务数据转化为财务视角的数据,从而实现集团层面的业财一体化。同时财务中台可以对线上财务数据进行统一管理与输出,不仅提升了财务月结工作时效,还可以通过财务视角对企业经营状况进行分析,支撑业务决策。
2. 系统架构
财务中台分为 数据接入、标准单据、核心计算、数据输出 四个主模块,整体以配置为主,通过配置形式应用上下游业务变化,同时解放技术同学,完全由业务或者运营同学负责业务的对接和数据的转换。
1、数据接入:对接业务系统的数据,通过定义数据映射关系,将业务数据转换为统一的标准数据格式。
2、标准单据:将业务数据转化为财务视角下的数据,即业务数据的标准化和数据结构标准化。
3、核心计算:基于标准单据的数据,或者加工计算的数据,对数据的进一步加工,清洗,转化。
4、数据输出:将加工后数据,通过配置输出到下游系统。
四、为什么选择 TiDB
财务中台作为瓜子二手车业务和财务数据的核心枢纽,对数据库的选择有着严格的要求。选择 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,财务中台能够以更低的成本实现更高效、更稳定和更安全的业务运营。
五、为什么我们还需要 TiFlash
瓜子二手车在引入 TiDB 后,虽然有效支撑了财务中台的业务发展,但随着业务量的持续增长,也遇到了一些挑战。为了进一步提升系统性能和稳定性,引入 TiFlash 引擎成为必然选择。以下是引入 TiFlash 的主要原因和其带来的显著改进:
引入 TiFlash 主要原因
1. 复杂查询处理:瓜子二手车的内部业务极为复杂,系统需要通过配置化实现高度灵活性。在某些业务场景中,单条 SQL 语句可能长达数千行,涉及多表之间的 join 和嵌套查询。TiDB 虽然能够处理这些复杂查询,但随着数据量的增加,性能瓶颈逐渐显现。
2. 内存管理问题:随着业务数据量的激增,TiDB 和 TiKV 节点的内存使用率急剧上升,经常出现内存溢出(OOM)的情况,导致服务不稳定。这对于需要高稳定性的财务中台系统来说,是一个亟待解决的问题。
3. 结账周期缩短:财务中台的结账周期越来越短,对系统性能的要求也越来越高。传统的 SQL 优化已经无法满足快速结账的需求,需要更高效的数据处理能力。
4. 避免异构系统维护:如果使用额外的 MPP 数据库处理 AP 类查询,需要从 TiDB 同步数据到 MPP 系统,这不仅增加了数据同步的复杂性,还带来了异构系统维护的额外负担。引入 TiFlash 可以在同一系统中实现 HTAP(混合事务和分析处理),简化架构并提升效率。
TiFlash 带来的改进
1. 显著提升查询性能:在测试环境中,引入 TiFlash 后,原本需要 16 分钟才能完成并可能导致 OOM 的复杂查询,现在仅需 6 分钟左右即可完成。这种性能提升在生产环境中也得到了验证。
2. 降低任务平均耗时:TiFlash 的引入使得任务的平均耗时降低了 30%,显著提高了财务中台的工作效率。
3. 处理大规模数据:在某些业务场景中,数据量超过 15GB 时,原有的系统无法完成查询。而 TiFlash 能够顺利处理这些大规模数据,确保了业务的连续性和数据的完整性。
4. 减少查询尖刺:通过引入 TiFlash,系统在高并发查询时的性能波动(如 999、80 查询值尖刺)明显降低,提升了系统的稳定性和可靠性。
5. 用户反馈积极:用户普遍反馈任务查询速度明显提升,增强了对财务中台系统的信任和满意度。
通过引入 TiFlash,瓜子二手车不仅解决了现有系统的痛点,还为未来的业务扩展和性能提升打下了坚实的基础。
六、低版本的 TiFlash 面临的问题
瓜子二手车自 2018 年起开始关注 TiDB,并在 2020 年正式引入该技术。随着业务的不断发展,我们经历了 TiDB 的多个版本迭代,目前主要使用的是 TiFlash 和 RAWTiKV 的 5.x 版本。然而,在这一过程中,我们也遇到了一些挑战:
1. TiCDC 性能问题:我们发现 TiCDC 在数据同步方面存在一定的延迟,并且内存占用较高,这影响了数据流的实时性和系统的稳定性。
2. TiFlash 性能提升需求:尽管 TiFlash 已经在当前业务中提供了良好的支持,但为了应对日益增长的数据量和查询复杂性,我们需要进一步提升其性能。
3. 资源管控难题:当前版本中缺乏有效的资源管控机制,这限制了我们对计算资源的优化和分配能力。
4. RAWTiKV 功能限制:RAWTiKV 目前缺少 TiCDC 的数据同步功能,这给数据管理和实时性带来了不便。
七、新版本的 TiDB&TiFlash 可以解决哪些问题?
新版本的 TiDB 和 TiFlash 为瓜子二手车带来的改进和解决的问题主要包括:
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 6.0 版本增强了 TiFlash 的 MPP 引擎,新增支持了更多函数和算子下推到 TiFlash 层进行计算,提升了计算效率。
7. 列式存储优化:TiFlash 的列式存储结构专为 OLAP 查询优化,提供了快速实时分析的能力,与 TiKV 行存结合使用,有效应对复杂业务查询。
8. 智能计算下推:TiDB 可以根据查询需求智能地选择使用 TiFlash 列存或 TiKV 行存,甚至在单个查询中混合使用以提供最佳性能。
9. 简化的架构和易用性:TiFlash 作为 TiDB 的分析引擎,简化了数据架构,无需额外部署和维护单独的分析型数据库,同时保持了数据的强一致性和实时性。
通过这些改进,新版本的 TiDB 和 TiFlash 能够为瓜子二手车提供更高效、更稳定以及更安全的数据库解决方案,满足其在数据处理和业务发展上的高标准需求。
八、展望
瓜子二手车通过引入 TiDB 和 TiFlash,不仅解决了财务中台系统在数据处理和查询性能上的痛点,还为公司带来了成本效益和技术优势。随着技术的不断进步和业务需求的增长,瓜子二手车将持续探索和利用 TiDB 及其生态产品,以实现更高效、更稳定的业务运营。
通过不断的技术创新和战略升级,瓜子二手车正在引领二手车行业的数字化转型,为用户提供更加便捷、高效的服务体验。TiDB 的引入和成功应用,无疑为瓜子二手车的未来发展提供了坚实的技术支撑。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/92f4eb1a1e3587508b2ab9799】。文章转载请联系作者。
评论