企业落地与项目实战5387 字

携程机票业务中台化落地实践

·全库 415 / 611

《携程机票业务中台化落地实践》共 0.5 万字,通篇围绕 架构、成本、数据库、监控 展开,归在「企业落地与项目实战」这一层。

覆盖架构成本数据库监控需求缓存

适合要把 AI 项目交付出去、对结果负责的人

目录骨架(6 节)
  1. 一、背景与挑战
  2. 二、原则与目标
  3. 三、关键技术实践
  4. 四、技术架构概览
  5. 五、成效
  6. 六、总结

分享内容

  1. 中台化的背景和面临的挑战
  2. 中台化设计的原则以及目标
  3. 中台化架构的关键技术实践
  4. 整体技术架构概览以及线上运行效果

一、背景与挑战

随着携程国际机票业务的快速发展与全球化战略的深入推进,需要使用的数据种类以及对应的复杂度也随之显著增加。这一增长趋势不仅带来了数据管理的挑战,同样对数据准确性和实时性提出了更高的要求。

接下来,我们从生产者和消费者两个角度具体看下有哪些挑战。

生产者视角下的挑战:对于基础数据的生产者,每一种数据类型都有其独特的业务逻辑,涵盖数据的获取、处理、存储和匹配等环节。数据更新周期长,业务复杂性高,和基础数据相关的应用就达到了几十个,维护成本不断攀升。同时,还存在着数据访问效率低、上云过程复杂、数据回滚困难以及无法应对大规模机器重启或数据刷新等问题。

消费者视角下的挑战:对于基础数据的消费者,每一个应用都或多或少依赖于基础数据。任何一种数据的误差都可能引发广泛的线上问题,而且问题的发现往往滞后,导致生产问题被不断放大。此外,还存在着业务开发接入复杂、测试环境不稳定、服务启动缓慢、垃圾回收频繁、上云过程繁琐以及数据不一致等问题。

二、原则与目标

面对上述问题,构建一套中台化系统是其中一个解决方案,我们希望实现数据资源的高效整合,消除数据孤岛,提高数据处理效率,确保数据质量标准。在系统设计的初期阶段,我们首先从数据生产者和消费者角度出发确立了一系列核心目标:

数据生产者角度:

数据一致性:确保数据在各个环节保持一致性,避免偏差。

数据时效性:保障数据的实时更新,满足业务对数据的即时性需求。

系统健壮性:构建稳定可靠的系统架构,以应对各种运行环境和负载条件。

  • 数据可追溯性:实现数据的全流程追踪,便于问题定位和历史分析。
  • 数据可回滚性:提供数据版本控制,允许在出现问题时快速回退至稳定状态。
  • 监控完善性:建立全面的监控体系,实时监控数据流和系统状态。

降低成本:通过优化资源配置,降低机器和存储的成本;简化系统维护流程,减少人力和时间的投入。

数据消费者角度:

优化消费流程:简化数据消费流程,提高数据处理的便捷性和效率。

  • 接入方式简化:提供直观易用的接入方式,降低数据使用的门槛。
  • 统一数据模型:建立统一的数据模型,确保数据的一致性和可理解性。

解决环境问题:解决不同运行环境下的数据同步的问题。

  • 测试环境完善:提供完善的测试环境,确保数据的准确性和稳定性。
  • 云服务便捷性:优化云服务接入,提高数据服务的灵活性和可扩展性。

提升服务性能:通过技术优化,提升服务的响应速度和处理能力。

  • 启动耗时降低:减少服务启动时间,提高系统的快速响应能力。
  • 减少 GC 次数:优化内存管理,减少因数据更新引起的垃圾回收(GC)操作,提升系统性能。

三、关键技术实践

在基础数据中台化建设的实践过程中,遇到了一系列的问题,我们介绍一些关键的技术实践。

3.1 数据一致性

3.1.1 版本控制

同一集群下不同的机器在更新缓存时由于调度时间不一致,会导致不同机器在同一时间使用的数据不一致,为解决此问题,我们使用数据版本控制策略来解决此问题。每当数据发生变更,我们便认定一个新的数据版本已经诞生。这个新版本可以是包含了变更和未变更数据的完整副本(以下简称为 "全量数据"),也可以是仅包含变更内容的更新(以下简称为 "增量数据")。不论是全量数据还是增量数据,我们都会将数据记录在 BLOB(Binary Large Object)文件中,BLOB 文件将作为数据传输的媒介。

实施数据版本控制后,我们能够收获以下收益:

版本追踪:确保每一次数据更新都有迹可循,并且在新版本出现问题时能够迅速恢复到之前的版本。

数据一致性:保证所有数据消费者能访问到相同版本的数据,从而减少因数据版本不一致而引发的问题。

容错与恢复:能够快速识别出问题数据,并利用多种通知机制,促使产品或开发团队及时介入,解决问题。

性能监控:基于数据版本,构建性能监控体系,以评估数据传输和处理的效率。

数据安全:在数据传输和存储过程中,通过加密和访问控制机制,确保数据安全,防止未授权访问。

3.1.2 去中心化

在业界,如果某个服务想要消费基础数据时,主流解决方案是采用直连数据库或调用应用程序接口的方式,如下图 1 和图 2,这两者均属于 C/S 架构。C/S 架构虽被广泛采用,却面临着如数据库承载压力大、数据一致性难以保障、系统扩展性不足、开发与集成过程复杂、硬件成本高昂、缓存穿透、中心服务的读压力,以及难以应对流量高峰等问题。

图 1

图 2

为了克服以上问题,我们引入了 P2P 架构(Peer-to-Peer Architecture)。与 C/S 架构相比,P2P 架构实现了去中心化。在 P2P 网络中,每个节点都具备客户端和服务器的双重身份,能够直接与其他节点进行通信和数据交换,无需依赖中央服务器。同时,P2P 架构下的数据查询耗时并不会因为客户端数量的增加而线性增长。图 3 直观地展示了 C/S 架构与 P2P 架构的本质区别。

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求