logo
Published on

12306的业务复杂性

Authors

---Generated by ChatGPT

12306购票系统的业务复杂性体现在多个层面,包括票务规则的复杂性、用户需求的多样性、不同业务流程的集成以及跨多个系统之间的数据同步。下面我将详细介绍12306业务的复杂性及其背后的挑战。

1. 车票种类与价格规则复杂性

12306售卖的车票种类繁多,且价格计算规则不同,以下是其主要复杂之处:

车票种类多样

  • 不同列车类型:包括普通列车、高铁、动车组等,不同列车类型的座位等级和票价体系各异。例如:

    • 普通列车有硬座、硬卧、软卧。
    • 高铁有二等座、一等座、商务座等。
  • 特殊票种:学生票、军人票、儿童票、老年人票等,这些票种的价格存在优惠政策,且可能受特定条件限制。例如学生票通常有优惠,但仅限特定时间段使用。

  • 往返票、联程票:有些用户需要购买联程票或往返票,系统需要处理连续车次的座位协调,并确保不同车次之间的票价正确计算。

复杂的票价计算规则

  • 动态定价:某些高铁车票的价格随着购买时间、票务需求等因素会动态调整。尤其是在高峰期和节假日,票价可能会波动,12306需要实时调整和展示这些价格变化。

  • 分区计价:普通列车和部分动车是按乘坐的里程数进行分区计价的,而不同区间可能有不同的票价规则。例如,跨越多个铁路局的车次,可能涉及多个区域的定价策略。

  • 站点影响:不同起始站和终点站的选择,会导致不同的票价。例如,起点与终点越靠近中心站,票价可能越高。因此,系统在票价计算时需要考虑乘客的上车站和下车站位置。

2. 购票时间限制和座位分配复杂性

预售期规则

不同列车有不同的预售时间,例如高铁票和普通列车票的预售期通常不一样。此外,系统要根据不同地区、线路、时间段来确定预售期的起止时间,特别是在春运等高峰期间,预售期的提前开放会带来极大的流量压力。

座位分配规则

  • 座位优选:用户通常希望选择靠窗或靠走廊的座位,甚至是特定区域的座位。12306需要根据用户的偏好、已有的售票情况和剩余座位动态分配座位。这就涉及到座位的实时管理和优化算法的应用。

  • 分段售票:一个车次在中途多个站点都有乘客上车和下车,这种分段的售票策略会影响到系统的座位分配。系统需要动态调整每段车程的余票,并合理分配剩余座位,避免出现因分段售票而浪费座位资源的情况。

  • 连座和散座处理:特别是在团体购票或家庭购票的情况下,用户可能希望连座。如果没有足够的连座票,系统需要提供分散座位的选项,并提示用户。

3. 退票与改签业务复杂性

不同规则下的退票与改签

  • 退票费率动态调整:退票规则非常复杂,不同时间段退票费用不同。通常,根据距离发车时间的长短,退票手续费可能会有不同的收费标准。例如:
    • 开车前15天退票免费。
    • 距发车不足24小时时,退票费高达票价的20%。

12306系统需要根据当前时间动态计算用户的退票费用。

  • 改签限制:改签有诸多规则限制。例如,车票只能改签为相同等级或更高级别的车次。此外,改签必须在有余票的前提下进行,系统要在保持座位分配逻辑的同时,处理复杂的改签请求。

  • 多次改签或退票影响:同一用户多次退票或改签可能会触发特殊处理规则,系统需要对高频退票用户进行标记,防止黄牛党通过大量退票、改签来恶意占用车票资源。

4. 特殊业务处理

异地售票与异地取票

  • 用户可以通过12306在线购票,但选择在其他城市的火车站取票或售票窗口取票,这涉及到12306系统与全国各地铁路售票点、取票设备的实时对接和数据同步。

学生票业务

  • 学生票有专门的优惠政策,并且每个学生每年有一定数量的优惠次数。12306需要与教育系统对接,实时验证学生身份和资格,并确保优惠次数的准确计算。

团体票预订

  • 团体票的预订规则与普通票不同,需要在特定时间段内通过铁路局的专门申请渠道操作。系统必须处理大规模的团体票预订请求,并确保在分配座位时优先满足团体用户的连座需求。

5. 购票渠道多样化

线上线下整合

12306不仅支持线上购票,还要整合各类线下渠道,如火车站售票窗口、自动售票机、代售点等。线上、线下票务信息需要实时同步,保证无论用户从哪个渠道购票,系统中的余票信息都是一致的。

多种支付方式

  • 用户可以通过不同的支付方式完成支付,包括支付宝、微信支付、银行卡、银联等。12306必须集成各种支付渠道,处理不同支付方式的延迟、失败、退款等情况。

第三方服务集成

  • 12306还集成了一些第三方服务,如保险购买、酒店预订等。这些额外业务在购票过程中穿插,为系统增加了业务复杂度,涉及到与不同供应商之间的接口管理、数据传递和订单同步。

6. 多系统集成与跨部门协作

铁路局与12306的协作

12306购票系统不仅仅是一个独立的售票系统,它需要与全国各地的铁路局、车次调度系统、车站安检系统等多个子系统进行深度集成。不同地区的铁路局可能使用不同的内部系统,12306需要协调这些系统的数据同步和集成。

与公安系统对接

在购票时,12306需要验证用户的身份信息,因此系统必须与公安系统对接,确保身份证号、姓名等信息的准确性。同时,实名制购票要求系统对每张票进行严格的身份审查,防止信息造假。

与运营商及其他政府机构对接

为了防范黄牛及恶意刷票,12306还需要与运营商合作进行设备识别和短信验证,同时与其他政府机构(如市场监管部门)配合,防止票务欺诈和市场扰乱行为。

7. 节假日与高峰期的业务特殊性

春运、国庆等特殊时期

每年春运、国庆等假期,数亿人次的购票需求会在短时间内集中爆发。系统需要特别处理高峰期的流量,包括预先分配票务资源、设置购票限额、引入排队机制等。此外,为了保证购票公平性,12306还需要动态调整防黄牛策略,在用户体验与安全防护之间找到平衡点。

8. 数据同步与系统容错机制

12306必须实时同步全国各地的车次和余票数据,一旦出现网络故障、服务器崩溃或其他系统问题,会直接影响到购票的成功率和用户体验。为此,系统需要具备强大的容错和数据恢复能力,在出现故障时能够迅速恢复,并确保用户数据不丢失。


总结

12306购票系统的业务复杂性,远远超过表面上的“买票”这一简单操作。它要处理庞大的业务规则、复杂的票价和座位分配逻辑,同时集成多个政府系统和第三方服务,在面对超高并发流量时依然能够保证系统的稳定和公平。业务复杂性不仅体现在票务售卖,还涵盖了多种用户需求、多渠道购票、动态价格调整、改签退票处理、实名验证以及防黄牛机制等多个方面。

关于我

国 wei (Eric) Github

扫码加入独立开发微信群-二维码经常更新

关注公众号 开发副业,闲谈代码人生