您的位置:首页 > 其它

关于12306的一些想法

2014-01-11 17:33 197 查看
随着一年一度春运抢票时刻的来临,“你抢到票了吗?”成了身边不少人交流的口头禅。在抢不到票后,12306网站的脆弱、黄牛的可恶再次成为了口诛笔伐的对象。

最近知乎上和微博上出现了一些为12306叫屈的文章,都是从技术角度来澄清12306的难处,从这些文章的分析角度来看,基本靠谱。受这几篇文章的启发,发表一些个人的想法,关于如何解决12306问题的。

在表达我的想法前,先来看看12306面临的主要问题有哪些:

1)前端页面做得烂,这点没话可说,确实做得不好。但也是最容易改进的地方

2)公平性问题,黄牛这一历史问题并没有随着实名制和网上订票成为历史尘埃,反而与时俱进不断进化,最近更是传言黄牛的刷票工具可在毫秒级的时间内刷到票。果然,在利益面前,没什么困难是克服不了的。

3)后台服务器问题。这也是现在技术上争议点最大的,说好的有说烂的更多。但无论如何,无法满足春运抢票要求是明摆着的事实。

4)全世界最大的抢票人群,具有短时间内集中爆发的需求。

当然,铁路面临的问题绝不止这几个,比如铁路运输能力、调度的合理性等等,但这些问题不是一个网站能解决的,12306能做的只是尽可能好地使用好现有的资源。

再来看看社会上主流的解决解决策略:

1)认为12306技术和人才上不给力,铁路系统应该将网上订票系统外包给国内那些大型互联网公司来做。这类想法一开始很有市场,但时至今日也并未得到实施。主要有两方面的原因:铁路系统没有外包的打算,以及大型互联网公司的业务类型跟12306的差距较大没有现成的解决方案。当然互联网公司在基础设施、技术能力和经验等方面都在12306之上,如果能外包出来解决问题的效果肯定会更好。只是这个如果这么多年也没有成为现实。

2)提高春运时段铁路票价。拥护这类策略的一般都是奉行市场调节能力的一些所谓专家,完全不知道农民工收入几何以及国人春节回家的渴望。

接下来针对问题,分别谈谈我的看法。

问题1,前端设计其实没啥好说的,这是所有问题中最没有挑战性的一项,不打算展开来讲。

问题2。先来看看现在黄牛的手段。

首先看看工具。工欲善其事必先利其器,这两天办公室里有位兄弟一直在刷票,结果昨天吃午饭的时候大家猜知道,这哥们居然不知道有自动刷票工具,居然在手工刷票。现代版的愚公移山啊。我们知道,其实猎豹、360等公司都推出了一些抢票工具,还是蛮好用的基本上快则几秒慢则几十秒就能刷到票,至少前年用的时候是这样。但貌似今年这类抢票工具的威力跟黄牛没法比,黄牛居然可以毫秒级的速度刷火车票。我想,原因无外乎工具上的优势:或者黄牛下血本找人开发了一套针对性更强的抢票工具,甚至黄牛使用的工具涉及到了12306一些内部接口(纯属猜测)。所以,工具上黄牛全面领先。

其次看策略。我们知道,现在的订票系统都是要求实名制的,一张身份证只能订同一时间同一车次的一张票(先撇开无效身份证号码也可订票这一漏洞,因为如果存在该问题应该非常好解决,最简单的注册登记核查制即可解决该漏洞),那么黄牛一次性刷走大量票,无非两个可能性:有人委托黄牛代为刷票,黄牛用他人身份证购票。前一种可能再刷到票后就会发给真正的购票者,而后一种可能,事实上是黄牛在制造票务稀缺的恐慌。由于12306存在订票后45分钟内付款的规则,黄牛完全可在45分钟之内释放掉火车票并重新刷回来,周而复始让真正需要买票的人根本买不到票。最后只能去找黄牛订票。

