12306 网站设计可以换个思路:电脑随机抽签模式
春节快到了,春运也到了,考验12306的时候也到了。
看了网上的各种分析,说是12306这种业务,技术上很难应付,如何如何。我很不以为然。
12306的业务,是有其特殊性,但并非技术上不好处理。
首先,12306 网站将买火车票的模式,分成了平常模式、春运模式,这也得到官方及民众的认可,属于业务清晰、不含糊。
这在很多乙方软件公司的角度来看,属于低难度模式的业务。
乙方软件公司怕就怕甲方的业务,甲方自己说个半年都说不出所以然来。
其次,平常模式下,12306 的卖票,并未有什么难点。
难点在于,春运模式下,12306网站难以应付短时间的大访问量、大业务量。但这是可以解决的。
短时间的大访问量、大业务量,问题根源在于:
12306 结合日历时间,推出了“按小时为基准的定时、批量、放票的策略,先到者得”的系统逻辑。
这就导致,所有购票人,都要在抢在某个时间点,比如 10:00:00 , 十几秒内,或者最好在零点几秒内,完成购票操作。否则,落后其他人的手速、网速,就买不到票了。
这种“按小时为基准的定时、批量、放票的策略,先到者得”,不是业务,而只是一个软件设计思路,且是不好的设计思路。
让所有购票人,比拼手速、网速。这有点歧视功能障碍者的意味吧?
其实,针对这种买票人多、卖的票数少的业务模式,更好的办法是:
安排购票时间窗口(比如 10:00-11:00), 购票人通过某种方式提交购票意向(手机app、电脑访问12306网站、火车站购票窗口、各火车票代销网点窗口);
卖票系统定期(比如 11:01 - 11:30)进行售票匹配运算,将哪些人买哪些票的信息,以“电脑随机抽签模式”,运算出来;
然后以短信/app信息通知到购票人,让其在30分钟内(11:30-12:00)完成购票支付。
未完成支付的,视为放弃,所分配的火车票,进入下一轮购票周期。
以上 10:00 - 12:00 ,共两个小时,为一轮购票周期,留给电脑 29 分钟运算时间,应该够了,不够也可以调整的。
12:00 - 14:00,进入下一轮购票周期。如此类推。
以上模式下,购票时间窗口(比如 10:00-11:00)里,购票人无需挤在某个时间点的十几秒内,大家一起操作。因为新的软件系统设计思路下,能不能购票,不在于操作的先后,只要在购票时间窗口里完成操作,剩下的就等运气了(电脑随机抽签)。
对于购票者而言,公平性还是一样的。
“电脑随机抽签模式”的好处在于:
购票人可以不用急急忙忙地购票,可以心平气和地拿着手机、电脑鼠标,进行购买操作;
12306系统也不用在十几秒内里接受、处理的大量购票操作;
如有关方面看到这篇文章,要求我参与12306网站的建设,我愿意对12306网站的改进出一份力。
虽然,我春节不经常回老家,即使回老家,一般也是自驾,较少买火车票。