五千年(敝帚自珍)

主题:参考北京购车摇号方式异步响应解决12306售票体验差 -- 不远攸高

共:💬9 🌺12
全看分页树展 · 主题
家园 参考北京购车摇号方式异步响应解决12306售票体验差

从今年春节还有今年十一,我看到许多关于优化该系统的建议,这些建议基本全部都是基于实时的,可是为什么一定要实时呢?12天后购票人才去乘车,没必要非要赶在购票人点鼠标后的几分钟内告诉他结果。我觉得异步的方式完全可以很完美的解决这种人为非恶意DDOS,可以很平稳很顺利的完成购票。

首先区分一下实时(同步)方式和异步方式。

实时(同步)方式就是提交购票订单->返回购票结果->付款这个过程基本一气呵成,都需要抓紧时间连续操作(付款也必须在45分钟之内完成);异步方式则是不要求连续操作,提交订单后购票人就可以离开电脑,等约定时间系统自动反馈购票成功后再在指定时间段付款。实时(同步)方式典型就是秒杀,奥运购票和北京购车摇号都是典型的异步方式:给一个登录提交申请的时间范围,到指定时间后申请截止,系统根据申请分配名额,通知申请成功的人员付款或办理后续手续。

我的预想:购票申请篇

1、 仍然按照提前12天网络购票的办法,在D+12天7点开始提交购票申请,每个订单最多申请5张票,每个ID申请订单数不限。每个订单提交系统后,系统会审核身份证号码是否已经在该车次重复,如果重复则提醒购票人退回订单或仅仅不提交重复人员信息。身份证号被他人恶意冒用提申请订单造成本人无法申请的,去车站现场解决。购票时就解决身份证重复的问题有助于减少分配车票是重复身份证带来的额外问题,也避免非恶意的DDOS攻击。注意此时仅仅提交申请,不涉及付款。

针对同一个目的地有多个车次的问题,最简单的做法就是针对不同车次提交多个订单,所以订单数不能有限制。

2、 提交订单时间范围可以设置为比如8个小时,则截止时间为15点。该时间范围其实可以设置更长一些,比如24+8小时,但相应的,需要购票人等待的时间就更长。由于每天都卖盘,所以我认为1天作为一个周期是比较合适的。

票数分配篇

15:00,开始进行票数分配。这里需要分配的理论上是12天×每日车次的票,其实由于冷门车票供大于求,没啥可担心的;热门车票其实11天后的也不必考虑,所以重点在当天刚开始出售的车票。由于身份证重复已经被解决,剩下的其实已经比较简单,就是随机分配,当然由于订单内票数从1到5张不等(一个订单内要么全中,要么全不中),比北京购车摇号复杂,跟奥运购票类似。但技术上没有什么难度,针对每一个车次都是循环+随机;各个车次间是可以并行分配的。当前每日人次高峰是600万,车次大概是6000次,3小时应该足够完成运算了。运算完毕还需要存入数据库,发送购票成功短信,提醒购票人员付款。未中签的订单也需要保存相关信息,便于客户查询确认。

付款:

按24小时的周期,虽然申请+分配占用12小时,但可以留给付款的会多于12小时,因为理论上其实只要到下次申请截止时间前付款都没问题。在这样长的时间内完成付款应该绰绰有余,毕竟都是在网上。网站原来的23点到7点关站维护就免了吧,不带这么一直丢人下去的,就是麦当劳都24小时服务呀,这还是计算机哪。由于原来购票的原则是“抢”,对付款时间加以限制是有道理,如今都是定点处理了,其实也不必对付款时间要求太严。

利弊分析

优点:

1、避免了购票“秒杀”带来的短时间高并发冲击。虽然在提交申请的开始和结束阶段、结果公布时间并发肯定也会高,但和当前的并发相比肯定要低的多。

2、由于申请阶段基本没有严重的锁竞争、锁冲突,即使在数据库后端也是最容易并发的插入操作,因此速度可以很快,用户提交申请的体验应该可以比较好。

3、这样避免了人为刷屏造成的非恶意DDOS攻击,即使有人恶意填写海量订单,技术上避免也很容易。由此也大大降低了人为系统压力。

缺点:

1、用户无法实时得到购票结果。提交申请后最长需要12小时才能知道结果,如果购票成功再进行付款操作。对用户耐心比较考验,等待12小时后如果返回结果是没有成功,这种体验和当前形势下没有成功的体验相比较会有什么异同,会做出何种反应,可能需要心理学家,社会学家分析,我们也可以做一个简单投票调查看看效果。我的感觉,对每一个购票者来说,7点开门,7点10分购票成功可能是个非常妙的体验,可以四处夸耀;18点才知道购票成功,好的体验就没有那么强;而8点没有购票成功和18点才知道购票没有成功却是一样差的体验;从这个“朝三暮四”的现代例子来说,改为异步方式确实有些离经叛道,难怪很少有人从这方面推荐

2、原来只需要借助电脑一次,现在需要两次。

由于需求大于供给,总有人会买不到票,总有人会骂。何况有的人就是喜欢发泄,所以指望改进购票技术手段解决挨骂的问题是不可能的,但只要有了大家认可的规则,能够让那些理性的人接受,骂声能够小些就够了

另及:最大的弊病我想了想其实还是又回到了老话题:ZF的公信力。对单个P民来说,这个后台随机分配票数指不定有多少黑幕。虽然我们都知道铁路会预留关系给相关部门,但给计算机加个白名单,想要啥票要啥票,想给谁就给谁,这在技术上也没有难度。这些哪怕公证员天天趴在机房的机柜上面也没用呀,他们还在那里念“经过公证”,又有谁会信呢?尽管如此,但做一点还是好一点,毕竟要相信整个社会是会进步的。

顺便做个投票吧,谢谢!

投票:你觉得12306异步售票方式可不可行

该文是对不远攸高:突然想到的:12306为什么要做成实时?完全可以异步的细化和完善

关键词(Tags): #12306#火车#购票#异步通宝推:铁手,

本帖一共被 3 帖 引用 (帖内工具实现)
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河