中原之星 发表于 2012-9-20 12:10:55

一年后的12306(简要分析)

一年前,12306“迅速”推出了网络购票平台,在经历了拥挤的春运之后,大家逐渐接受了这个东西,对12306不满意的反馈越来越少,时值运行一年之际,系统进行了一次大的升级,等来的不是说好的选座位系统,而是一个对于网络购票群体来说非常麻烦的排队系统。昨晚及今晨,恰逢本人需要订购近期和十一期间的火车票,所以体验了一把这个排队系统,后又对排队系统的前端代码进行了研究。

先说一下系统是怎么回事,看图

该图是根据各种媒体的描述和信息,以及本人的专业知识,绘制的。左侧是网络订票系统(12306),下侧是电话订票系统(95105105),网关(防火墙)后侧则是真正的售票系统。当然还有传统途径的售票系统,应该是直接接入总后台,而电话系统,是否也通过网关接入总后台,不好说,或者是另外一个网关接入总后台,这个无关紧要。

先说网络系统。春运的时候一直拥挤,根据系统结构图,目测是因为网络系统本身的前端容量受限,以及通往网关的容量有限导致的。前端容量,可以通过提到网页代码质量,提高网站入口带宽解决,但总体来说,治标不治本,因为所有数据都要通过网关与总后台进行交互。所以春运之中、之后,上网站没问题(前台容量增大),但到关键时刻(如查票、订票)还有困难(网关仍有限制),此后的平日,由于订票需求不大,因此日常订票基本无障碍。所以这一次升级就容易理解了,引入排队机制,解决网关的拥挤。

另外再说这个排队系统,本人研究了前台的代码,情况是这样的:前台有一个关键值,和一个辅助值,关键值是进行倒计时之用,在本地计算(因此可以本地修改),而辅助值则是定期通过网络调用服务器数据并修正关键值。于是整个系统可见是双端维护倒计时,因此即便修改了本地值,也无法解决远端的倒计时问题。然后倒计时完毕之后,本地页面的动作是刷新本页,这个最关键,因为一旦所有数据来自服务器,那将意味着本地无可作为,只能无限制地刷——这就又回到了前段系统容量的问题。

btw,发帖此刻本人仍无法打开12306的所有功能,就是因为前段页面容量有问题。以上说的是页面问题,然后说排队本身。前边说了网关容量问题,以前是拥挤,所以为了解决拥挤,就只能排队。刚才也说到了服务器端也维护了一套排队倒计时功能。根据昨天和今天的订票经验(昨天19人排队30+分,今天16人排队5分钟以内),个人推断目前新闻所说的“只有在热门车次热门时刻才会激活排队”这个说法不成立,也就是说这个排队很有可能是个总排队,至于倒计时的计算,应该与网关的容量和排队人数综合计算出来的(因为没有相关数据,所以本人无法进行判断这个计算是否合理),但有个问题,人的时间维度一般最低到秒级,而计算机系统的时间维度最低是到毫秒级的,那么个人认为出现30+分钟的排队,时间系统设计得有一些消极了,系统再差、网络再挤,也不可能一秒钟才处理一个订单,更何况以前还没有排队系统。

然后就是这个排队系统的推出时间,此正值十一前夕,而且万年难遇的中秋十一又蹦在了一起,这正是一个最佳的验证用例,所以9月15日,流程麻烦的排队系统上线了。那么我想,经过十一的检验与反馈,在接下来的两三个月内逐步修正问题,春运的时候就能妥妥地虐你不商量。

