首页 > 业内资讯 > 浅谈 12306 核心模型设计思路和架构设计

浅谈 12306 核心模型设计思路和架构设计

时间:2016-02-22 | 来源:developerWorks | 阅读:123

话题: developerWorks


为了方便后面的讨论,我们先明确一下票是什么?


一张票的核心信息包括:出发时间、出发地、目的地、车次、座位号。持有票的人就拥有了一个凭证,该凭证表示持有它的人可以坐某个车次的某个座位号,从某地到某地。所以,一张票,对用户来说是一个凭证,对铁道部来说是一个承诺;那对系统来说是什么呢?不知道。这就是我们要分析业务,领域建模的原因,我们再继续思考吧。


明白了票的核心信息后,我们再看看G71这个车次的高铁,可以卖多少张票?


讨论前先说明一下,一辆火车的物理座位数(站票也可以看成是一种座位,因为站票也有数量配额)不等于可用的最大配合。所有的物理座位不可能都通过12306网站来销售,而是只会销售一部分,比如40%。其余的还是会通过线下的方式销售。不仅如此,可能有些站点上车的人会比较多,有些比较少,所以我们还会给不同的区间配置不同的限额。比如D31北京南至上海共有765张,北京南有260张,杨柳青有80张,泰安有76张。如果杨柳青的80张票售完就会显示无票,就算其他站有票也会显示无票的。每个车次肯定会有各种座位的配额和限额的配置的,这种配置我目前无法预料,但我已经把这些规则都封装近车次聚合根里了,所有的配置策略都是基于座位类型、站点、区间配置的。关于票的配置抽象出来,我觉得主要有3种:1)某个区段最多允许出多少张;2)某个区段最少允许出多少张;3)某个站点上车的最多多少张;当用户订票时,把用户指定的区段和这3种配置条件进行比较,3个条件都满足,则可以出票。不满足,则认为无票了。下面举个例子:


ABCDEFG,这是所有站点。座位总配额是100,假设B站点上车,E站下车的人比较少,那我们就可以设定BE这个区段最多只能出10张票。所以,只要是用户的订票是在这个区段内的,就最多出10张。再比如,一列车次,总共100个座位配额,希望全程票最少满足80张,那我们只要给AG这个区段设定最少80张。那任何订票请求,如果是子区间的,就不能超过100-80,即20张。这两种条件必须同时满足,才允许出票。

12306抢票助手V6.1

TOP

软件

65
12306抢票助手运营中
能够帮助你抢到回家车票的神器
15.77 MB  12.19  赞(592)
安全无广告  需网络
推荐

最新好玩手游

更多

手游风云榜

更多

资讯阅读

更多


湘ICP备2022002427号-10 湘公网安备:43070202000427号
© 2013~2024 haote.com 好特网