欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

12306 网站设计可以换个思路:电脑随机抽签模式

程序员文章站 2022-12-09 08:33:14
12306 结合日历时间,推出了“按小时为基准的定时、批量、放票的策略,先到者得”的系统逻辑。 这就导致,所有购票人,都要在抢在某个时间点,比如 10:00:00 , 十几秒内,或者最好在零点几秒内,完成购票操作。 ... “电脑随机抽签模式”的好处在于: 购票人可以不用急急忙忙地购票,... ......

春节快到了,春运也到了,考验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网站的改进出一份力。

 

虽然,我春节不经常回老家,即使回老家,一般也是自驾,较少买火车票。