所以要解决黄牛的问题,必须技术和策略双管其下。首先工具方面,刷票工具的出现,最根本的原因是大规模接入时服务器端的不给力。因此12306后台服务器能力的提升是解决这一问题的前提。而刷票工具本身则是造成不公平的技术原因,\毕竟还有大量的农民工人群不会使用这类工具,因此有必要禁止刷票工具的继续存在及蔓延。对于广大以用户为中心的互联网公司推出的免费抢票工具,可以让政府出面限其撤销这一类工具的研发及维护,先做到互联网工具熟练者人群和不熟练者人群间的公平。而对于黑暗系刷票工具的持有者黄牛,这也是最重要的一环,则是要阻止黄牛垄断票源的行为,45分钟内刷票+释放+继续刷票的行为一定要遏制住。12306可以给每个身份证ID设计一个购票权重值,每取消一次权重值下降一点,但权重值少于一定的阈值之后则短期内无法再用此身份证在12306上订票;假设以3次取消权重值后即少于阈值为例,一个身份证号黄牛最多可以使用135分钟,在此前提下黄牛要垄断票源就需要找更多的身份证来刷票,显然成本会更高。而考虑到短期内无法使用12306订票,估计愿意出售身份证给黄牛的人也会多一层顾虑。为进一步削弱黄牛的刷票能力以及提高刷票成本,非常时期可以考虑调整时间数据及阈值数据,如春运时间段可以将付费时间从45分钟下降为20分钟,取消次数则直接下降为一次。为免伤及无辜,退票通道继续保留,但必须是现场窗口方可退票,退票后可恢复权重值。如此一来黄牛刷票难度和成本将大大提高。可极大地打击黄牛的积极性;最难解决的是,主动找黄牛订票的人。黄牛手握黑暗系刷票工具,部分有需求的人的确会找黄牛订票。除非技术上能限制住所有刷票工具,否则在僧多粥少的前提下,这部分愿意出钱买黄牛票的需求是无法纳入到系统中来管理的。

问题3和4,其实是一个问题。春运抢火车票的数据行为是比较特殊的。以一列从上海到深圳的T201为例来说明。从上海到深圳,途径海盐、杭州、义乌、金华、衢州、上饶、。。。。广州、惠州、深圳,总计12站(估计,可能有误,但不影响问题的说明)。这一列车的车票,除了需要考虑软卧、硬卧、硬座、无座四个类型之外,还需要根据站点来分类型;上海到海盐算一类,上海到杭州算一类,上海到义乌算一类。。。以此类推,这个车次的车票类型有12+11+10+9....+2+1
= 78类,在加上四种坐席类型,总计78*4 = 312类。当乘客购买上海到海盐的票一张之后,需要更新的数据不仅仅是上海到海盐这一类票的数据,还需要更新上海到杭州,上海到义乌。。。所有相关类型的数据。因此,12306的业务类型决定了,服务器在响应每一次订票服务的过程中,需要处理的数据量和任务是相当庞大的,远比淘宝京东上买一件东西来的复杂,因为这里涉及到了数据相关性的问题。淘宝上没购买一件商品,就对应一个入口按钮,购买完这件商品后也不需要更新其他商品的库存数据。而12306没完成某一商品的购买后,除了需要更新这一类商品的数据之外,还需要更新其他商品的数据,而数据更新则意味着大量的数据互斥操作。在这一前提下,分布式的处理架构也会显得无能为力。当然,这里描述的是最恶劣的场景,铁路系统事实上对票的数据是做了事先的预分频的,目前的规则从个人购票经验来看是,给热门线路多分点,给冷门线路少分点,给长途多分点,给短途多分点,比如上海到杭州多分配点,上海到深圳也多分配点,从义乌到上饶少分点,从广州到惠州少分点,大致如此。这一规则虽然是预先静态设定的,但是当出现购票分配不均衡的时候,则会动态地进行一定程度的微调。

通过上述的分析,可以得知,目前互联网公司并没有现成的可用于12306业务模型的解决方案。先撇开系统层次设计上的优化,扩大物理服务器的能力是最直接最有效的手段方法。但是问题也是显然的:首先成本较高,其次12306在春运过后一年中大多数时候并不需要这么强的处理能力,庞大的服务器意味着浪费。而我的想法是,12306不凡换个角度来看这一问题:似乎否有可能转型兼做做云基础设施服务商?亚马逊早期做AWS,其实就是为了把多余的服务器能力转化为盈利能力,而亚马逊的多余服务器其实就是为了应付黑色星期五的购物压力而采购的。亚马逊当年的处境跟12306其实是类似的。因此,采购大量的服务器来解决订票问题,并兼做云服务个人认为技术上是靠谱的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: