1. 缘起
12306很卡,尤其是12点放票的时候,我安排了7个手下的小弟,帮我小姨子抢票,对不起,没抢着,而且网站卡的一B碉糙(不懂的百度)。
听说这个网站建设花了好几个亿,好几个亿就做成这个样子,想起李云龙的话,当年老子教他打枪,今天教他打仗。周围一堆搞技术的兄弟,实在忍不住,简单分析了一下12306网站。
2. 压力数据
考虑一个数据:
1. 中国有列车对数1551对。
2. 考虑每一列车座位数1000座位,则 每天共有1551*2*1000 = 3,102,000,计310万票要售出。
但是对于这310万张票,有多少人来抢呢?保守估计1个亿吧,而且这1个亿很有可能是在中午12点放票时一拥而至。
3. 应对方式
我们先来看电商网站的用户方式:
用户浏览、查询—用户在线下单—下单成功—支付—售后。
NM,12306也是一样的:
用户浏览、查询—用户在线下单—下单成功—支付—售后。
好吧,我们能找到问题的关键了,要抢的人太多了。1亿人抢310万,不对,有同事讲了:怎么能这么实诚了,不给内部操作空间呢?你让12306网站怎么看,你让黄牛怎么看?你让官员怎么看?OK,打住,我错了,是1亿人同时抢100万张票,不要问我其它210万去哪儿,那是湖南电视台的事。
一亿用户同时上线来抢,这确实是个问题。这世界上很多国家是没有一亿人口的,就是我们旁边的印度鬼子,人家估计也不会像我们一样有个春运哈。
向淘宝学习?人家双十一也是不少用户呀,但会不会有1亿用户同时抢进来,应该还没有,买衣服不至于到了有你的就没我的情况。而且双十一也不是只持续十分钟对不?
向微信学习,人家日均活跃进用户一个亿,既然是日均一个亿,估计也不会1亿用户同时抢进来,应该还没有。
看来一亿用户的冲击量是个大问题,解决这个问题,是需要几个亿人民币的,不建Google那样的机房,甚至不埋在冰天雪地里,都不作数。12306、合作方的脸上、评审专家的脸上都开始有了喜色与红光。
4. 思维转变
不对!
为什么12306要向电商网站看齐呢?你是一根筋呀?
电商网站与买火车票的为什么要一样?
有什么不一样吗?
买火车票是刚需。刚需,你懂的。12306不用做宣传,不用做CPC、EDM,不用做降价,不用搞团抢秒,不用做铺天盖地的双十一宣传,一定有人来的。没办法,我们就不说国情了哈。
你不用搞团、抢、秒的网站为什么要学电商团抢秒的方式呢?难道是想在alexa上看流量排名?
解决问题的根源在于不能让1亿人同时冲击,那怎么办?
银行与医院为我们提供了很好的例子,银行老早时是要排队的,大阳晒,站得累,队伍挤,大家烦燥的一米,大娘内急了还得给身后的小伙了讲“帅仔,大娘去个厕所,中不?”。现在稍好一点,进门先拿张票,有编号,然后坐一边等着。
这是一个思路,一个很好的思路,详细说:
1. 把抢与购票支付分开。
2. 在抢这个动作上,要简单化。一方面是用户操作要流畅,不卡就不会有焦燥情绪。另一方面,简单能快速响应用户抢。
解决抢就解决了一切。
5. 解决抢的问题
考虑短信,嗯,短信是一个不错的机制。
业务需求:小明在外打工,春节要回家,需要乘腊月25的火车。
考虑解决方案:
25日的火车票,15日开始订票,在13日前接受短信订票。
考虑场景,
1. 小明拿起手机,在5日前提前20天向12306发送短信:身份证号、起点、终点、车次范围、座位情况,期望乘车时间范围,
2. 小明马上收到回信:已收到你的订票申请,我们将允许开始订票前通知你订票号。
3. 好几百万或上千万短信,通过运营商网关发送到12306。但相同车次、相同日期的短信估计在几万的量之内。如果每天接收一千万条短信有问题我们后面再说。
3. 两天时间,12306把收到的短信与座位资源匹配,然后下发给用户,行不?短信内容:你的购票号:12345678,请你在5日—10日内到12306完成购票,逾期作废。
没收到短信的呢,当然要么轮入下一轮了。
那怎么计算把票分给谁呢?好像不能按先后顺序的吧。那就摇号呀,反正总是有人没有买着的,只要你制定的规则对所有人都是公平的,那就没问题,当然这是12306内部的事,还有那么多专家呢。
至于其它方案,我还是收起我对12306强烈不满的心,做自己的事吧。
6. 短信的问题
其实这不是问题,多搞几个号不行了?再不行按铁路局分呗。从北京发的是xxx,从上海发的是xxx。
短信还有一个功能,能清楚反馈至少90%以上的用户需求是不?考虑调度时可以参考多安排几趟火车吧。
7. 核算性能
好吧,解决310万人的问题要比解决1亿用户抢进来的问题轻松多了。如果这张票已经属于我了,今天付钱、明天付钱,一天是上午付还是下午付就不急了。这句话搞技术的一听就懂了,流量会比较平均,不会也现大的冲击。
至于短信,只要提前发就可以,反正你抢了也没用,也不会出现冲击点。
那就还剩另外一个问题,对于嗷嗷待哺的数百万购票申请分票的性能。好吧,我手下一个刚毕业2年多的小伙儿前几天做了一个工作,要从近千万订单数据中跑出满足一定标准的有价值用户,尽管他做的比较差,但他的程序在PC机上跑了一个晚上后,数据还真出来了。
8. 算投资
不知道该多少钱了,赶脚不用几个亿吧。毕竟解决几百万条短信接入与解决日均用户三百多万次购买还不是太大问题哈。
9. 其它
这算帮省钱么?听说他们的CEO都因为没钱跳楼了。
旁边有人发话了:你这个方案让鸡怎么看?让鸭怎么看?刘二家的狗又怎么看。是呀,你能想到,别人也会想到哈,肯定有很多不足道的原因呗。
好吧,思维很重要,面对马奇诺防线的问题,可能只需要你思维绕一下就可以了。
注:买不了票,就玩玩票,这是对12306的分析文章之一,另见:12306,从小宝到农民工的命。http://www.lieyunwang.com/archives/30855
转载请注明: @互联网aaren(新浪微博),aaren@yeah.net(您懂的)