一、背景
携程机票订单系统是由多个业务子系统组成,包括出票、改签、航变等等,获取订单行程信息复杂度较高。
例如:用户预订了一个包含了2个乘客的机票订单,该订单发生了航变,其中用户A选择了退票,用户B选择了改签。
业务系统需要获得该订单最新的行程信息以及行程变化轨迹,以进行展示和进一步处理。
上述例子用户的最新行程信息为:
- 乘客1:航班号9C888,SHA-PEK,已退票
- 乘客2:航班号9C999,SHA-PEK,已改签
历史的系统设计需要通过API对各业务子系统的数据进行实时的聚合和计算,如果要获取上述例子的最终行程与轨迹,需要至少调用订单、出票、改期、航变系统等,流程复杂且耗时高,并且针对一些复杂的业务场景还可能导致错匹配、漏匹配等问题。
总结下来有如下几个问题:
- 数据私有(分散),数据模型不统一
- 按照时间线进行聚合的难度大,需要动态计算,耗时长
- 数据存储周期不一致,完整性不高
- 数据分析困难,报表逻辑复杂
二、目标
总的来说,我们需要设计一个用户行程系统来满足以下要求:
- 完整准确的行程信息
信息丰富完整,并保证更新及时、准确 - 使用便利
一站式获取,使用方效率提升,方便使用方快速接入 - 性能可靠
系统性能良好,可靠性高 - 提升业务系统自动化率
提升自动化率,上线灵活 - 快速实现复杂业务流程
对于大量动态数据的分析与过滤需要快速实现并上线
三、实施方案
3.1 设计思路
Q1:系统需要提供什么样的能力?
1)提供准确的用户最新行程信息
用户和相关的业务系统需要及时和方便的获取到完整、准确行程信息
2)输出历史行程变化轨迹
对于退票等场景,需要了解用户完整的行程变化轨迹,以便于自动化处理相关数据
3)通过行程信息进行模糊匹配
对于航变场景,航司通知某个具体航班发生了变化,系统需要通过这些信息匹配到对应的订单并进行后续的处理
Q2:如何确保信息的丰富和准确?
1)在