以上是对网络系统的分析外加吐槽,最后说一下电话系统。本次升级,最有意思的就是电话系统比网络系统好用了(昨晚和今晨两次订票,电话系统均一次成功,今晨还是放票的关键时刻),那么也说明了电话系统跟网络系统彼此独立,而且刚才去代售点取票,也佐证了这一点。由于彼此独立(估计开发维护团队也是彼此独立),网络上了排队系统,电话则没有上(而且个人估计客观也不具备条件上,总不能让人拿着电话等30分钟吧,电话费谁给报销?!),但电话系统也有一个先天优势,在于总容量,不同于网络系统——大家一起挤,因为HTTP网络协议的无状态性,即便挤进去了,也未必能持续地互动——电话系统是有状态的,挤进去了就一切顺畅,挤不进去就接着挤,这也算是另外一种排队,把问题前移了吧。还有另外一个有意思的事情,这属于上层总系统构架的问题,我们知道原则是当日当次一个证件只能出一张票,但是神奇的电话系统和网络系统居然能够并行,实现当日当次单证购两张票,所以只能说,首先总后台没有验证这个事情,其次两个系统各自为政,另外如果从购票系统直接购票,估计会有所验证(这个没有证实,我期待着三个系统能出三张票)


Ganymede 发表于 2012-9-20 14:18:49

对12306已近失去信心了

中原之星 发表于 2012-9-20 14:47:09

Ganymede 发表于 2012-9-20 14:18 static/image/common/back.gif
对12306已近失去信心了
刷北京西的票还是没问题的,8点放票,系统整体不拥挤,只是网关略拥挤
刷北京站的就不行了,10点放票,网站开始拥挤

Ganymede 发表于 2012-9-20 16:27:17

中原之星 发表于 2012-9-20 14:47 static/image/common/back.gif
刷北京西的票还是没问题的,8点放票,系统整体不拥挤,只是网关略拥挤
刷北京站的就不行了,10点放票,网 ...
一直觉得我们院子对面和平里北街的代售点刷北京站的票很快,西站的票我很少买

lhfzzx 发表于 2012-9-20 17:03:58

今天早上抱着试一试的态度,在12306上耍了一下10月1日的Z17,并没有排队,当时就给结果了。第一次是说余票不足,然后又订了一次,第二次订到了。两次都没有要我排队。但是后面10点的时候就开始排队了。

幻影坦克 发表于 2012-9-20 17:24:35

技术贴啊!

huxy5219 发表于 2012-9-20 20:04:51

顶资深车迷有相当网络水平的技术贴,佩服!

巴山流云 发表于 2012-9-20 20:46:05

说得有道理,这段时间网络订票难啊!

simcity4000 发表于 2012-9-20 20:56:53

我買 30/9 Z12票而家都要等超過30分鐘

济南包包 发表于 2012-9-22 18:47:17

楼主写得不错,现在的排队系统非常坑人,热点线路的排半小时,然后票就没了

jayjiang 发表于 2012-9-22 22:34:00

技术分析的很到位。。。

wljh2211 发表于 2012-9-23 07:21:50

楼主写得不错,现在的排队系统非常坑人,热点线路的排半小时,然后票就没了,技术分析的很到位。。。

lxox 发表于 2012-9-27 10:12:49

楼主分析的很不错,我现在是觉得电话订票很好用,只是在刚刚开始放票的时候有点难打通,坚持一会就好了。不过相比于网络购票,电话太厚道了。。。

nflove 发表于 2012-9-27 15:04:24

感谢楼主发帖辛苦

liutom701031 发表于 2012-10-8 09:38:59

原来电话打不通,你自己不停重播就不算排队
进了网络,人家给你排个队就不能接受了?

Z67/68 发表于 2012-10-8 12:53:58

我想说的是,假设现在某热门车次,5分钟卖完,如果系统能力提高10倍,30秒卖完,网上会怎么骂?tdb把票放到哪里去了,怎么这么快就没了?

chenyu10cn 发表于 2012-10-12 10:13:28

后台售票系统的处理能力只有那么大,首先要保证售票大厅和代售点,能够压缩的只有网络售票
可以的话将客专上的DCG剥离出来纳入另一个售票系统里面,应该能够解决不少问题
页: [1]
查看完整版本: 一年后的12306(简要分析)