如果是说技术角度,给淘宝做是不是会比目前的12036更好,答案是肯定的。目前赞同最多的答案对于购票难的分析是中肯的,但是前半段所谓12306不能通过布署大量服务器来分散压力提高负载则不敢苟同。
首先,每一个火车车次之间是完全不关联的,每一个车次的购票事务都可以分配到不同的物理服务器,或者说处理器核心上去处理,这就是最简单的分布式方案了。考虑到春运期间每一班火车可能同时都有几十万人甚至几百万人去抢,对于热门车次还可以进一步拆分,比如硬卧车厢的车票和硬座车厢的车票就可以分开来,同理动车和高铁的一等座,二等座也可以分开来。到了这一步,就很难再拆分下去了,一个车次的同一席别的座位,很难再分布到不同的处理器核心上去了,但我们还可以把余票查询事务再拆分出来,同时余票查询因为不涉及到数据的写入,也不需要一致性的强保证,这个事务完全可以通过缓存的方式分散到数个数十个乃至数百个处理器核心上去处理。
所以,在我看来,在目前的硬件条件下,技术上要提高12306的负载到满足春运购票需求是没有什么问题的。但是要做到这样可能会面临其他的问题,比如这样的系统造价高昂,却只有春运这一个月用得上,存在巨大的浪费;又比如这样的系统可能和铁路的旧有系统不兼容,对旧有系统的升级和改造又是一项巨大的工程;再比如铁路局没这么多资金做这个系统(不要笑,铁路现在很穷的)。
1、供需问题,归根结底是发展不平衡。这个说法没错,但是没有讨论的价值。现在中国好多问题说到底都和地区发展不平衡、资源分配不平衡有关,高考问题、房价问题、户籍问题等等。具体到12306这个问题上,需求大于供给这种理由,虽然是事实,但听起来很像在敷衍。因为我看即使买到票的人都在骂这个网站烂。
2、12306遇到的问题是世界级难题,单节点计算能力有瓶颈,几乎无解。我看了作者的回答,以及作者和大家的讨论,发现12306这件事确实没有以前想的那么简单。昨天就看到帖子了,昨天今天在路上也都一直在想,我觉得也没有作者说的那么复杂。--虽然在线售火车票和淘宝卖东西不太一样,但最终都是商品售卖,都是下单和库存管理。作者说12306卖票比淘宝卖商品要复杂很多,我看也不见得。淘宝在下单的时候,也有很复杂的情况,比如套餐组合折扣、红包、店铺红包、各种积分抵扣、优惠券抵扣,而12306的订单信息就简单的多,从处理订单的复杂程度来看,淘宝更甚。
当然这都是下单后的业务,要说下单这个过程,12306看起来要复杂一些,但其实并不一定。由于每列车之间的售票是没有关联的,所以可以单就一列车票的售卖来说明。假设一列车全程有20个站,那最终所有可买的组合是C20,当然也要考虑下单量和下单频率。
1.先说结论。12306外包给阿里巴巴和IBM都是不可行的。
2.许多人拿淘宝双11说话。别的都不扯,只说系统需求。用最外行的视角来揣测,淘宝双11最大的难点在于支付宝,当然这是我自己揣摩的。淘宝的商品数据更接近分布式仓储仿真,而12306的数据关联性要大的多。
3.客票库不只有12306访问,还有全路过万的车站售票窗口和过万的代售点,以及电话订票系统。因为客观原因,既有的票据库是分布式的,采用的票额计划制。简单来说,北京到广州的车,分给保定站多少张车票就是多少张,分给石家庄站多少张就是多少张,不能实现复用(复用就是北京到广州的车,有旅客购买了北京到郑州段,郑州到广州站生成一张新的车票)。
4.即便是现在,也不可能放弃计划式票务管理。运力紧张是客观存在的,不同地域铁路发展水平是千差万别的。这也是为什么北京到上海的车票好买,但北京到某些西部地区的票很抢手,而春运期间后者的需求是矛盾的根本。





